gpt4 book ai didi

c++ - 在具有 n 个内核的机器中确定要触发的线程数的最佳方法是什么? (C++)

转载 作者:IT老高 更新时间:2023-10-28 21:50:00 25 4
gpt4 key购买 nike

我有一个 vector<int>有 10,000,000(1000 万)个元素,我的工作站有四个核心。有一个函数,叫做ThrFunc , 对整数进行运算。假设 ThrFunc 的运行时对于 vector<int> 中的每个整数大致相同。

我应该如何确定要触发的最佳线程数?答案是否就像元素数量除以核心数量一样简单?还是有更微妙的计算?

编辑以提供额外信息

  • 无需阻塞;每个函数调用只需要只读访问

最佳答案

最佳线程数可能是您机器中的内核数或内核数乘以 2。

用更抽象的术语来说,您想要尽可能高的吞吐量。获得最高吞吐量需要线程之间的争用点最少(因为最初的问题是可并行化的)。争用点的数量可能是共享一个内核的线程数或两倍,因为一个内核可以运行一个或两个逻辑线程(两个具有超线程)。

如果您的工作负载使用的资源少于四个可用资源(推土机上的 ALU?硬盘访问?)那么您应该创建的线程数将受此限制。

找出正确答案的最佳方法是对所有硬件问题进行测试并找出答案。

关于c++ - 在具有 n 个内核的机器中确定要触发的线程数的最佳方法是什么? (C++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8888834/

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