在GCC 4.8.2中缺少OpenMP 4功能

时间:2013-10-21 22:57:15

标签: c++ gcc g++ openmp

编译以下代码:

#include <iostream>                                                             
#include <omp.h>                                                                

int main(int argc, char *argv[])                                                
{                                                                               
  std::cout << omp_get_default_device() << '\n';                                
  return 0;                                                                     
}

使用GNU G ++ 4.8.2,使用命令:

g++ -fopenmp test.cpp

导致以下错误消息:

test.cpp: In function ‘int main(int, char**)’:
test.cpp:6:39: error: ‘omp_get_default_device’ was not declared in this scope
std::cout << omp_get_default_device() << '\n';

我是否认为omp_get_default_device应该可以在并行区域之外调用?这是一个错误吗?

1 个答案:

答案 0 :(得分:5)

omp_get_default_device似乎已添加到OpenMP 4.0中(here是3.1规范,但没有该功能)。 GCC 4.8仅支持3.1版,但GCC 4.9中将支持4.0:http://gcc.gnu.org/wiki/openmp