OMP - 线程数多于处理器数量?

Ben*_*nny 7 c c++ openmp

默认情况下,OpenMP指令:

opm_get_num_threads 给出等同于处理器/核心的线程数.

我有一个8核机器,所以它给了我8个线程.那是最大的吗?如果我故意指定超过8个,我可以获得比8更多的线程吗?

谢谢

Mys*_*ial 9

您可以根据需要设置多个线程:

int threads = 16;
omp_set_num_threads(threads);
Run Code Online (Sandbox Code Playgroud)

http://msdn.microsoft.com/en-US/library/e16bady3%28v=vs.80%29

但请确保您了解使用更多线程的缺点,而不是系统中的逻辑核心.

  • @LexiR处理线程时有开销:调度,上下文切换,缓存争用等......并不是说使用比逻辑内核更多的线程永远不会更好.但是如果它被误用会有所了解会很有帮助. (5认同)
  • 谨慎分享实际存在的弊端,而不是模糊地暗指他们? (3认同)
  • @HristoIliev这取决于OP.我不喜欢触摸环境变量 - 特别是如果不同的应用程序具有不同的最佳线程数. (3认同)
  • 为什么要修复代码中的线程数?好的旧环境变量`OMP_NUM_THREADS`怎么样? (2认同)