标签: gnu-parallel

GNU并行负载平衡

我试图找到一种方法来在群集上执行CPU密集型并行作业.我的目标是为每个核心安排一个作业,以便每个作业有望在计划后获得100%的CPU利用率.这是迄今为止所提出的:

FILE build_sshlogin.sh

#!/bin/bash

serverprefix="compute-0-"
lastserver=15
function worker {
    server="$serverprefix$1"; 
    free=$(ssh $server /bin/bash << 'EOF'
        cores=$(grep "cpu MHz" /proc/cpuinfo | wc -l)
        stat=$(head -n 1 /proc/stat)
        work1=$(echo $stat | awk '{print $2+$3+$4;}')
        total1=$(echo $stat | awk '{print $2+$3+$4+$5+$6+$7+$8;}')
        sleep 2;
        stat=$(head -n 1 /proc/stat)
        work2=$(echo $stat | awk '{print $2+$3+$4;}')
        total2=$(echo $stat | awk '{print $2+$3+$4+$5+$6+$7+$8;}')

        util=$(echo " ( $work2 - $work1 ) / ($total2 - $total1) " | bc -l );
        echo " $cores * (1 - $util) " …
Run Code Online (Sandbox Code Playgroud)

linux parallel-processing bash cluster-computing gnu-parallel

3
推荐指数
1
解决办法
1511
查看次数

在没有root权限的情况下安装GNU parallel

编辑2

尝试并行运行后,当我同时运行parallel源代码时,我在终端上获得以下内容/homedtic/gsantamaria/parallel/bin/parallel:

perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
    LANGUAGE = "en_US:en",
    LC_ALL = (unset),
    LC_PAPER = "en_GB.UTF-8",
    LC_ADDRESS = "en_GB.UTF-8",
    LC_MONETARY = "en_GB.UTF-8",
    LC_NUMERIC = "en_GB.UTF-8",
    LC_TELEPHONE = "en_GB.UTF-8",
    LC_IDENTIFICATION = "en_GB.UTF-8",
    LC_MEASUREMENT = "en_GB.UTF-8",
    LC_TIME = "en_GB.UTF-8",
    LC_NAME = "en_GB.UTF-8",
    LANG = "en_US.UTF-8"
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
Run Code Online (Sandbox Code Playgroud)

注意:即使在上述输出之后,该过程仍在运行.

编辑1:

我的pwd是/homedtic/gsantamaria/parallel-20100424,我跑了

  • ./configure --prefix=/homedtic/gsantamaria/parallel (注意 …

unix linux parallel-processing bash gnu-parallel

3
推荐指数
1
解决办法
3094
查看次数

如何在CentOS 7上安装GNU parallel(noarc.rpm)

我想在Centos 7上安装GNU parrallel没有太多信息可以找到.有人能解释我怎么做吗?这是我发现的一些有用的信息

rpm gnu-parallel centos7

3
推荐指数
1
解决办法
9659
查看次数

带有多个变量的 GNU Parallel

我刚开始使用 gnu-parallel。我正在尝试与几个变量并行进给。假设我有一个包含以下内容的文本文件 (foo.txt),

> cat foo.txt
a b c
d e f
Run Code Online (Sandbox Code Playgroud)

现在,如果我运行以下命令,

> range=$(eval echo {10..15})
> parallel -a foo.txt --colsep=' ' echo {} {#} {1} {2} {3} ::: $range
Run Code Online (Sandbox Code Playgroud)

而不是得到,

10 1 a b c
11 2 a b c
12 3 a b c
13 4 a b c
14 5 a b c
15 6 a b c
10 7 d e f
11 8 d e f
12 9 d e f
14 11 d …
Run Code Online (Sandbox Code Playgroud)

bash gnu-parallel

3
推荐指数
1
解决办法
51
查看次数

如何在bash中将数字序列重定向到并行

我想并行化 curl 请求,我在这里使用了代码。我想使用的输入是使用生成的一系列数字,seq但重定向不断给我错误,比如输入不明确。

这是代码:

#! /bin/bash

brx() {
  num="$1"
  curl -s "https://www.example.com/$num"
}
export -f brx

while true; do
  parallel -j10 brx < $(seq 1 100)
done
Run Code Online (Sandbox Code Playgroud)

我尝试使用 < `seq 1 100` 但这也不起作用。有谁知道我怎么能解决这个问题?

bash gnu-parallel

3
推荐指数
1
解决办法
47
查看次数

仅在 gnu 并行运行所有作业后才执行命令

我有 bash 文件 -

cat input.txt | parallel -j4 'python {}'

cp -r outputs /home/usr/my_outputs
Run Code Online (Sandbox Code Playgroud)

我只想在所有作业完成执行后才复制outputs到。my_outputs目前,它看起来像parallel立即返回(启动作业后),然后cp -r立即执行,但我想在复制之前等待作业完成执行。我该怎么做呢?谢谢!

编辑:input.txt 就像 -

run1.py -n 5 
run2.py -n 5 
run3.py -n 5 
run4.py -n 5 
Run Code Online (Sandbox Code Playgroud)

bash gnu-parallel

3
推荐指数
1
解决办法
658
查看次数

在gnu并行文件I/O.

我有一个程序只需一个参数.我正在使用gnu parallel来对此参数执行参数扫描.每次运行都会生成一个结果,我想将所有结果附加到单个文件中,比如Results.txt.

这样做的正确方法是什么?

我不应该让每个实例打开文件并写入它,因为这可能会产生冲突并且还会破坏结果的顺序.我能想到这样做的唯一方法是让每个运行在具有唯一名称的文件中生成其输出,然后,当gnu并行完成运行时,使用脚本将结果合并到单个文件中.

  1. 有没有更简单的方法来实现这一目标?
  2. 当多个实例写入/读取同一文件时会发生什么?gnu并行创建多个副本,每个实例一个副本,就像stdout和stderror一样吗?

谢谢

parallel-processing file-io gnu-parallel

2
推荐指数
1
解决办法
667
查看次数

使用GNU并行加速巨大目录树上的find命令的最佳方法是什么?

我一直在使用GNU并行一段时间,主要是为了grep大文件或者在每个命令/ arg实例很慢并且需要跨核心/主机分散时为各种参数运行相同的命令.

跨多个核心和主机也可以做的一件事就是在大型目录子树上查找文件.例如,像这样:

find /some/path -name 'regex'

如果/some/path包含许多文件和包含许多文件的其他目录,则需要很长时间.我不确定这是否容易加速.例如:

ls -R -1 /some/path | parallel --profile manyhosts --pipe egrep regex

想到这样的东西,但ls想要搜索的文件会很慢.那么加快这样一个发现的好方法是什么?

linux parallel-processing bash gnu-parallel

2
推荐指数
1
解决办法
3160
查看次数

GNU进程的并行超时

我想在这个命令中使用GNU Parallel:

seq -w 30 | parallel -k -j6 java -javaagent:build/libs/pddl4j-3.1.0.jar -server -Xms8048m -Xmx8048m fr.uga.pddl4j.planners.hsp.HSP -o pddl/benchmarks_STRIPS/benchmarks_STRIPS/ipc1/movie/domain.pddl -f pddl/benchmarks_STRIPS/benchmarks_STRIPS/ipc1/movie/p{}.pddl -i 8 '>>' AstarMovie.txt
Run Code Online (Sandbox Code Playgroud)

我在java程序中有600秒的超时但并行不执行它.流程可以运行2,3,4或更多小时,永不停止.

我在网上尝试了基于GNU教程的命令,但它也不起作用:

seq -w 30 | parallel -k --timeout 600000 -j6 java -javaagent:build/libs/pddl4j-3.1.0.jar -server -Xms2048m -Xmx2048m fr.uga.pddl4j.planners.hsp.HSP -o pddl/benchmarks_STRIPS/benchmarks_STRIPS/ipc1/movie/domain.pddl -f pddl/benchmarks_STRIPS/benchmarks_STRIPS/ipc1/movie/p{}.pddl -i 8 '>>' AstarMovie.txt
Run Code Online (Sandbox Code Playgroud)

我在教程中看到GNU Parallel使用毫秒 - 所以600000是10分钟,这是我需要的但是在12分钟之后该过程仍在运行.我需要6个进程一次运行,每个进程最多10分钟.

任何帮助都会很棒.谢谢.

编辑:为什么人们觉得需要编辑"600秒"到"600秒"等小变化的帖子?停止为业力做这件事..

parallel-processing gnu-parallel

2
推荐指数
1
解决办法
1086
查看次数

GNU Parallel中的数学

我要做的一件事就是在GNU Parallel中使用{%}选项进行一些数学运算

cat short | parallel -j 2 echo my_prog ----in {} ----out {/.}.extension ----gpu {= {%}+1 =} {= {%}-1 =}
Run Code Online (Sandbox Code Playgroud)

(我在前面的额外破折号in,outgpu以防万一.)

内显示的数学{= =}是所有我需要做的,我只是不知道我知道如何将它与写--rpl--parens

{= =} 是可以在GNU parallel中编写Perl表达式的空间.

此外我的程序没有在这里运行,我只是回显输出,看看是否一切都是正确的.

有人可以解释如何在命令中执行这个简单的数学运算吗?

我的错误是这样的:

parallel: Error: Cannot use {%}+1 : Missing right curly or square bracket at (eval 13) line 2, at end of line
syntax error at (eval 13) line 2, at EOF
Run Code Online (Sandbox Code Playgroud)

bash perl gnu-parallel

2
推荐指数
1
解决办法
322
查看次数