Fats : Programming : Compilers & Libraries

Here you can find information about the compilers and software libraries available on fats.

Please see our Programming Languages for information about Fortran, C, and C++. Please see our Parallel Programming for information about writting parallel programs.

Compilers

  1. The native C language compiler on Gnu/Linux machines like fats is the Gnu C compiler package gcc . Likewise, for the C++ language Gnu provides the g++ compiler, which is actually part of the gcc package. Both are available on fats and are invoked through the gcc and g++ commands, respectively. If you write C or C++ programs, your best choices to compile them on fats are the Gnu compilers.

    In addition, the gcc package available on fats provides an old Fortran 77 compiler called g77 . However, to compile Fortran programs, we recommend the use of our PGI compilers instead of g77.

    The gcc manual is available in several file formats. You can also acess this information on fats using man gcc, or info gcc. A list of gcc FAQ is also available from the Gnu project.

    The current version of the gcc package on fats is 2.96.

  2. On fats we have the Portland Group Compilers, from Portland Group International (PGI) Compilers . We have PGI compilers for Fortran 77 (pgf77), Fortran 90 and 95 (pgf90), for C (pgcc), and C++ (pgCC).

    If you want to write or compile programs in Fortran 77, Fortran 90, or Fortran 95, we strongly recommend that you use the PGI compilers. On the other hand, if want to write and compile programs in C or C++, we suggest that you try the native Gnu compilers, gcc and g++.

    The simplest and most direct documentation about the PGI compilers comes in the form of Linux man pages (e.g. man pgf90). A number of manuals and user guides for the PGI compilers are available. In addition, PGI maintains a PGI compilers FAQ list , and a user forum .

    The current PGI compilers' version installed on fats is 5.2-4.

  3. To expedite the compilation of simple MPI programs, you can use the MPI compiler wrappers for Fortran 77 (mpif77), Fortran 90 (mpif90), C (mpicc), and C++ (mpiCC).

    Beware that all of these wrappers will use the corresponding PGI compilers. Hence, if you want to compile a C or C++ MPI program using the Gnu compilers gcc or g++, you cannot use mpicc or mpiCC. In addition, if your program needs libraries other than MPI, you may want to write a Makefile instead of using the MPI compiler wrappers, in order to have full control of the compilation process.

    To get more information about the MPI compiler wrappers, use their Linux man pages (e.g. man mpif90).

  4. If you need assistance with fats' compilers, or with makefiles and program compilation, please contact Gus Correa

Back to top.

Libraries

