gpt4 book ai didi

c++ - 关于线程数的奇怪现象

转载 作者:行者123 更新时间:2023-11-28 01:19:52 25 4
gpt4 key购买 nike

我的 CPU 有 2 个物理内核,并且支持超线程。因此,我认为我可以管理 4 个线程。 (4 个逻辑核心)但是,使用 openmp,我可以生成更多的内核。很奇怪。

我是并行编程的新手,我了解到设置我想使用的线程数的方法很少。我在下面使用了两种方法。

  1. omp_set_num_threads(4);
  2. #pragma omp praralel num_threads(4);
#pragma omp parallel num_threads(100)
{
printf("%d\n", omp_get_thread_num());
#pragma omp for
/* code I wanna parallelize */
}

我觉得奇怪的是,我的CPU逻辑核心数是4,但是为什么omp_get_thread_num()返回0到99。我觉得不可能,是什么意思100#pragma omp parallel num_threads(100) 中?

最佳答案

您可以拥有比内核更多的线程。哪个线程运行到哪个 CPU 核心取决于操作系统(在 Windows 中,您可以设置关联)。操作系统将根据其调度程序运行您的线程。

核心数实际上是可以同时运行的线程数。

如果你有两个线程,每个线程需要 1 秒,而你只有 1 个核心,那么它们将在大约 2 秒内完成,如果你有 2 个核心(并且它们并行运行),它们将在大约 1 秒内完成第二。

关于c++ - 关于线程数的奇怪现象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56981066/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com