作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我想知道如何在 Linux 中加快我的计算速度?例如,我有以下脚本:example.sh
#!/bin/bash
n1=1; n2=1000
while [ $n1 -le $n2 ]
do
cat << EOF > test.f
open (1,file='$n1.txt',form='formatted', status='unknown')
write (1, *) "Hello World!"
stop;end
EOF
gfortran test.f
./a.out
(( n1++ ))
done
如果我执行上面的example.sh,那么它会执行1000次。我原来的 fortran 程序有点大,执行一次需要大约 3 分钟。所以完成我的脚本需要大约 2 天的时间。那么如何使用多 CPU 来加快速度呢?我的系统显示 CPU:8。
最佳答案
GNU Parallel做得很好。
GNU Parallel 可用于使用一台或多台计算机并行执行作业。这消除了管理进程的需要,并为我们提供了一种并行执行二进制文件的方法。
因此,您的脚本(让我们称之为 test.sh)变为
#!/bin/bash
n1=$1
cat << EOF > test.f
open (1,file='$n1.txt',form='formatted', status='unknown')
write (1, *) "Hello World!"
stop;end
EOF
gfortran test.f
./a.out
您现在可以使用“parallel”调用脚本 test.sh,如下所示。
seq 1000 | parallel -j 8 --workdir $PWD ./test.sh {}
-j 8
指定要运行的作业数。这将启动 ./test.sh 1, ./test.sh 2, ./test.sh 3 ... ./test.sh 1000
并确保其中 8 个并行运行。
关于linux - 如何在 Linux 中使用多 CPU 来加快计算速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31691047/
我是一名优秀的程序员,十分优秀!