Announcing FLAGON v 0.6: use GPUs from Fortran-9X

FLAGON is an open source library/middleware for using GPUs from Fortran-9X, without necessarily knowing too much C or CUDA.

It provides a Fortran Module (similar to a class in C++) that provides variables that are pointers to device variables on the GPU. Several supporting functions are available for data transfer, for manipulating variables on the device, as are simple interfaces to the CUBLAS, CUFFT librariers. Additional functionality is provided by functions that are written in CU, and can be called. Several such functions are available. The CUDPP library is also incorporated.

Flagon has been used to develop relatively large pieces of scientific computing code on the GPU (Fast Multipole Methods on the GPU, plasma turbulence simulations), under both Windows and Linux.

Caveat: It has only been tested under Intel Fortran 9 and 10. There is no reason why it should not work under other Fortran compilers, but name mangling issues between the C++ compiler, nvcc and the fortran compiler are issues. This is one area where the project can use help.

A longer introduction can be obtained here.

FLAGON is open source and provided under LGPL and can be downloaded from sourceforge.

CUBLAS, CUFFT, and CUDPP are provided with their own licenses.

flagon_use.bmp (2.25 MB)

cool, i’ll try to get my old university people enthousiastic. CUDA being C was a bit of an issue for them. Thanks a lot, from the talk at NVISION, it looked very interesting and a great tool to get quick gains.

C used to be an issue for me too, until I forced myself to learn it.

Now I mix Fortran, C and nvcc in my CUDA codes freely.

Just wonder if this project is still under development???

I am a grad student in astrophysics and use Fortran. I am quite interested in this, as my projects involves using FFT. Although my problem size is not big enough (as I am solving nonlinear equations instead of doing simulation like N-body) to be benefited by CUDA…I would still like to see how this Fortran interface will work =)