When teaching about the use of Max/Msp for supporting modeling and simulation
material, I find myself trying to inform students as to what hardware and software
are used for specific operations. In reading the list for a couple of months now,
I have some ideas, but the ideas may require correction. If anyone knows whether these
assumptions are correct, let me know. Clarifications are welcome.
1. For event handling (the Max mode of operation with its event scheduling), speed can be enhanced
with multiple-cores as threads can be allocated to cores. Having more cores, means that event
scheduling speed can be enhanced. Event handling seems the least concern when contrasted with
digital audio and video complexity and a need for speed optimizations. When other languages
are used (Javascript, Lua, Java), these could improve speed.
2. For MSP, I am unsure what optimizations (hardware-assisted or software) are being employed.
[gen~] or anything written as an external is using C-based compilation which is bound to be fast. The question though is whether specific hardware is being leveraged? Is either SIMD-style or pipeline-style parallelism employed for digital audio calculations? For our work here, the digital audio is a side effect and the primary purpose is solving ODEs: [gen~] works very well for this purpose at audio sample rates such as 44.1Khz. I am aware that Intel has SSE SIMD extensions. Are these used by [gen~] or is super-fast audio processing a result only of the efficiency of the
C compiler? Javascript and Lua presumably support Max operation but not MSP? The assumption is that their "code on the fly" is not fast enough for digital audio (this turns out, though, not to be true given the plethora of digital audio in javascript on the web).
3. Related to #2, is there specific hardware to support pipeline parallelism inherent in [gen~]?
I am referring to an operation like this: in [gen~], you have 3 objects X -> Y -> Z patched
as such -- X, Y, and Z can be executed simultaneously on the current sample by treating the patch as a pipeline.
4. As for the GPU, the parallelism here seems more self-evident in the forums and the Max
documentation: [jit.gl.X] uses the GPU (e.g., jit.gl.pix and the shader invocations). I am unsure
whether anyone has a patch that employs SIMD-style audio filter execution using a one dimensional
GPU buffer? Perhaps this is unnecessary given its lack of complexity when compared with 2D or 3D
parallelism required (or at least highly desired) for images and video.
In summary (assumptions):
A. Max -> multi-core helps, and C-based compilation is fastest
B. MSP -> C-based compilation (external,gen) but also pipeline and/or SIMD motherboard hardware?
C. Jitter -> GPU-based operations (SIMD)