【发布时间】:2023-03-14 03:27:01
【问题描述】:
我想启动一个单独的作业,它接受两个参数的输入,并使用 GNUparallel 在 CPU 的 128 个线程之间拆分其执行。我会解释我做了什么以及我是如何做到的,并寻求帮助。
我有一个 bash 脚本“job.sh”,我在其中定义了两个变量并启动了一个作业
#!/bin/bash
first=70
second=10
./executable $((first-1)) $second
echo "$first $second"
现在我想使用 GNU 并行将这项繁重的工作拆分到我正在使用的服务器的 CPU 的 128 个线程中。
阅读文档后,我尝试将行./executable $((first-1)) $second替换为parallel -j+128 ./executable $((first-1)) $second,我尝试如下运行:
user@server$ nohup bash job.sh&
作业失败。有人知道如何使用 GNU 并行运行可执行文件吗?
【问题讨论】:
-
您想以相同的参数 (
./executable 69 10) 启动所有作业,还是应该将第一个参数 (69) 始终减一为 (6)? -
工作是一个; 69 和 10 是我单作业的输入参数;我只想将工作拆分为 64 个线程。
-
您只想并行运行
./executable 69 1064 次? -
不,我想运行一次,但是将这个单一进程的执行分配在64个线程中。
-
从我的角度来看,您必须在 ./executable 中实现多线程。
标签: bash multithreading process nohup gnu-parallel