Open
Description
Description
Some fpm packages may like to use OpenMP SIMD directives for vectorization.
Most compilers have specific flags to enable these separately from the multi-threading and target offloading.
OpenMP SIMD Flags
Compiler | SIMD Flag |
---|---|
GNU (gfortran) | -fopenmp-simd |
Intel (ifx) | -qopenmp-simd |
Flang | -fopenmp-simd (not sure if implemented yet) |
Cray (crayftn) | -h omp_simd or -fopenmp-simd |
NVIDIA (nvfortran) | No specific flag available |
LFortran | ? |
Possible Solution
Could this be added to the meta-package dependencies?
name = "my_openmp_package"
[dependencies]
openmp = "*"
openmp-simd = "*"
Additional Information
- SIMD Directives: https://www.openmp.org/spec-html/5.1/openmpsu49.html
- SIMD Vectorization with OpenMP: https://blog.rwth-aachen.de/hpc_import_20210107/attachments/28344675/30867475.pdf
- Explicit Vector Programming in Fortran: https://www.intel.com/content/www/us/en/developer/articles/technical/explicit-vector-programming-in-fortran.html
- OpenMP SIMD in Visual C++: https://learn.microsoft.com/de-de/cpp/parallel/openmp/openmp-simd?view=msvc-170#openmp-simd-in-visual-c