我试图以并行模式运行LIBSVM,但我的问题一般是在OpenMP中.根据LIBSVM常见问题解答,我使用#pragma调用修改了代码以使用OpenMP.我还通过添加-fopenmp参数修改了Makefile(对于un*x),因此它变为:
CFLAGS = -Wall -Wconversion -O3 -fPIC -fopenmp
Run Code Online (Sandbox Code Playgroud)
代码汇编得很好.我检查(因为它不是我的电脑)是否安装了OpenMP:
/sbin/ldconfig -p | grep gomp
Run Code Online (Sandbox Code Playgroud)
并看到它是 - 可能安装的:
libgomp.so.1 (libc6,x86-64) => /usr/lib64/libgomp.so.1
libgomp.so.1 (libc6) => /usr/lib/libgomp.so.1
Run Code Online (Sandbox Code Playgroud)
现在; 当我运行程序时,我没有看到任何速度改进.此外,当我检查"顶部"时,该进程最多使用%100 CPU(有8个内核),也没有CPU瓶颈(只有一个用户使用%100 CPU),我期待看到超过%100(或不同的指标)该进程正在使用多个核心.
有没有办法检查它是否正在运行多个核心?
你可以使用这个功能omp_get_num_threads().它将返回程序使用的线程数.