The appended patch adds GPU support to ATLAS. Included is a simple framework for using the GPU by means of using standard OpenGL interfaces and a simple single precision GEMM implementation using ARB_fragment_program.
The GEMM implementation is adopted from the GPUBench project. Additionally, the configure scripts and xspew program was adopted so that by using the option -Si gpu <0/1> GPU support can be enabled (default is disabled).
The blocking factor for the GPU is currently hard-coded to 2048 (it is written to Make.inc by xspew). Problem sizes below this value are still calculated at the CPU. The patch was only tested on Microsoft Windows with commodity ATi and NVIDIA graphics hardware, where GLEW and GLUT libraries are required (just copy glew32.dll and glut32.dll to the ATLAS/lib directory). In theory the patch should work on other operating systems, too, as long as GLEW, GLUT and OpenGL are installed.
Note that this implementation is a prototype and has several known bugs, e.g. alpha is not applied in the GPU GEMM implementation. The patch should be considered as a starting point for further research rather than a GEMM implementation suitable for production use.
Log in to post a comment.