我正在使用 OpenMP 对嵌套循环进行多线程处理。由于对这个东西不熟悉,我不确定我是否以正确的方式使用 OpenMP,以便它实际上可以进行并行编程。所以我想知道我是否可以测量使用 OpenMP 的 C++ 程序的性能,以便我可以知道它确实有效并且我走在正确的轨道上?比如有多少线程并行运行以及每个线程完成需要多长时间。
感谢致敬!
#include <omp.h>
...
int target_thread_num = 4;
omp_set_num_threads(target_thread_num);
unsigned long times[target_thread_num];
// Initialize all the times
#pragma omp parallel
{
int thread_id = omp_get_thread_num();
times[thread_id] = start_time();
std::cout << "Thread number: " << omp_get_thread_num() << endl;
times[thread_id] = end_time();
}
...
显然您不需要提供两个计时器函数,但这就是要点。 OMP 功能非常不言自明。还要确保您的环境设置正确并且使用正确的机制进行编译。 g++ 选项是 -fopenmp。在 Visual Studio 上,转到项目设置、C++、语言,然后启用“OpenMP 支持”。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)