我试图以并行模式运行LIBSVM,但是我的问题通常是在OpenMP中。根据LIBSVM FAQ,我已经使用#pragma调用修改了代码以使用OpenMP。我还通过添加-fopenmp参数修改了Makefile(对于un * x),因此它变为:

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

该代码可以很好地编译。我检查(因为不是我的电脑)是否通过以下方式安装了OpenMP:
/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使用率的用户),我期望看到的不止于此。 %100(或其他指示器)表明该进程正在使用多个内核。

有没有办法检查它是否在多核上正常工作?

最佳答案

您可以使用函数omp_get_num_threads()。它将返回您程序所使用的线程数。

关于c++ - 如何判断OpenMP是否正常工作?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10481623/

10-11 15:50