Я пытаюсь распараллелить решение x = A \ B (mldivide. Мои переменные: x = V (I * J * K x I * J * K), A = A (I * J * K xI * J * K) разреженная матрица, vec = u (I, J, K) + V / постоянная + Bswitch (I * J * K x I * J * K) * V
Для этого безраспараллеливание, мой код в настоящее время делает это:
V_stacked = reshape(V,I*J*L,1);
vec = u_stacked + V_stacked/Delta + Bswitch*V_stacked;
V_stacked = A\vec;
Для распараллеливания я попытался
u_stacked = reshape(u,I*J,L);
V_stacked = reshape(V,I*J,L);
BswitchTimesVstacked = Bswitch*reshape(V,I*J*L,1);
BswitchTimesVstacked = reshape(BswitchTimesVstacked,I*J,L);
vec = u_stacked + V_stacked/Delta + BswitchTimesVstacked;
tic
parfor l = 1:L
V_stacked(:,l) = A(:,:,l)\vec(:,l);
end
Но так как B все еще I * J * L раз I * J * L, это неработать. Я не уверен, что 1. что я делаю до сих пор правильно и 2. как правильно изменить форму B.
Математическая информация здесь: http://www.princeton.edu/~moll/HACTproject/two_asset_kinked.pdf (раздел 4)
Любая помощь высоко ценится: -)