问题标签 [gnu-parallel]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
5174 浏览

hpc - GNU 并行 --jobs 选项在集群上使用多个节点,每个节点有多个 cpu

我正在使用 gnu 并行在每个节点有 2 个 CPU 的高性能 (HPC) 计算集群上启动代码。该集群使用 TORQUE 便携式批处理系统 (PBS)。我的问题是澄清 GNU 并行的 --jobs 选项在这种情况下如何工作。

当我在没有 --jobs 选项的情况下运行调用 GNU 并行的 PBS 脚本时,如下所示:

看起来它每个核心只使用一个 CPU,并且还提供了以下错误流:

这看起来像是每个节点的一个错误。我不明白第一部分(bash: parallel: command not found),但第二部分告诉我它正在使用一个节点。

当我将选项添加-j2到并行调用时,错误消失了,我认为每个节点使用两个 CPU。我仍然是 HPC 的新手,所以我检查这一点的方法是从我的代码中输出日期时间戳(虚拟 m​​atlab 代码需要 10 秒才能完成)。我的问题是:

  1. --jobs是否正确使用了该选项?指定是否正确,-j2因为我每个节点有 2 个 CPU?或者我应该使用-jN其中 N 是 CPU 的总数(节点数乘以每个节点的 CPU 数)?
  2. 似乎 GNU 并行尝试自行确定每个节点的 CPU 数量。有没有办法让我正常工作?
  3. 消息有什么意义bash: parallel: command not found吗?
0 投票
1 回答
1627 浏览

parallel-processing - 如何在多台计算机上使用 GNU 并行

我想在我的两台计算机上使用 GNU 并行。我成功地在一台计算机上并行运行,但我无法在远程计算机上并行运行。

版本:本地:parallel-20140222,远程:parallel-20130522。我启用了无密码 ssh 登录。

parallel -j+0 --eta 'muscle -in {} -out {.}.aln -quiet' < list

但是当我尝试使用以下命令在远程计算机上“并行”运行时,

1) 时间并行 -j+0 --eta -Svaramesh@10.117.173.5,: -transfer, --return {.}.aln --cleanup 'muscle -in {} -out {.}.aln -quiet' <列表

2) 时间并行 -j+0 --eta -S10.117.173.5,: -transfer, --return {.}.aln --cleanup 'muscle -in {} -out {.}.aln -quiet' <列表

3) 时间并行 -j+0 --eta -S :,10.117.10.5 -transfer, --return {.}.aln --cleanup 'muscle -in {} -out {.}.aln -quiet' < list

他们都给出了以下错误

0 投票
1 回答
1753 浏览

linux - BASH...GNU 并行

绞尽脑汁并搜索谷歌以找到一种方法来获取sem带有超时选项的命令,以便在超时时给我一个退出代码。它不一定要通过sem,这只是一种痛苦,因为我最终需要根据是否:

  • 我从被调用的脚本中得到一个 OK 响应

  • 我从被调用的脚本中得到什么,但没问题

  • 通话超时

