我正在使用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秒才能完成).我的问题是:
--jobs
正确使用该选项吗?指定是否正确,-j2
因为每个节点有2个CPU?或者我应该使用-jN …
我正在通过GNU Parallel教程工作。在“多个参数”部分中,有以下示例(注意:num30000是一个文本文件,其顺序行上的数字为1到30,000):
为了获得更好的并行性,当满足文件结尾时,GNU Parallel可以在所有并行作业之间分配参数。
并行运行4个作业会将参数的最后一行拆分为4个作业,从而导致总共5个作业:
Run Code Online (Sandbox Code Playgroud)cat num30000 | parallel --jobs 4 -m echo | wc -l
输出:
Run Code Online (Sandbox Code Playgroud)5
我的问题是:为什么我们期望有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的调用应该做什么?谢谢!
我是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)