gpt4 book ai didi

parallel-processing - 在四个CPU核心/八个CPU线程上执行单个程序

转载 作者:行者123 更新时间:2023-12-02 05:37:29 25 4
gpt4 key购买 nike

我想在四核 i7 CPU 上执行(Java 7)以下算法,以便后者 100% 专用于执行它。

long n = 1000000;
int a = 5;
long sum = 0;

for (long i = 1; i <= n; i ++) {
for (long j = 1; j <= i; j ++) {
for (long k = 1; k <= j; k *= a) {
sum ++;
}
}
}
System.out.println("Sum = " + sum);

我已经利用了手动解决方案(java.util.concurrent.Executorsjava.util.concurrent.FutureTask ...),我将在其中创建四个任务:

  • 第一个将在 1 到 n/4 范围内执行;
  • 第二个将在 (n/4 + 1) 到 n/2 范围内执行;
  • 第三个将在 (n/2 + 1) 到 3n/4 范围内执行;
  • 第四个将在 (3n/4 + 1) 到 n 的范围内执行。

我想知道是否有一个简单/自动的解决方案来命令操作系统(我使用的是 Windows)在执行该程序时专用“所有”可用的 CPU 资源?

最佳答案

我不知道这在 Java 或 Windows 下是否可用。在 UNIX 类型操作系统下的 C/C++ 中,您可以(使用适当的权限)将应用程序的优先级重新设置为负优先级。负优先级通常称为“实时优先级”,因为操作系统不会调整它们,并且它们的优先级将高于(几乎)系统上的其他所有内容。

我认为在 Java 中你能做的最好的事情就是使用 Runtime.getRuntime().availableProcessors() 方法来确定你有多少个处理器,并至少分配那么多线程。

关于parallel-processing - 在四个CPU核心/八个CPU线程上执行单个程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24838198/

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