Important note 1
Whereas the installation of the standard version of FARGO is a breeze,
the installation of GFARGO (FARGO for GPU) is significantly more tricky.
You should make sure that you first know how to install and run the standard CPU version, as the directories structure and output format is essentially the same.
The installation of the standard CPU version is explained here.
Important note 2
Before you can install GFARGO, you must install the three packages provided by NVIDIA, namely the driver, the toolkit and the SDK (Software Development Kit), for CUDA versions prior to 5.0. For CUDA 5.0, you only need to install the driver and the toolkit (for this specific version of CUDA see the INSTALL file provided in the corresponding distribution of GFARGO). It is a good idea to adopt the default path for the installation of the SDK. You should check that they are properly installed by building and running the examples of the SDK (such as
oceanFFT, etc.). If that works,
then the built of
gfargo should be relatively easy, and should amount essentially to path or option tweaking in the makefile.
Once the above works
...that is to say once you have a fully functionnal CUDA install, so that you could build and run some examples of the SDK...
...Choose your distribution in the table below
|gfargo.tar.gz||First public release of the code|
|gfargo-fermi.tar.gz||Fermi compatible release (double precision)|
|gfargo-cuda-5_0.tar.gz||Release for CUDA 5.0 (double precision)|
Note: the release for CUDA 5.0 is compatible with Fermi and Kepler architectures.
...and extract it (you may have to change
then go to the source directory:
and there issue a
If you are under Mac OS X with a recent version of CUDA, it should work.
You are now ready for your first run.
If it does not work, unfortunately no support can be expected from this site, but here are a few indications of what to change in the makefile to get things work :
The release for CUDA 5.0 has specific installation instructions which can
be found in the INSTALL file provided in the distribution. This release is compatible with Fermi and Kepler architectures. It is known to run, in particular, on Teslas C2050 (under Ubuntu 12.04) and on a 650M (under
Edit the line begining with
OPT_= -O3.... (line number 9 of the
It contains an option
-I followed by a path. This path of the SDK under Mac OS X. You may need to adapt it to your specific platform.
Toward the end of the makefile, you can change the options
listed from line 212 to 216. In particular, you may need to remove
-m32 option, or change
-lcutil_x86_64, etc. You may
also need to change the path of the SDK (
Note that there exists two building modes for GFARGO:
the normal built (default)
the windowed built, which is run from the command line as the other one,
but which opens an OpenGL window in which you can follow in real time
the evolution of the calculation.
The normal built is performed by:
whereas the windowed built is performed by:
An invocation to
make without any option adopts the same value for
WINDOW option as during the previous built, i.e. the
WINDOW option is sticky.
Note that in the case of the windowed built, you will certainly have to tweak other lines in the makefile if you are not under Mac OS X.
In particular check the
-L path in line 9 of the makefile, and check also the line that contains
OPENGLOPT toward the end of the makefile.
The directory corresponding to the path following the
-I option (line 9 of the makefile) should contain the file
In some earlier versions of CUDA, you may need to remove the
C directory from the path. Check also in that case the line that defines
NVCC_FLAGS toward the end of the makefile.
$(CUDA_SDK_PATH)/lib) should contain a file such as
libcutil_i386.a, etc. The name of this file should correspond to the value of the
CUTIL_LIB_ variable (i.e.
You can use the environment variable
FARGO_ARCH that you define in your define
.tcshrc. The use of this environment variable is described here. The makefile provided defines specific paths and options for the two following values of
Cesium (the latter corresponds to the specific case of a GPU cluster at the developers’ institution).
It is advised to first try to compile the default (non-windowed) version. This is easier since you do not need to worry about the OpenGL libraries.