【问题标题】:Fastest way to output to file when using GNU parallel使用 GNU 并行输出到文件的最快方式
【发布时间】:2015-08-20 09:51:21
【问题描述】:

我正在使用并行来并行处理某些非常繁重的脚本。在command1...等中,我基本上是在调用一个 R 文件。

test1.sh:

parallel ::: 'command1 > output1.txt' 'command2 > output2.txt' ...etc

test2.sh:

parallel ::: 'command7 > output7.txt' 'command8 > output8.txt' ...etc

.
.
.
test10

我正在使用 qsub 运行 multiple-nodes.sh,我正在执行这 10 个文件,以便它们在 CPU 上的不同节点(和内核)上运行。需要几个小时才能完成。但是,在multiple-nodes.sh 完成执行后,我没有看到它出现在qstat 中,但是当我检查Linux 中的top 进程时,我仍然看到R 脚本正在运行(command1...等) .

我认为这可能是因为 linux(或者它是并行的)仅在脚本执行完成后才写入文件。但这似乎真的很慢,因为从执行开始到现在已经 15 个小时了,并且进程已经在 qsub 中完成,但是命令仍在顶级进程中运行,并且输出文件正在缓慢写入。文件大小每隔几分钟就会增加一次。

我遇到了Processing a big file using more coresGNU Parallel--files 标签。

所以基本上我有两个问题:

  1. 来自 GNU Parallel 的 Processing a big file using more cores 会比使用 qsub 在 cpu 上的不同节点(和内核)中运行进程更好吗?
  2. --files 会比 Linux 中的 > 运算符更好(更快)写入输出文件吗?

如果提供任何支持代码将非常有帮助。即使它只是对其中一个问题的回答。提前致谢。

【问题讨论】:

    标签: linux file-io parallel-processing qsub gnu-parallel


    【解决方案1】:

    我可以回答 2:速度相同。 --files/--results 的好处是您不必编造文件名。

    【讨论】:

    • 您能以某种理由备份吗?我的意思是,--files 使用什么?它实际上是如何工作的,或者为什么需要同样的时间?
    • --files 和 --results 为 stderr 和 stdout 打开一个重定向文件。出于所有实际目的,它与使用 > 和 2> 重定向输出相同。从技术上讲,它使用 Perl open3 调用来执行此操作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多