The nascent GPGPU computing world received another boost today with the commercial release of Jacket 1.0, a GPU engine for MATLAB. Jacket was developed by AccelerEyes, a two-year-old Atlanta-based startup that was founded by Georgia Tech grad John Melonakos, who also runs the company. AccelerEyes aims to tap into the enormous user base of engineers and scientists currently using MATLAB, but who would like to take advantage of the latest GPU hardware to accelerate computing and visualization.
In a nutshell, Jacket allows developers to program GPUs in workstations, PCs and embedded systems using MATLAB’s M language. The Jacket runtime manages all CPU-GPU memory transfers, kernel configurations and execution launches behind the scenes. The GPU computing engine is built atop CUDA, NVIDIA’s GPU programming environment, so for the time being only CUDA-capable NVIDIA GPUs are supported.
A Graphics Toolbox package is included to provide integrated visualization, offering the capabilities of OpenGL in MATLAB’s interpretive programming environment. Since the Toolbox is also GPU-based, it allows the program to take advantage of GPU-side computational results already stored on the graphics card memory.
Some MATLAB code modification is necessary in order to take advantage of Jacket’s GPU smarts. But the changes are relatively simple. Jacket has introduced a single precision GPU data type (double precision not yet supported) so that array data can be cast as GPU objects. Using the GPU data type, Jacket overloads CPU-based MATLAB function with CUDA-based functions and provides transparent execution on the graphics processor.
Jacket has been in beta for seven months, during which AccelerEyes has continued to refine the software. Version 1.0 includes a number of bug fixes and enhancements, but the biggest change is the addition of a MATLAB GPU-for-loop (gfor).
Melonakos characterized the gfor as essentially a MATLAB parallel for-loop (parfor) for GPUs. But instead of distributing the loop calculations across multiple CPUs/cores (typically across a cluster) as is done with parfor, the gfor uses the hundreds of cores within a graphics processor to implement the parallelism. In the beta version of Jacket, users could operate on GPU data types in a regular for-loop, but the individual iterations were performed sequentially on the GPU. The gfor transforms the iterations into a data-parallel calculation, and the entire loop is executed on the GPU. Like parfor, gfor is restricted to loop blocks without data dependencies, but the loop itself is accomplished under a single CPU thread.
Jacket beta users ran the gamut from biotech/medical and aerospace/defense to electronics to financial services, with smaller numbers of users in the communications, automotive and energy industries. According to Melonakos, thousands of users took part in the beta program with at least half of them outside the U.S. “It’s very popular in Europe, India, China, Japan, Brazil and Russia,” he says.
AccelerEyes seems to have uncovered a unique niche in the defense community, where MATLAB is used for prototyping applications that are later deployed using C/C++ or some other language. Applications like signal processing and geo-location are especially suitable for hardware acceleration, but getting MATLAB code to run on non-CPU architectures has presented a big obstacle. “People are sick and tired of converting MATLAB to C code or FPGA [code] or some other code to actually get it in a deployable environment,” says Melonakos. “This basically gives them the ability to get the acceleration directly in MATLAB that they would need to deploy, without having to do a manual port of the code to a different language.”
Licenses are priced according to customer type. A basic Jacket license runs $1,900 for Individual/Commercial, $1,500 for Government/Research, $500 for Academic and $100 for Student. All licenses are perpetual and come with one year of free upgrades and support. A basic license for Jacket enables you to access up to two GPUs — typically one Tesla GPU for computation and one Quadro GPU for visualization using the Graphics Toolbox.
If you have a new Tesla workstation with up to four GPUs and you want to run Jacket on them, AccelerEyes charges an incremental fee for a third GPU, and a smaller fee for the fourth one. Even though you can access more than one GPU, Jacket currently doesn’t deal with multiple GPUs within a single MATLAB session, although this capability is under development. For now, you need to run one instance of MATLAB per GPU.
But the biggest limitation is that the software only works with NVIDIA hardware — a result of the relative maturity of the CUDA software platform versus AMD’s Brook+ and the recently defined OpenCL. As hardware vendors like AMD, Intel and NVIDIA start to support the open platform OpenCL framework, it should be possible for AccelerEyes to create a hardware-agnostic implementation of Jacket. In that case, users would be able to execute Jacket-MATLAB applications on NVIDIA and ATI GPUs, as well as Intel’s upcoming Larrabee processors.