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_deviceOpenMP 4.0で追加されたようです(これは、その機能を持たない 3.1 仕様です)。GCC 4.8 はバージョン 3.1 のみをサポートしますが、4.0 は GCC 4.9 でサポートされます: http://gcc.gnu.org/wiki/openmp

于 2013-10-21T23:04:37.067 に答える