Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/141.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ OMP-线程数大于处理器数?_C++_C_Openmp - Fatal编程技术网

C++ OMP-线程数大于处理器数?

C++ OMP-线程数大于处理器数?,c++,c,openmp,C++,C,Openmp,默认情况下,OpenMP指令: opm_get_num_threads给出了相当于处理器/内核的线程数 我有一个8核的机器,所以它给我8个线程。这是最高限额吗?如果我故意指定超过8个线程,我可以获得超过8个线程吗 谢谢您可以使用以下工具设置任意数量的线程: int threads = 16; omp_set_num_threads(threads); 但是,请确保您知道使用的线程数超过系统中的逻辑核数的缺点。是否愿意分享这些缺点,而不仅仅是模糊地暗示它们?@LexiR在处理线程时会有开销:调

默认情况下,OpenMP指令:

opm_get_num_threads
给出了相当于处理器/内核的线程数

我有一个8核的机器,所以它给我8个线程。这是最高限额吗?如果我故意指定超过8个线程,我可以获得超过8个线程吗


谢谢

您可以使用以下工具设置任意数量的线程:

int threads = 16;
omp_set_num_threads(threads);


但是,请确保您知道使用的线程数超过系统中的逻辑核数的缺点。

是否愿意分享这些缺点,而不仅仅是模糊地暗示它们?@LexiR在处理线程时会有开销:调度、上下文切换、缓存争用等。。。这并不是说使用更多的线程比使用逻辑内核更好。但是知道如果它被误用会发生什么是很有帮助的。为什么要修正代码中的线程数?好的旧环境变量OMP_NUM_THREADS如何?@HristoIliev这取决于操作。我不喜欢接触环境变量-特别是如果不同的应用程序有不同的最佳线程。有没有办法获得物理内核的数量(即没有SMT/超线程)?