We have a number of software libraries on fats, with functions and subroutines that can be called from and linked to your programs, to increase its capabilities and efficiency. These libraries cover numerical methods, input/output, mapping capabilities, etc.

  1. The primary library used for parallel processing on fats is MPI , or more specifically, the implementation of MPI made publically available by the Argonne National Laboratory ( ANL ) , called MPICH .

    MPI(CH) has bindings for the Fortran 77, Fortran 90, C and C++ programming languages, i.e., its functions can be called from all those four languages.

    The simplest and most direct form of documentation of MPI(CH) functions are the Linux man pages (e.g. man MPI). You can find much more information about MPI external documentation, books, and tutorial in our section about MPI .

    On fats the MPI(CH) libraries are located on /usr/local/mpich-myrinet/lib , and the correspoding header or include files on /usr/local/mpich-myrinet/include .

    On our cluster, the communication in parallel programs happens across a low-latency, high-bandwidth network called Myrinet . Therefore, on fats we have a port of MPICH adapted to the Myrinet hardware, called . From the programming standpoint, there is no difference between MPICH-GM and the original MPICH from ANL. The current version of MPICH-GM installed on fats is 1.2.1-8.

  2. The Portable Extensible Toolkit for Scientific Computing ( PETSc )

    is a suite of data structures and routines for the scalable (parallel) solution of scientific applications modeled by partial differential equations. It employs the MPI standard for all message-passing communication.

    PETSc was developed and made available to the public by the Argonne National Laboratory ( ANL ) .

    ANL maintains extensive documentation for PETSc, indcluding a User's Manual (pdf file) , help topics , man pages of all PETSc functions, a list of FAQ , and several PETSc tutorials .

    The current version of PETSc installed on fats is 2.3.0, and the installation directory is /home/fats/petsc/petsc-2.3.0 .

  3. Related to and based on PETSc is the Scalable Library for Eigenvalue Problem Computations ( SLEPc ), developed and made available to the public by the Universidad Politecnica de Valencia , Spain .

    SLEPc has complete documentation , which includes a summary of functionality, man pages, User's Manual, FAQ, examples, etc.

    The version of SLEPc installed on fats is 2.2.1, and the installation directory is /home/fats/software/slepc-2.2.1 .

  4. The SUite of Nonlinear and DIfferential/ALgebraic equation Solvers ( SUNDIALS ), consists of four different packages to solve ordinary differential equations and algebraic systems.

    SUNDIALS was developed and made available to the public by the Lawrence Livermore National Laboratory (LLNL) , who provides support and extensive documentation to the SUNDIALS packages. You can also check this schematic description of the SUNDIALS packages and their capabilities.

    The current release of SUNDIALS installed on fats is 2.0.1, and the installation directory is /home/fats/software/sundials .

  5. Two fundamental and very efficient libraries for linear algebra computations are the Basic Linear Algebra Subprograms ( BLAS ), and the Linear Algebra Package ( LAPACK ).

    BLAS and LAPACK have been developed and distilled over many years by a number of applied mathematicians and computer scientists on several national laboratories and universities, with support from the National Science Foundation, and the US Department of Energy. For most linear algebra operations you can think of, it is likely that there are routines in BLAS and LAPACK to compute it, and most likely to compute it in a much more efficient way than any subroutine or function that you can possibly write from scratch. Hence, the use of BLAS and LAPACK is highly recommended.

    The Netlib Repository keeps documentation of BLAS subprograms , and a list of BLAS FAQ . Netlib also keeps a more detailed documentation for LAPACK , which includes the naming scheme and calling interfaces of individual routines , the LAPACK User's Guide a list of FAQ , etc.

    On fats we have BLAS and LAPACK as part of the PGI compilers package. The corresponding libraries are /usr/pgi/linux86/5.2/lib/libblas.a , and /usr/pgi/linux86/5.2/lib/liblapack.a , respectively.

  6. The Arnoldi Package ( ARPACK )

    is a collection of Fortran77 subroutines designed to solve large scale eigenvalue problems.

    It was developed by Rich Lehoucq, Kristi Maschhoff, Danny Sorensen, at Rice University, and Chao Yang, at Lawrence Berkeley National Laboratory. The same group developed a parallel version of ARPACK, which uses MPI, and is called PARPACK .

    The group maintains an ARPACK User's Guide and other relevant documents , including a tutorial.

    The versions installed on fats are ARPACK96 and PARPACK96. The installation directory is /home/fats/software/ARPACK , and the corresponding libraries are respectively /home/fats/software/ARPACK/libarpack_fats.a , and home/fats/software/ARPACK/libparpack_MPI-fats.a .

  7. For large linear algebra problems that require sparse matrices , SuperLU

    is a general purpose library for the direct solution of large, sparse, nonsymmetric systems of linear equations on high performance machines

    SuperLU was developed by Sherri Li, at the Lawrence Berkeley National Laboratory, James Demmel, at the University of California, Berkeley, and John Gilbert, at the University of California, Santa Barbara. The group maintains a SuperLU User's Guide and other relevant documentation on the SuperLU web site.

    The current version of SuperLU installed on fats is 2.0. The installation directory is /local/home/fats/software/SuperLU_DIST_2.0 , and the corresponding library is /local/home/fats/software/SuperLU_DIST_2.0/libsuperlu_fats.a .

  8. Network Common Data Form ( NetCDF )

    is an interface for array-oriented data access and a library that provides an implementation of the interface. The netCDF library also defines a machine-independent format for representing scientific data. Together, the interface, library, and format support the creation, access, and sharing of scientific data.

    The NetCDF format has been tradicionally used by the climate, oceans, and atmosphere research communities, but it has gained acceptance on other fields as well. NetCDF has bindings to Fortran 77, Fortran 90, C, and C++. In addition, many computational packages (e.g. Matlab) provide I/O interfaces to data written in NetCDF format.

    The NetCDF package was developed and is maintained by Unidata , a member of the University Corporation for Atmospheric Research ( UCAR ).

    Unidata/UCAR maintains complete documentation and other useful materials for programmers and other users of the NetCDF package. This includes several software tools , a user support web page , a complete suite of NetCDF manuals , and browsable mailing lists .

    The current version of NetCDF installed on fats is 3.6.0-p1. The corresponding library and header file directories are respectively: /local/home/fats/software/netcdf-3.6.0-p1/lib , and /local/home/fats/software/netcdf-3.6.0-p1/include .

  9. The Unidata units or udunits

    library supports conversion of unit specifications between formatted and binary forms, arithmetic manipulation of unit specifications, and conversion of values between compatible scales of measurement.

    This small library and utility is used mostly to support the use of several physical units and the conversion among them in the NetCDF library, but can also be used in standalone mode. The library is also maintained by Unidata/UCAR.

    The current version of udunits installed on fats is 1.12.4. The corresponding library and header file directories are respectively /home/fats/software/udunits-1.12.4/lib , and /home/fats/software/udunits-1.12.4/include .

  10. The NetCDF Operators or nco is a set of Unix/Linux command tools to manipulate NetCDF files. The developer of nco is Charlie Zender, University of Califorina, Irvine.

    The current version of nco installed on fats is 3.0.1.

  11. The NetCDF visual browser or ncview is an interactive program, driven by a graphical user interface (GUI), that can be used to visualize data in NetCDF files. Ncview was developed by David W. Pierce, Scripps Institution of Oceanography.

    The current version of ncview installed on fats is 1.92e.

  12. The Generic Mapping Tools or GMT

    is an open source collection of ~60 tools for manipulating geographic and Cartesian data sets (including filtering, trend fitting, gridding, projecting, etc.) and producing Encapsulated PostScript File (EPS) illustrations ranging from simple x-y plots via contour maps to artificially illuminated surfaces and 3-D perspective views. GMT supports ~30 map projections and transformations and comes with support data such as coastlines, rivers, and political boundaries.

    GMT was developed and is maintained by two alumni of LDEO and Columbia University: Pal Wessel , University of Hawaii, and Walter H. F. Smith , NOAA.

    The current version of GMT istalled on fats is 4.0.

  13. If you need assistance with fats' software libraries, please contact Gus Correa

Back to top.

Last updated on by Gus Correa.