5 ms·
I use CUDA extensively for porting legacy linear algebra routines in a scientific application for modelling neutron scattering spectra from nanostructures. Depe
by gmt2027 14y ago
I use CUDA extensively for porting legacy linear algebra routines in a scientific application for modelling neutron scattering spectra from nanostructures. Depending on the model size, the target platforms are typically medium-sized GPU clusters or large supercomputers. Most of the newer supercomputers have large numbers of GPUs available and it is a challenge to use all resources efficiently.
GPU computing is promising, but given that it is fairly difficult to predict how much of a speed-up to expect before the actual work is done, I find myself asking whether some of the expended effort is really worth the trouble. It seems that there are two classes of applications where this makes sense:
1) Minimising latency/increasing responsiveness for smaller algorithms such as in a user application or service.
2) Doing large volumes of computation in a high-throughput system.
At the moment, the CUDA platform is well ahead of OpenCL in terms of maturity, features, tools and documentation. However, OpenCL runs on CPUs, both NVIDIA and AMD GPUs and work is being done towards targeting FPGAs [1]. Interestingly, Clang also supports compiling OpenCL kernels directly to native code.
In all likelihood these platforms will stay outside the mainstream until better abstraction layers exist to shield programmers from the low-level architectural details without sacrificing performance. Something similar to the directive-based OpenACC standard that is able to perform close to hand-optimised close would go a long way.
[1] http://www.altera.com/b/opencl.html http://www.altera.com/b/opencl.html
- ylem 14y agoOddly, I have also been using CUDA to port some linear algebra routines for neutron scattering (spinwave calculations) and find it rather useful--but I think better tooling would help. But, overall, the speedups that we've achieved have been worth it and would be cheaper to do these calculations on a GPU or two than on a cluster... Having embarrassingly parallel problems also helps...