【发布时间】:2017-05-11 00:18:17
【问题描述】:
我正在使用 HPC 运行 Matlab 作业数组。每个作业执行一个涉及随机数的循环。我在每项工作中得到相同的随机数。如何解决此问题并为每个作业获取不同的随机数?
我发现了一个类似的问题here,但我认为这是一个比我更复杂的案例:每个作业中没有parfor 循环,我只有一个for 循环。
这是我的代码的简化版本
%%%% main.m %%%%%
clear all
n=5;
K=2;
H=5; %number of jobs per worker
%%%% f.m %%%%%
RVall=zeros(n,K,H);
for s=1:H
RVall(:,:,s) = unifrnd(0,1,n,K);
end
filename = sprintf('RVall.%d.mat', ID);
save(filename, 'RVall')
.sh 文件是
#Example
#$ -S /bin/bash
#$ -l h_vmem=4G
#$ -l tmem=4G
#$ -l h_rt=360:0:0
#$ -cwd
#$ -j y
#Run 200 tasks where each task has a different $SGE_TASK_ID ranging
from 1 to 200
#$ -t 1-200
#$ -N try
date
hostname
#Output the Task ID
echo "Task ID is $SGE_TASK_ID"
matlab -nodisplay -nodesktop -nojvm -nosplash -r "main; ID = $SGE_TASK_ID; f; exit"
在这个例子中,你会看到RVall.1=RVall.2=...=RVall.200
【问题讨论】:
标签: matlab