One Day We Will

Our mlf went and UnRisk goes cross platform. Windows, Linux, Mac OS X. Mathematica is cross platform, but our C++ kernel extensions were devoted to special target groups, like quant finance market participants, utilizing almost exclusively Wintel platforms.

But we go beyond. One day in the near future, we will have a kernel code that supports heterogeneous computing, like on hybrid CPUGPU platforms. One day we will have code that runs on a, say, DELL server with 128 CPUs and 4 NVIDIA Tesla 20 series of GPUS, my MacBook Pro wit 8 cores and an AMD GPU, my iPad or Android based tablets and other new computing muscles in the small and in the large.

Being early adopters of CUDA - Taming The Machine Infernal - we decided one year ago to overhaul the engines code base to make it compatible with heterogeneous computing platforms.
Core of the refactoring effort, real spade-work, is the radical redesign of all algorithms and their reimplementation in OpenCL. Yes this is a step back into programming in the small, but the platform independence pays back. The blazingly fast one-for-all code will run on current and future technologies. Transparent to developers, it will utilize the power of CPU cores combined with massive parallel architectures that define the parallelization granularity. OpenCL code is driven over the grid.

Developers still program in the domain-specific languages that are built in Mathematica's declarative language. Consequently, developers enjoy the double benefit of blazingly fast engines programmatically manipulated by a declarative language framework.
With Mathematica's OpenCLLink, we and the developers using our systems benefit from two great principles: first, messy plumbing of the utilization of hybrid platforms is automated (see the picture above). Second, what can be done with such a system can be done optimized without change - from a small device to a large HPC farm.

One day we will build all our software that way. And we offer training how-to already.