2

编译以下代码:

#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应该在并行区域之外调用它是否正确?这是一个错误吗?

4

1 回答 1

5

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

于 2013-10-21T23:04:37.067 回答