7.3.1 IBM ESSL Compilation in Fortran, IBM XL C/C++, and GCC/G++ The IBM ESSL subroutines are callable from programs that are written in Fortran, C, and  C++. Table 7-6, Table 7-8 on page 175, and Table 7-10 on page 176 list how the compilation  on Linux depends on the type of IBM ESSL library (serial, SMP, or SMP CUDA); environment  (32-bit integer and 64-bit pointer or 64-bit integer, or 64-bit pointer); and compiler (XLF, IBM  XL C/C++, or gcc/g++) that is used. To use the Fastest Fourier Transform in the West (FFTW) wrapper libraries, include the  header file  fftw3.f , which contains the constant definitions. To use these definitions,  complete one of the following tasks: GLYPH<SM590000> Add the following line to your Fortran application:  include "fftw3.f” GLYPH<SM590000> Add the  fftw3.f  header file in your application. 174  IBM High-Performance Computing Insights with IBM Power System AC922 Clustered Solution  Type of IBM  ESSL library Environment Compilation command Serial 32-bit integer and 64-bit  pointer xlf_r -O -qnosave program.f -lessl 64-bit integer and 64-bit  pointer xlf_r -O -qnosave program.f -lessl6464 SMP 32-bit integer and 64-bit  pointer xlf_r -O -qnosave -qsmp program.f -lesslsmp  xlf_r -O -qnosave program.f -lesslsmp -lxlsmp 64-bit integer and 64-bit  pointer xlf_r -O -qnosave -qsmp program.f  -lesslsmp6464 xlf_r -O -qnosave program.f -lesslsmp6464  -lxlsmp SMP CUDA 32-bit integer and 64-bit  pointer xlf_r -O -qnosave -qsmp program.f  -lesslsmpcuda -lcublas -lcudart -L/usr/local/cuda/lib64 -R/usr/local/cuda/lib64 xlf_r -O -qnosave program.f  -lesslsmpcuda -lxlsmp -lcublas -lcudart -L/usr/local/cuda/lib64 -R/usr/local/cuda/lib64 Table 7-6 Fortran compilation commands for IBM ESSL