De Wiki de Calcul Québec
Aller à : Navigation, rechercher
Cette page est une traduction de la page PathScale et la traduction est complétée à 100 % et à jour.

Autres langues :anglais 100% • ‎français 100%



Pathscale is a complete proprietary solution to use multicore architectures. It comes with a serie of C (pathcc), C++ (pathCC) and Fortran (pathf90, pathf95) compilers as well as other tools, such as debugger (pathdb) and an assembler (pathas). The reference documentation is available on the official website of Pathscale.

Advantages and disadvantages

The officiel website is well documented with compilation examples for many tools. The suite of compilers can be used for Intel, AMD or Nvidia GPGPU architectures. However, since it is a proprietary solution, it requires a license. Moreover, the BLAS version provided by PathScale is that from the ACML, which offers poor performance. It is however easy to compile with the MKL version of BLAS.

Worth of mention is that, contrary to Intel, PathScale ships with its own implementation of the C++ standard library. This implementation is less up-to-date with the new C++11 standard than that of GCC version 4.7.

Regarding OpenMP, PathScale follows version 2.5 of the standard. It is somewhat behind GCC version 4.7, which includes most of standard 3.0.

One main point of interest of PathScale is the performance of the binaries compiled for AMD architecture. We have observed comparisons with PGI and GCC similar to those reported on PathScale's website. However, some codes do not perform better. Moreover, Intel compilers offer similar performances even on AMD architectures.

Compiling options

PathScale compilers use the same generic options, such as -g, -c, -I. See the generic compiling page for those options. We give here a short list of the most useful options

Option Description Example
-help Displays the list of options
pathcc -help ...
-static, -Bstatic Statically links binaries to the application.
pathcc -static ...
-ffast-math Optimizes floating point operations, neglecting some of the ANSI and IEEE rules for precision.
pathcc -ffast-math ...
-msse3, -msse4a Adds SSE3 and SSE4 instructions to vectorize operations.
pathcc -msse3 ...
-ipa Enables inter-process optimizations.
pathcc -ipa ...
-mp Enables support for OpenMP (standard 2.5 for PathScale version 4)
pathcc -openmp ...
-show Displays each step of the compilation process in details (pre-compiling, compiling, assembly, linking)
pathcc -show ...
-v Same as -show, but also displays the compiler version.
pathcc -v ...
-keep Keeps temporary files after compiling (.i files (precompiled) and .s files (assembled))
pathcc -keep ...
-ar Instead of creating an application, creates an archive with the object files.
pathcc -ar ...

Options for Fortran

Option Description Default
-fixedform Enables the fixed form format from Fortran 77, with columns 1 to 6 reserved and 7 to 72 for code Enabled for .f and .F files
-freeform Enables the free form format from Fortran 90/95. Enabled for .f90, .f95, .F90 and .F95 files.
-cpp Uses the C pre-processor Enabled for .F, .F90, .F95 files.
-ftpp Uses the legacy Fortran pre-processor Never enabled by default
-fcoco Uses the pre-processor ISO/IEC 1539-3 Never enabled by default

Options for C, C++

Option Description Default
(-no)-pathcc Define (or not) the __PATHSCALE__ macro Defined by default
-std=valeur Sets the standard. With version 4 of the compiler, the possible values are: c89, c99, c9x, gnu89, gnu99, gnu9x, iso9899:1990, iso9899:1999, iso9899:199x

Recommended options

It is recommended to use the options: -O2 -msse3. If your code is not very sensitive to precision, you may replace -O2 with -O3, and if it is really not sensitive to precision, you may add -fast-math.

Compiling with OpenMP

To compile OpenMP code, you need to add the -mp option. The compiling process will display which loop is being parallelized. If a loop does not get parallelized, try writing it in a different way and recompile. For more information, see our page on OpenMP.

[nom@serveur $] pathcc -msse3 -mp f1.c f2.c -o f.out -lpthread

Outils personnels
Espaces de noms

Ressources de Calcul Québec