Tuesday, July 22, 2014

compiler

I really feel little dizzy by the variety of compilers, always confuse them here or there. So this is 
is the motivation to put them together,  so I, hope you too, will never have that awful feeling anymore. In the cases of dealing with scientific applications, fortran and c/c++ are the ones we are dealing with the most. 

1. GCC  -- GNU Compiler Collection
GNU Compiler Collection (gcc) : C, C++, Objective-c, Fortran, Java, Ada and Go.
First how to pronounce GNU??? : g'noo, sounds like glue.

gcc is not a compiler that can only compile c++ code, which could be mislead by its name, instead it's an abbreviate name. It can compile lots of languages.

The standard compiler releases since 4.6 include front ends
for
C (gcc),  ( sometimes, cc is an alias for gcc on your system. )
C++ (g++),
Objective-C,
Objective-C++,
Fortran (gfortran),
Java (gcj),
Ada (GNAT), and
Go (gccgo)

2. Intel compiler: 
icc : C
icpc : C++
ifort : Fortran
idb : debugger  ( another debugger besides gdb I use. )

3. IBM AIX compiler:

Introducing XL Fortran

IBM® XL Fortran for AIX®, V12.1 is an advanced, high-performance compiler that can be used for developing complex, computationally intensive programs, including interlanguage calls with C and C++ programs.

Introducing XL C/C++

IBM® XL C/C++ for AIX®, V10.1 is an advanced, high-performance compiler that can be used for developing complex, computationally intensive programs, including interlanguage calls with Fortran programs.


3.1 fortran code 
To compile a source program, use one of the xlf90, xlf90_r, xlf90_r7, f90, xlf95, xlf95_r, xlf95_r7, f95, xlf2003, xlf2003_r, f2003, xlf, xlf_r, xlf_r7, f77, or fort77 commands, which have the form:
Read syntax diagramSkip visual syntax diagram
                  .----------------------------------.   
                  V                                  |   
>>-+-xlf90-----+----+--------------+----input_file---+---------><
   +-xlf90_r---+    '-cmd_line_opt-'                     
   +-xlf90_r7--+                                         
   +-f90-------+                                         
   +-xlf95-----+                                         
   +-xlf95_r---+                                         
   +-xlf95_r7--+                                         
   +-f95-------+                                         
   +-xlf2003---+                                         
   +-xlf2003_r-+                                         
   +-f2003-----+                                         
   +-xlf-------+                                         
   +-xlf_r-----+                                         
   +-xlf_r7----+                                         
   +-f77-------+                                         
   '-fort77----'  

3.2 c / c++ code 
xlc Invokes the compiler for C source files. This command supports all of the ISO C99 standard features, and most IBM® language extensions. This invocation is recommended for all applications. xlc_r, xlc128_r4, xlc128_r7, xlc128, xlc128_r, xlc128_r4, xlc128_r7
c99 Invokes the compiler for C source files. This command supports all ISO C99 language features, but does not support IBM language extensions. Use this invocation for strict conformance to the C99 standard. c99_r, c99_r4, c99_r7, c99_128, c99_128_r, c99_128_r4, c99_128_r7
c89 Invokes the compiler for C source files. This command supports all ANSI C89 language features, but does not support IBM language extensions. Use this invocation for strict conformance to the C89 standard. c89_r, c89_r4, c89_r7, c89_128, c89_128_r, c89_128_r4, c89_128_r7
cc Invokes the compiler for C source files. This command supports pre-ANSI C, and many common language extensions. You can use this command to compile legacy code that does not conform to standard C. cc_r, cc_r4, cc_r7, cc128, cc128_r, cc128_r4, cc128_r7
gxlc Invokes the compiler for C source files. This command accepts many common GNU C options, maps them to their XL C option equivalents, and then invokes xlc. For more information, refer to Reusing GNU C/C++ compiler options with gxlc and gxlc++.
xlc++, xlC Invokes the compiler for C++ source files. If any of your source files are C++, you must use this invocation to link with the correct runtime libraries. Files with .c suffixes, assuming you have not used the -+ compiler option, are compiled as C language source code. xlc++_r, xlc++_r4, xlc++_r7, xlc++128, xlc++128_r, xlc++128_r4, xlc++128_r7, xlC_r, xlC_r4, xlC_r7, xlC128, xlC128_r, xlC128_r4, xlC128_r7
xlc++core, xlCcore Invokes the compiler as described above for xlc++ and xlC, but links only to the core of the runtime library. Use this invocation if you want to link your application to a runtime library other than that supplied with XL C++. xlc++core_r, xlc++core_r7, xlc++core128, xlc++core128_r, xlc++core128_r7, xlCcore_r, xlCcore_r7, xlC128core, xlC128core_r, xlC128core_r7
gxlc++, gxlC Invokes the compiler for C++ files. This command accepts many common GNU C/C++ options, maps them to their XL C/C++ option equivalents, and then invokes xlc++. For more information, refer to Reusing GNU C/C++ compiler options with gxlc and gxlc++.

4. PGI compiler: 
  • PGFORTRAN™ native OpenMP, OpenACC and auto-parallel Fortran 2003 compiler with CUDA extensions
  • PGCC® OpenMP, OpenACC and auto-parallel ANSI and K&R C99 compiler
  • PGC++® OpenMP, OpenACC and auto-parallel GNU 4.8 g++ compatible C++ compiler with CUDA-x86 extensions
  • PGDBG® OpenMP and MPI parallel graphical debugger
  • PGPROF® OpenMP and MPI parallel graphical performance profiler

No comments:

Post a Comment