小编Ste*_*och的帖子

GNU parallel --jobs选项在群集上使用多个节点,每个节点有多个cpus

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

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

#PBS -lnodes=2:ppn=2
...
parallel --env $PBS_O_WORKDIR --sshloginfile $PBS_NODEFILE \
  matlab -nodiplay -r "\"cd $PBS_O_WORKDIR,primes1({})\"" ::: 10 20 30 40
Run Code Online (Sandbox Code Playgroud)

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

bash: parallel: command not found
parallel: Warning: Could not figure out number of cpus on galles087 (). Using 1.
bash: parallel: command not found
parallel: Warning: Could not figure out number of cpus on galles108 (). Using 1.
Run Code Online (Sandbox Code Playgroud)

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

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

  1. --jobs正确使用该选项吗?指定是否正确,-j2因为每个节点有2个CPU?或者我应该使用-jN …

hpc gnu-parallel

7
推荐指数
1
解决办法
4017
查看次数

为什么在本教程中使用GNU Parallel --jobs 4选项运行5个作业?

我正在通过GNU Parallel教程工作。在“多个参数”部分中,有以下示例(注意:num30000是一个文本文件,其顺序行上的数字为1到30,000):

为了获得更好的并行性,当满足文件结尾时,GNU Parallel可以在所有并行作业之间分配参数。

并行运行4个作业会将参数的最后一行拆分为4个作业,从而导致总共5个作业:

  cat num30000 | parallel --jobs 4 -m echo | wc -l
Run Code Online (Sandbox Code Playgroud)

输出:

  5
Run Code Online (Sandbox Code Playgroud)

我的问题是:为什么我们期望有5个职位?尽管我不知道这很重要,但我显然遗漏了一点。我预计会有4个工作,因为30,000被4整除。我决定运行以下命令后发布此问题:

cat num30000 | parallel --jobs 4 -m echo | colrm 12
Run Code Online (Sandbox Code Playgroud)

结果是:

1 2 3 4 5 6
23696 23697
25273 25274
26850 26851
28427 28428
Run Code Online (Sandbox Code Playgroud)

在我看来,这就像第一个echo命令传递了前23695个参数一样。然后,将剩余的工作分解为另外4个作业,其参数计数分别为1577、1577、1577和1574。我是否误解了对parallel的调用应该做什么?谢谢!

gnu-parallel

6
推荐指数
1
解决办法
1283
查看次数

Google文档使用逗号导出电子表格值.R中的read.csv()将这些视为因子而不是数字

我是R的新手,我正在尝试使用数字列将公开的Google电子表格读入R数据框.我的问题似乎是导出的电子表格中有大量的逗号,例如"13,061.422".read.csv()函数将此视为一个因素.我尝试过stringsAsFactors = FALSE和colClasses = c(rep("numeric",7))但是都没有用.有没有办法用逗号和小数值将数值强制转换为数值,在read.csv()中或之后当它们被视为R数据帧中的因子时?这是我的代码:

require(RCurl)

myCsv <- getURL("https://docs.google.com/spreadsheet/pub?hl=en_US&hl=en_US&key=0Agbdciapt4QZdE95UDFoNHlyNnl6aGlqbGF0cDIzTlE&single=true&gid=0&range=A1%3AG4928&output=csv", ssl.verifypeer=FALSE)  #ssl.verifypeer=FALSE gets around certificate issues I don't understand.

fullmatrix <- read.csv(textConnection(myCsv))

str(fullmatrix)
Run Code Online (Sandbox Code Playgroud)

这导致:

'data.frame':   4927 obs. of  7 variables:
 $ wave.      : Factor w/ 4927 levels "1,000.8900","1,002.8190",..: 4875 4874 4873 4872 4871 4870 4869 4868 4867 4866 ...
 $ wavelength : Factor w/ 4927 levels "1,000.074","1,000.267",..: 1 2 3 4 5 6 7 8 9 10 ...
 $ d2o        : num  85.2 87.7 86.3 87.6 85.6 ...
 $ di         : …
Run Code Online (Sandbox Code Playgroud)

csv r google-docs

4
推荐指数
2
解决办法
1002
查看次数

标签 统计

gnu-parallel ×2

csv ×1

google-docs ×1

hpc ×1

r ×1