instalar - Cómo comprobar la versión de OpenMP en Linux
openmp download (3)
Aquí hay un programa corto de C ++ 11 para mostrar su versión de OpenMP; También cubre la versión 4.5 que se lanzó en noviembre de 2015.
#include <unordered_map>
#include <cstdio>
#include <omp.h>
int main(int argc, char *argv[])
{
std::unordered_map<unsigned,std::string> map{
{200505,"2.5"},{200805,"3.0"},{201107,"3.1"},{201307,"4.0"},{201511,"4.5"}};
printf("We have OpenMP %s./n", map.at(_OPENMP).c_str());
return 0;
}
y compilarlo con:
g++ -std=c++11 -fopenmp foobar.cpp
Me pregunto cómo verificar la versión de OpenMP en una máquina remota con Linux.
Tampoco sé dónde está instalado.
Necesitas verificar tu versión de gcc
usando
gcc --version
y luego vea la tabla (incompleta) a continuación (cuya información se recopila de este artículo de Wiki y de esta página web del sitio web oficial de OpenMP):
| gcc version | OpenMP version | Languages | Offloading |
|-------------|----------------|-----------------|------------|
| 4.2.0 | 2.5 | C | |
| 4.4.0 | 3.0 | C | |
| 4.7.0 | 3.1 | C | |
| 4.9.0 | 4.0 | C, C++ | |
| 4.9.1 | 4.0 | C, C++, Fortran | |
| 5 | | | Yes |
| 6.1 | 4.5 | C, C++ | |
Las entradas en blanco están ahí porque no encontré la información correspondiente.
Parece que la especificación C / C ++ para OpenMP no proporciona una forma directa de hacer esto mediante programación. Así que tienes que revisar los documentos para la versión de tu compilador.
gcc --version ## get compiler version
Para GCC, este es un buen recurso (no menciona las versiones más recientes de GCC): http://gcc.gnu.org/wiki/openmp :
A partir de GCC 4.2, el compilador implementa la versión 2.5 del estándar OpenMP y desde la versión 4.4 implementa la versión 3.0 del estándar OpenMP. El OpenMP 3.1 es compatible desde GCC 4.7.
Editar
Después de intentar un poco más, conseguí lo siguiente para trabajar. Al menos da una indicación de la versión OpenMP, aunque aún requiere que busques algo.
$ echo |cpp -fopenmp -dM |grep -i open
#define _OPENMP 200805
Puede ir aquí ( http://www.openmp.org/specifications/ ) para descubrir la asignación entre la fecha proporcionada y el número de versión real de OpenMP.
En las implementaciones que admiten un preprocesador, el nombre de la macro _OPENMP se define para tener el valor decimal aaaam donde yyyy y mm son las designaciones de año y mes de la versión de la API de OpenMP que admite la implementación.