GPU software ranges from high level existing software packages with integrated GPU support to low level hand crafted C like programming to add GPU support to your own software or research projects.
At the top end, high level GPU accelerated applications represent the least amount of time investment. Often it is possible to speed up your research simply by making some small changes to your Matlab code or enabling GPU processing facilities within other software.
Mid level acceleration APIs allow GPU support to be added to existing code without having to have an in depth knowledge of the GPU hardware architecture or by making signoficant changes to your existing code or research models (although changing the way your code works may give further performacne improvements).
Low level GPU programming languages offer the maximum amount of flexibility with respect to GPU programming. Despite the relatively intuitive software programming model, some in depth knowledge of GPU architectures is required to obtain the best performance improvements.
GPU Accelerated Applications (High Level)
- Ansys - On iceberg GPU processing can be enabled for Ansys Mechanical batch jobs by simply providing the -gpu parameter to the runansys script. Type runansys on iceberg to get more information. Ansys Mechanical Parallel Processing Guide contains detailed information regarding GPU acceleration of Ansys. Also you can check Iceberg quick Ansys GPU guide
- Matlab - Supported via the CUDA accelerated Parallel Computing Toolbox. Matlab is available on campus and can use remote acceleration via Iceberg. Examples for the parallel computing matlab course are available on iceberg at /usr/local/courses/parallelmatlab_mathworks_03_2014.zip or maybe downloaded from this link to google drive.
GPU acceleration APIs (Mid Level)
- Open ACC - Programming directives for C and Fortran that allow GPU support to be easily added to your existing code.
- Thrust - A parallel algorithms library with parallel primatives such as scan, sort and reduce with support for CUDA.
GPU Programming Languages (Low Level)
- CUDA (Compute Unified Device Architecture) - A programming environment using C\C++ code kernels to specify data parallel programs for execution on NVIDIA GPUs.
- OpenCL - A framework for hetrogeneous platforms including NVIDIA and AMD GPUs.