Optimizing Logic to Use Multiple Cores
April 9, 2013
Pretty much every Mac developed since the jump to Intel processors has at least dual core capability, if not more, especially looking at the Mac Pro towers with 8 cores. A “core” can be considered to be an individual CPU, although it may not be one physical component of a computer. While a dual core processor, like the Intel Core 2 Duo, will be one “unit” on the motherboard, it can separate computational tasks in two regions. Each of these regions can run their own set of computations, so they work effectively as two processors.
Logic does have the potential to to use all of these cores in a balanced fashion so you can optimize your workflow. Here is a quick down and dirty guide on how to make that happen.
Logic breaks tasks down into threads that can be assigned to a single core for execution. While it’s not possible to split a single thread across multiple cores, a single core may run multiple threads at the same time. This is one reason that you may sometimes see uneven load distributions across the available cores on your computer. If one thread is very processor-intensive, the core running that thread may show much more activity than the cores running less demanding tasks. This is the main reason that you may get “Core Audio Overload” warning messages even though some of the cores on your system may not show significant activity.
To monitor Logic as it uses the cores on your system, double-click the CPU meter in the Transport area.
This will bring up a floating window, showing meters for individual activity within each core.
The same concept applies to channel strips as well. Each channel strip—and all plug-ins it contains—will be processed by one core. If you are using many processor-intensive plug-ins on a single channel strip, the core running it may show heavier activity. This is especially true if you are working at higher sample rates (88.2 kHz+).
Redistributing core loads
If you find that a single core has much higher activity, use these strategies to redistribute the load.
In the example below, there is a single Software Instrument channel strip with plug-ins routed directly to Output 1-2. The channel strip for Output 1-2 has a large number of plug-ins.
In this example we can see activity on two cores. The left meter is handling the software instrument and plug-ins on the Inst 1 track, while the right (or second) meter is processing the Output 1-2 channel strip, with even more plug-ins. You can use the routing capabilities of Logic to distribute the processor load more evenly, to more cores, without changing the sound.
Here you can see we added two Aux tracks, and split the 8 plug-ins from the previous Output 1-2 channel strip and divided them evenly. By routing the output of our Inst 1 track to Bus 1, we run it through the first four plug-ins on the Aux 1 track. Then we route the Aux 1 output to bus 2, effectively sending it to the second four plug-ins on the Aux 2 track.
We have now effectively distributed an equal load across three processor cores, and this provides us with the same audio sound and effect, but without strangling one of the cores to death.
You can read more about this technique here.