我试图通过Visual Studio 2019在应用程序中启用OpenMP支持,但最终出现了以下代码的高CPU问题:
omp_set_dynamic(0);
omp_set_num_threads(omp_get_max_threads());
#pragma omp parallel for
//CPU intensive operation
我可以通过将系统环境变量OMP_WAIT_POLICY
设置为PASSIVE
或将GOMP_SPINCOUNT
设置为0
来解决这个高CPU问题。
但是,这里的请求是在运行时使用类似omp_set_wait_policy("passive")
的东西设置这个变量。就我所阅读的OpenMP文档而言,我没有看到任何这样的运行时API可用。
是否有其他解决方案来避免此问题?
1条答案
按热度按时间c0vxltue1#
可以在调用OpenMP库之前立即从C代码设置环境变量,也可以使用Visual Studio中的POSIX
putenv
函数existing。例如,在
main()
函数的开头设置它: