• 软件
  • Matlab 2个嵌套for循环 并行问题

目的是加速程序,想在cluster或者一个node上运行(qsub提交)下面的代码有两个for循环,函数FunX比较耗时间。如何并行这两个for循环?谢谢
input_file='test_1000.txt';
data=importdata(input_file,'\t');
geneNames=data.textdata(2:size(data.textdata,1),1);

N = 6100

A = repmat(2,N,N);
for i=1:(N-1)
	list1=data.data(:,i);
	for j=(i+1):N
		list2=data.data(:,j);
		A(i,j)=FunX(list1, list2);
	end
end

save test.mat
我不太清楚Matlab具体的语法,只是说一下思想。
这个任务还是比较好办的,因为不同的i与j之间没有交互,就是矩阵A不同的列之间进行计算。
第一种办法就是直接对i并行,这样最简单,但坏处是不同的i计算量不一样。如果Matlab支持动态调度的话一定要选择动态调度。
第二种就是把i和j的组合“拉直”,保存为一个向量,然后对那个向量进行并行。