我有以下代码:
int main(int argc, char** argv)
{
const int64_t N = 10000000000;
float* data = new float[N];
int64_t i;
omp_set_dynamic(0);
omp_set_num_threads(4);
#pragma omp parallel for
for(i = 0; i < N; ++i)
data[i] = i*i;
return 0;
}
如果我用g ++编译它,那么在运行时代码使用4个核心:
g++ -fopenmp -std=c++11 main.cpp
如果我用clang ++ 3.7编译它,那么在运行时代码只使用1个核心:
clang++-3.7 -fopenmp -std=c++11 main.cpp
在这两种情况下,我都设置了:
OMP_NUM_THREADS=4
两个编译器都是从Debian测试库中安装的:
sudo apt-get install g++-5
sudo apt-get install clang-3.7
那么,为什么clang只使用一个核心的任何想法?提前谢谢。
答案 0 :(得分:5)