我应该针对 R 中的并行计算使用多个物理内核还是多个线程?
Should I aim for multiple physical cores or multiple threads for parallel computing in R?
我是并行计算的新手,这可能是一个小问题。我在考虑选择哪个处理器进行并行计算(在单机上)?特别是,我想知道我是否应该瞄准大量(物理)内核或大量线程?
我正在 Windows 上使用 R(程序包 parallel
)。通常,数据集并不大,因此限制不是内存,而是独立处理运行数据的数量和持续时间。
我知道 parallel
使用逻辑核心(即硬件线程),但这些线程并不能真正并行工作,因为它们共享“执行资源”https://en.wikipedia.org/wiki/Hyper-threading。那么,例如,4 个(物理)内核和 1 个线程是否会比 2 个(物理)内核和每个 2 线程(即 4 个逻辑内核)产生更高的速度(吞吐量)?
也非常欢迎对特定处理器提出建议。
对于内存或 I/O 密集型工作负载,支持 HT 的处理器以更低的成本提供更好的性能和能效。对于计算密集型工作负载,由于额外的逻辑线程而可能获得的收益会减少。您的应用程序似乎是计算密集型的。如果那是系统必须执行的唯一一种工作负载,您可以寻找具有更多物理核心处理器的系统。
问题是不支持逻辑线程的处理器数量有限。 Intel 的大部分处理器都支持超线程。使用和不使用 HT 处理器的成本差别不大。使用支持 HT 的处理器,系统可以处理更多不同的工作负载。它可以更有效地处理多项任务。
可以通过配置 BIOS 来禁用 HT。
我是并行计算的新手,这可能是一个小问题。我在考虑选择哪个处理器进行并行计算(在单机上)?特别是,我想知道我是否应该瞄准大量(物理)内核或大量线程?
我正在 Windows 上使用 R(程序包 parallel
)。通常,数据集并不大,因此限制不是内存,而是独立处理运行数据的数量和持续时间。
我知道 parallel
使用逻辑核心(即硬件线程),但这些线程并不能真正并行工作,因为它们共享“执行资源”https://en.wikipedia.org/wiki/Hyper-threading。那么,例如,4 个(物理)内核和 1 个线程是否会比 2 个(物理)内核和每个 2 线程(即 4 个逻辑内核)产生更高的速度(吞吐量)?
也非常欢迎对特定处理器提出建议。
对于内存或 I/O 密集型工作负载,支持 HT 的处理器以更低的成本提供更好的性能和能效。对于计算密集型工作负载,由于额外的逻辑线程而可能获得的收益会减少。您的应用程序似乎是计算密集型的。如果那是系统必须执行的唯一一种工作负载,您可以寻找具有更多物理核心处理器的系统。
问题是不支持逻辑线程的处理器数量有限。 Intel 的大部分处理器都支持超线程。使用和不使用 HT 处理器的成本差别不大。使用支持 HT 的处理器,系统可以处理更多不同的工作负载。它可以更有效地处理多项任务。
可以通过配置 BIOS 来禁用 HT。