Matlab在服务器集群上跑的各种坑

it2026-03-09  4

在集群上

利用pkurun指令,执行maltab的脚本。比如执行test.m文件

function test(file) disp(file); end pkurun matlab -nodisplay -r "test.m"

这样是错的,因为在Command Prompt上运行matlab脚本,会把"."这个认为是一个操作符,因此会分别搜索 test 和 m 这就扯淡了 正确方法是

pkurun matlab -nodisplay -r "test"

如果想传参数,在pkurun下

pkurun matlab -nodisplay -r "test 124314"

但是加了pkurun-cnnl就不行了,快气死了。好像是把双引号直接抹去了

pkurun-cnnl matlab -nodisplay -r "test 124314"

报错是: Not enough input arguments.

Error in test (line 2) disp(file);

现在知道了!!! 不用纠结怎么改了,直接用

pkurun-cnnl 1 2 matlab -r 'test'

后面随意,这样就可以生成一个job.srp文件,直接在job.srp文件中修改相应的代码

pkubatch 一执行就好了

可以把pkurun 当作是一个生成srp的文件,不要太关注怎么搞的

其中几个关键文件:

list.sc for file in `ls *-0ms*.tif` do echo "matlab -r bx_linux('$file')" sed -i '$c'"matlab -r \"bx_linux('$file')\"" job.sc_fat4way pkubatch job.sc_fat4way sleep 1 done job_tests.sc #!/bin/bash #SBATCH -J matsc #SBATCH -p cn-long #SBATCH -N 1 #SBATCH -o corr.out #SBATCH -e corr.err #SBATCH --no-requeue #SBATCH -A tangc_g1 #SBATCH --qos=tangccnl #SBATCH -c 1 matlab -r "bx_linux('20191105-6s-fish3-50ms.tif')"

注意:**matlab -r “bx_linux(‘20191105-6s-fish3-50ms.tif’)”**这里面的双引号在用pkurun执行的时候一直不出现,直接在srp改最方便啦

matlab总是出现out of memory

因为不同的qos每个核所有的内存是不同的,比如cn-short和cn-longd都是3.2GB。对于大的数据肯定不够用,那么在手册上写了,如果需要更大的内存:

srp文件中加上 #SBATCH -c 1 需要多少数字就改成多少

那么对于pkurun呢:

pkurun 1 **28**
最新回复(0)