gpt4 book ai didi

parallel-processing - 数据多核并行计算,随程序独立运行

转载 作者:行者123 更新时间:2023-12-03 23:56:51 24 4
gpt4 key购买 nike

我有一个 Fortran 模拟程序,它从 .dat 文件中获取输入。该文件有 100.000 行,需要很长时间才能运行。该程序采用第一行,运行所有模拟并将结果写入 .out 并传递到下一行。我有一台带 16 个 cpu 的计算机,那么我该怎么做才能将我的数据分成 16 个部分并在每个 cpu 中单独运行它?我在一台装有 ubuntu 的机器上运行。每条线都完全独立于另一条线。例如,我的数据是 HeadData10000.dat,然后我有一个文件 simulation.ini,在这种情况下,输入数据的名称为:HeadData10000.dat,输出数据的名称。所以文件 simulation.ini 看起来像这样

HeadData10000.dat
outputdata.out

现在我有两台计算机,所以我将 HeadData10000.dat 分成两个文件,并为每个输入数据执行两个 simulation.ini,然后在每台计算机上运行它:./simulation.exe<./simulation。初始值。

最佳答案

假设您的 100,000 个工作列表名为 "jobs.txt" 并且如下所示:

JobA
JobB
JobC
JobD

你可以运行这个:

parallel 'printf "{}\n{.}.out" | ./simulation.exe' < jobs.txt 

如果您想试运行一下,看看不做任何事情会发生什么:

parallel --dry-run 'printf "{}\n{.}.out" | ./simulation.exe' < jobs.txt 

示例输出

printf "JobA\nJobA.out" | ./simulation.exe
printf "JobB\nJobB.out" | ./simulation.exe
printf "JobC\nJobC.out" | ./simulation.exe
printf "JobD\nJobD.out" | ./simulation.exe

如果您有多个服务器可用,请考虑使用 -S 参数到 GNU Parallel 以将作业分布到机器上。另外,查看 --eta--bar 参数以获取进度报告。

我使用 printf "line1\n line2" 生成两行输入,以避免必须创建和稍后删除 100,000 个文件。

默认情况下,GNU Parallel 将保持每个 CPU 内核运行 1 个作业,因此在 16 核机器上始终运行 16 个作业,但您可以将其更改为 8 个,如果你想用 parallel -j 8。您还可以指定要在第二台(及后续)机器上运行的作业数。

关于parallel-processing - 数据多核并行计算,随程序独立运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60072034/

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