Difference between revisions of "Intel Compilers and Libraries"
Moskalenko (talk | contribs) |
|||
(21 intermediate revisions by 4 users not shown) | |||
Line 1: | Line 1: | ||
− | [[Category:Software]][[Category: | + | [[Category:Software]][[Category:Programming]][[Category:Language]][[Category:Library]][[Category:Math]][[Category:Compiler]] |
{|<!--CONFIGURATION: REQUIRED--> | {|<!--CONFIGURATION: REQUIRED--> | ||
|{{#vardefine:app|intel}} | |{{#vardefine:app|intel}} | ||
Line 5: | Line 5: | ||
<!--CONFIGURATION: OPTIONAL (|1}} means it's ON)--> | <!--CONFIGURATION: OPTIONAL (|1}} means it's ON)--> | ||
|{{#vardefine:conf|}} <!--CONFIGURATION--> | |{{#vardefine:conf|}} <!--CONFIGURATION--> | ||
− | |{{#vardefine:exe|}} <!--ADDITIONAL INFO--> | + | |{{#vardefine:exe|1}} <!--ADDITIONAL INFO--> |
|{{#vardefine:pbs|}} <!--PBS SCRIPTS--> | |{{#vardefine:pbs|}} <!--PBS SCRIPTS--> | ||
|{{#vardefine:policy|}} <!--POLICY--> | |{{#vardefine:policy|}} <!--POLICY--> | ||
Line 21: | Line 21: | ||
;Note: | ;Note: | ||
− | :The default intel version is | + | :The default intel version is <code>intel/2020.0.166</code>. |
<!--Modules--> | <!--Modules--> | ||
Line 42: | Line 42: | ||
== Compiling Serial Programs == | == Compiling Serial Programs == | ||
+ | |||
+ | Examples for compiling serial programs: | ||
{| class="wikitable" | {| class="wikitable" | ||
Line 49: | Line 51: | ||
| C || icc || ''icc compiler_options example.c'' | | C || icc || ''icc compiler_options example.c'' | ||
|- | |- | ||
− | | C++ || icpc || ''icpc compiler_options example.cxx'' | + | | C++ || icpc || ''icpc compiler_options -o example.exe example.cxx'' |
|- | |- | ||
− | | F77 || ifort || ''ifort compiler_options example.f'' | + | | F77 || ifort || ''ifort compiler_options -o example.exe example.f'' |
|- | |- | ||
− | | F90 || ifort || ''ifort compiler_options example.f90'' | + | | F90 || ifort || ''ifort compiler_options -o example.exe example.f90'' |
|} | |} | ||
Line 63: | Line 65: | ||
== Compiling OpenMP Programs == | == Compiling OpenMP Programs == | ||
+ | For multi-threaded shared memory parallel applications using OpenMP threading paradigm, add "-openmp" to the compiler options. For example: | ||
+ | |||
+ | icc -openmp -O2 -o example.exe example.c | ||
+ | icpc -openmp -O2 -o example.exe example.cpp | ||
+ | fort -openmp -O2 -o example.exe example.f90 | ||
+ | |||
+ | Please see [[Sample_SLURM_Scripts]] for example job scripts to run threaded or multi-processor jobs. | ||
+ | |||
+ | == Compiling MPI Programs == | ||
+ | |||
+ | For distributed parallel MPI programs, the MPI library supported on hipergator is [https://www.open-mpi.org OpenMPI]. To use Intel compiler with OpenMPI, please load the modules: | ||
+ | |||
+ | module load intel openmpi | ||
+ | Examples for compiling MPI programs: | ||
+ | |||
+ | {| class="wikitable" | ||
+ | |- | ||
+ | ! Source Langurage !! Compiler !! Command Example | ||
+ | |- | ||
+ | | C || mpicc || ''epic -O2 -o MPI_example.exe MPI_example.c'' | ||
+ | |- | ||
+ | | C++ || mpicxx || ''mpicxx -O2 -o MPI_example.exe MPI_example.cxx'' | ||
+ | |- | ||
+ | | F77 || mpif77 || ''mpif77 -O2 -o MPI_example.exe MPI_example.f'' | ||
+ | |- | ||
+ | | F90 || mpif90 || ''mpif90 -O2 -o MPI_example.exe MPI_example.f90'' | ||
+ | |} | ||
+ | |||
+ | Please refer to the compiler man pages or use "''-help''" command option, for example | ||
+ | |||
+ | mpicc -help | ||
+ | man mpicc | ||
+ | |||
+ | Please see [[Sample_SLURM_Scripts]] for example job scripts to run MPI and hybrid MPI/Threaded jobs. | ||
<!--Configuration--> | <!--Configuration--> | ||
Line 71: | Line 107: | ||
<!--Run--> | <!--Run--> | ||
{{#if: {{#var: exe}}|==Additional Information== | {{#if: {{#var: exe}}|==Additional Information== | ||
+ | ==Compiling for the right hardware== | ||
+ | To take the advantages of the Advanced Vector Extensions (AVX) please use the following compiler option for better performance when AVX is available: | ||
+ | -msse3 -axcore-avx2,core-avx-i | ||
− | + | Note that HPG2 and HPG3 CPUs do not support anything above AVX2. | |
− | |||
|}} | |}} | ||
<!--PBS scripts--> | <!--PBS scripts--> |
Latest revision as of 18:04, 27 September 2023
Description
Intel® Parallel Studio XE is a software development suite that helps boost application performance by taking advantage of the ever-increasing processor core count and vector register width available in Intel® Xeon® processors, Intel® Xeon Phi™ processors and coprocessors, and other compatible processors.
- Note
- The default intel version is
intel/2020.0.166
.
Required Modules
Serial
- intel
System Variables
- HPC_MKL_DIR - Intel MKL library installation directory
- HPC_MKL_LIB - Intel MKL library file directory
- HPC_MKL_INC - Intel MKL library include file directory
Compiling Serial Programs
Examples for compiling serial programs:
Source Langurage | Compiler | Command Example |
---|---|---|
C | icc | icc compiler_options example.c |
C++ | icpc | icpc compiler_options -o example.exe example.cxx |
F77 | ifort | ifort compiler_options -o example.exe example.f |
F90 | ifort | ifort compiler_options -o example.exe example.f90 |
For detailed information on compiler options, please refer to the compiler man pages or use "-help" command option, for example
icc -help man icc
Compiling OpenMP Programs
For multi-threaded shared memory parallel applications using OpenMP threading paradigm, add "-openmp" to the compiler options. For example:
icc -openmp -O2 -o example.exe example.c icpc -openmp -O2 -o example.exe example.cpp fort -openmp -O2 -o example.exe example.f90
Please see Sample_SLURM_Scripts for example job scripts to run threaded or multi-processor jobs.
Compiling MPI Programs
For distributed parallel MPI programs, the MPI library supported on hipergator is OpenMPI. To use Intel compiler with OpenMPI, please load the modules:
module load intel openmpi
Examples for compiling MPI programs:
Source Langurage | Compiler | Command Example |
---|---|---|
C | mpicc | epic -O2 -o MPI_example.exe MPI_example.c |
C++ | mpicxx | mpicxx -O2 -o MPI_example.exe MPI_example.cxx |
F77 | mpif77 | mpif77 -O2 -o MPI_example.exe MPI_example.f |
F90 | mpif90 | mpif90 -O2 -o MPI_example.exe MPI_example.f90 |
Please refer to the compiler man pages or use "-help" command option, for example
mpicc -help man mpicc
Please see Sample_SLURM_Scripts for example job scripts to run MPI and hybrid MPI/Threaded jobs.
Additional Information
Compiling for the right hardware
To take the advantages of the Advanced Vector Extensions (AVX) please use the following compiler option for better performance when AVX is available:
-msse3 -axcore-avx2,core-avx-i
Note that HPG2 and HPG3 CPUs do not support anything above AVX2.