[login to view URL]
Heterogeneous Computing Developer
C/C++, OpenCL, Audio DSP, Parallel Processing, GPGPU
We are a small company based in Barcelona, Spain. We have been carrying out extensive research and development in the area of spatial audio for over 10 years. The outcome of our work is a new, proprietary technology that allows a sound source to be moved inside a 3D space, in ways that were not possible before.
Our mission is to push beyond the boundaries of traditional stereo and surround practices and offer a more engaging, rich and immersive experience to the audience.
Since 2014 Intorno Labs has been working with various artists and participating in music festivals and events all over the world such as Mira, Mutek and Sonar.
We are now in the process of opening a second branch in the vibrant city of Berlin, Germany.
Intorno Labs is looking for a qualified developer or technology company to refactor one of its core modules to take advantage of heterogeneous computing and parallel processing.
The final product will be a C++ class implementing an audio channel matrix. The code will have to be cross-platform (MacOS, Windows, Linux) and able to run on any type and number of processors in any combination (CPU, GPU or a combination of both). It will also have to support GPUs from all major vendors (AMD, Nvidia, Intel).
To achieve all of the above we thought of OpenCL as the API of choice.
Primary focus is on performance.
The developer will also be responsible for the implementation of a small set of test units in order to check the functionality and performance of the module.
• Language Dialect: C++17
(no need to be backwards compatible with older versions)
• NxN audio channel matrix.
Min number of channels: 1
Max number of channels: 1024
• Able to work both with float and double data types.
(using OPENCL EXTENSION cl_khr_fp64)
Conditional compiling of either one with a preprocessor directive.
• Able to run across multiple OpenCL platforms and devices.
(very important: check with CTO for more details)
• One gain and one delay stage at every node.
Gain interpolation: linear with a ramp-time attribute.
Delay interpolation: cubic, hermite, lagrange.
Able to switch delay interpolation with a preprocessor directive.
Able to turn on/off delay processing with a preprocessor directive.
• Audio-rate modulation of gain and delay values.
• Dependencies on 3rd party libraries are to be avoided/minimized.
We are open to working with freelance developers and/or technology companies. The job is very specific and highly technical. Candidates must have the required skills in their entirety. We will not accept a "learn as you go" policy.
The developer will report directly to the CTO of the company.
Implementation and testing.
The job is based in the city of Berlin, Germany.
It would be ideal if the candidate could attend weekly meetings in our temporary home/office in Prenzlauer-Berg to monitor progress and address issues/concerns. However this is not mandatory. Meetings could be replaced with conference calls if - for any reason - the candidate is not able to guarantee his/her attendance.
Be aware that the job requirements are tied to specific hardware. Code has to be run and tested on CPUs/GPUs of different vendors (AMD, Nvidia, Intel) and different platforms. If working remotely the candidate must have access to the specific hardware.
Other than the weekly meetings or conference calls, the candidate is welcome to be on his/her own schedule. Fluency in English is required.
The job is very specific and highly technical in nature. There will be many more details to be discussed. We will be happy to address any further questions/concerns once a channel of communication has been established between employer and developer.