我有一個腳本,它解決了for循環中許多參數的微分方程組。 (迭代是完全獨立的,但是在每次迭代結束時,根據計算結果修改大矩陣(mat))。下面是代碼:(B是含有參數的矩陣)我可以在多個MATLAB會話上運行腳本而不是並行化腳本嗎?
mat=zeros(20000,1);
for n=1:20000
prop=B(n,:); % B is a (20000 * 2) matrix that contains U and V parameters
U=prop(1);
V=prop(2);
options=odeset('RelTol',1e-6,'AbsTol',1e-20);
[T,X]=ode45(@acceleration,tspan,x0,options);
rad=X(:,1);
if max(rad)<radius % radius is a constant
mat(n)=1;
end
function xprime=acceleration(T,X)
.
.
.
end
首先我試圖使用PARFOR,但由於加速功能(ODE45輸入)定義爲內聯函數,(以達到更好的性能)我不能這樣做。
我可以打開4次MATLAB會議(我的CPU有4個內核),並在每個環節單獨運行的代碼,而不是修改來實現加速作爲一個單獨的函數的代碼,因此,使用PARFOR?它是否給4X在一個會話上運行的性能? (或者它是否具有與並行代碼相同的性能? - 在並行代碼中,我無法定義內聯函數 - ) (在Windows上)
雖然你可能在技術上能夠做到@pancake暗示什麼,MATLAB的單個許可證授權您啓動最大MATLAB的兩個同時實例。如果您擁有併發許可證,則可以檢出儘可能多的許可證。 – 2013-04-08 10:47:44