在这种情况下,信号量用于限制对脚本的调用,我将文件名列表传递给传出消息队列。正如您在下面的粗略测试示例中看到的那样,我能够处理前两种情况,但我无法在我的一生中得到任何输出,我可以从因超时终止的进程中使用(即outputtest.shsleep 6; echo testings

有什么提示吗?

0 投票
2 回答
809 浏览

cluster-computing - 并行运行多个串行依赖的作业

我在基于 PBS 的集群上运行一些 CFD 模拟。我将运行大量案例,因此想在集群节点上进行预处理。我需要做两个步骤,首先进行网格划分,当网格划分完成后,我想运行网格划分例程。为了避免手动工作,我想在 pbs jobscript 中对此进行编程。

我可以通过运行以下命令并行运行所有案例的网格划分:

其中 hep 是网格划分程序!

我还可以运行网格任务,然后通过运行进行分区:

但是我怎样才能将两者结合起来呢?我想并行运行最后一个命令的 8 个实例,这样当 tst_1.igg 的网格化完成时,无论其他实例的状态如何,它都会继续对 tst_1.igg 进行分区。

最好的问候,亚当

0 投票
1 回答
4703 浏览

ssh - 并行远程同步

我正在尝试通过 ssh 并行运行 rsync 以在两台机器之间传输文件以进行评估。我想看看与单个 rsync 进程相比,我能获得多快。

我尝试了这两种解决方案: https ://wiki.ncsa.illinois.edu/display/~wglick/Parallel+Rsync但没有取得很大成功。 https://gist.github.com/rcoup/5358786(我无法让它工作)

基于第一个链接,我运行如下命令:

我得到了传输的文件,但它似乎不能很好地工作......在这种情况下,它将为基本文件夹中的每个文件和文件夹运行一个进程,但是当它找到一个文件夹时,它将传输其中的所有内容文件夹仅使用 1 个进程。

我尝试使用 find -type f,但我遇到了问题,因为我失去了文件层次结构。

有谁有一些方法可以做我想做的事?(在 ssh 上并行使用 rsync,同时保持文件和文件夹层次结构)。

0 投票
2 回答
4319 浏览

linux - Perl 安装错误 ELF 类的问题:ELFCLASS32

我想gnu_parallel在我的一台服务器上运行(nproc=48)。当我尝试运行命令时,

我遇到了一些错误,

我不想在服务器上重新安装 Perl,因为有很多服务器在使用它。

我可以做任何不会损害我服务器上运行的当前应用程序的事情。

请告诉我一种并行运行的方法。

编辑:

否则我可以使用 App::Fatpacker 吗?解决问题?

编辑 2

我尝试使用 Fatpacker 失败了。

编辑:3 我尝试安装 perlbrew:得到错误 ELFClASS 的以下错误

0 投票
2 回答
4528 浏览

file - 将 STDIN 拆分为多个文件(并尽可能压缩它们)

我有将数据流输出到其 STDOUT 的程序(gawk)。处理的数据实际上是 10 GB。我不想将它保存在单个文件中,而是将其拆分为多个块,并可能在保存之前对每个块应用一些额外的处理(如压缩)。

我的数据是一系列记录,我不想将记录分成两半。每条记录都匹配以下正则表达式:

^\{index.+?\}\}\n\{.+?\}$

或者为了简单起见,可以假设两行(首先是不均匀的,然后即使从流的开头编号)总是记录。

我可以吗:

  • 使用一些标准的 linux 命令通过定义块的首选大小来拆分 STDIN?不需要精确,因为记录可变大小不能保证。或者,如果定义为记录数。按大小是不可能的
  • 压缩每个块并存储在一个文件中(名称中有一些编号,如 001、002 等)

我已经意识到像GNU 并行这样的命令,csplit但不知道如何将它们组合在一起。如果上面解释的功能可以在不为其编写自定义 perl 脚本的情况下实现,那就太好了。然而,这可能是另一种最后的解决方案,但同样不确定如何最好地实施它。

0 投票
1 回答
1986 浏览

shell - GNU 与 rsync 并行

我正在尝试使用withrsync并行运行一些实例。我正在运行的命令是这样的:sshGNU parallel

/tmp/tempfolder包含带有前缀的文件chunck,它们包含实际的文件列表。

使用此命令,我得到了 4 个调用rsync,但它们需要一段时间才能开始运行,并且不会一起启动,也不会并行运行。

我究竟做错了什么?

0 投票
1 回答
453 浏览

bash - Matlab 和 gnu 并行

我想在 matlab 中利用gnu-parallel.

在我的文件夹中,我有test.m文件:

我习惯以matlab这种方式启动多个并行会话:

但是如果我想修改这个脚本gnu-parallel呢?我试过:

但这根本不起作用。对我来说使用gnu-parallel应该会有很大帮助,因为它能够比我以前的解决方案更好地平衡计算和处理。

一些想法?

0 投票
1 回答
309 浏览

bash - 我想从 GNU Parallel 在 Bash 中调用的子例程(函数)返回值

所以我希望看到 1 2 3 4 5。注意,这是一个简单的案例,我知道您可以通过多种方式做到这一点。但是,我需要在测试中获取返回的结果。