6
を使用しています。私はグラムでそれをコンパイルする場合、コードを実行時に4つのコアを使用しています++Linux上でクラン+ OpenMPのは、私は次のコードを持っている唯一の1 CPUコア
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++ -fopenmp -std=c++11 main.cpp
もし私が私が設定したいずれの場合も
clang++-3.7 -fopenmp -std=c++11 main.cpp
:
コードは1つだけコアを使用して、実行時に、次に打ち鳴らす++ 3.7でコンパイルOMP_NUM_THREADS=4
両方のコンパイラは、Debianのテストリポジトリからインストールされています:
sudo apt-get install g++-5
sudo apt-get install clang-3.7
ので、打ち鳴らすには1つのコアだけを使用して、なぜ任意のアイデア?前もって感謝します。
こんにちは。このオプションを使うと、 '/ usr/bin/ld:-lompが見つかりません。 'というエラーが出ます。私も '-fopenmp = libgomp'を使ってみました。このフラグを使用すると、コードはコンパイルされますが、それでも1つのCPUコアが使用されます。 – AstrOne
正直なところ、IDKは間違っていますが、私はソースからclangをインストールするか、パッケージ 'libiomp-dev'をインストールして '-fopenmp = libomp'または' -fopenmp = libiomp5'を使用しようとします。 – Gilles
libompどういうわけかintel ompライブラリにバンドルされています。さらに、このパッケージは現在、Debianリポジトリで大きな変遷を遂げています。さらに悪化させるために、テストリポジトリから削除されています。 (しかしそれはsid上に存在します)。私は待っているか、単にsidバージョンを使用する必要があります。 :)助けてくれてありがとう私の友人! – AstrOne