0
HPCを使用してMatlabジョブ配列を実行しています。各ジョブは、乱数を含むループを実行します。私は各仕事で同じ乱数を得ます。この問題を解決し、ジョブごとに異なる乱数を取得するにはどうすればよいですか?ジョブ配列の実行中に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