12

並列モードで LIBSVM を実行しようとしていますが、私の質問は一般的に OpenMP にあります。LIBSVM FAQに従って、#pragma 呼び出しでコードを変更して OpenMP を使用しました。また、-fopenmp 引数を追加して Makefile (un*x 用) を次のように変更しました。

CFLAGS = -Wall -Wconversion -O3 -fPIC -fopenmp

コードはうまくコンパイルされます。OpenMPがインストールされているかどうかを確認します(私のPCではないため):

/sbin/ldconfig -p | grep gomp

-おそらく-インストールされていることを確認します。

 libgomp.so.1 (libc6,x86-64) => /usr/lib64/libgomp.so.1
 libgomp.so.1 (libc6) => /usr/lib/libgomp.so.1

今; プログラムを実行しても、速度の向上は見られません。また、「top」でチェックすると、プロセスは最大で %100 CPU (8 コアあり) を使用しており、CPU ボトルネックもありません (%100 CPU 使用率のユーザーが 1 人だけ)。プロセスが複数のコアを使用している %100 (または別の指標)。

複数のコアが動作していることを確認する方法はありますか?

4

2 に答える 2

12

機能を使用できますomp_get_num_threads()。プログラムで使用されているスレッドの数が返されます。

于 2012-05-07T12:00:09.797 に答える