gpt4 book ai didi

c - 多线程与使用大量 CPU 的多处理

转载 作者:行者123 更新时间:2023-11-30 19:50:57 25 4
gpt4 key购买 nike

我有 C 代码,我希望它能像在 Windows 上一样快速运行

此代码在数字范围内运行,并且对于每个数字,执行大量的 CPU 工作。

每个数字都独立于其他数字。

因为我希望它速度最快,所以我想在我的所有 CPU 核心上运行它。

我现在所做的是,例如我需要在 0-1000 范围内运行,并且我有 10 个核心,我为我的 C 代码创建 10 个进程,并将它们之间的工作分开。

进程 1 在 0-100 范围内运行,进程 2 在 100-200 范围内运行,依此类推。

Os 知道将每个进程分离到不同的核心(因为每个进程使用大量 cpu),所以当我查看任务管理器时,我的所有核心都是 100% 使用率。

这样每个进程运行大约5个小时(因此分配时间可以忽略不计)

如果我为每个核心创建线程(而不是为每个核心创建进程),我知道操作系统会知道将线程与核心分开,这样会更快吗?

也许进程有不同的调度程序或其他东西,所以线程会运行得更快。

也许很多进程会减慢操作系统的速度,而 1 个进程中有很多线程

最佳答案

If I will create thread for each core(not process for each core) , I know that os will know to seperate thread to cores, is that will be faster?

操作系统知道如何以有效的方式将线程分配给核心 - 但是,操作系统也知道如何以有效的方式将进程分配给核心,因此您不太可能仅仅通过从多进程模块到多线程模型。也就是说,您已经获得了您希望获得的好处。

对于这样的问题,您可能最好寻找优化处理循环的方法(例如,也许您可​​以使用 SSE 指令,或者找到更有效的算法?)

关于c - 多线程与使用大量 CPU 的多处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53198329/

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