В настоящее время я пытаюсь найти эффективный способ распараллелить следующую структуру. Объем файла огромен, около 50 ГБ, и мне интересно, как можно увеличить скорость вычислений с помощью MPI или для таких случаев параллелизм не является эффективным способом из-за времени связи или барьера для ядер, так как я хочу записать данные с заказом. Спасибо за помощь.
for m = 1,120
for n = 1,120
for k = 1,120
for i = 1,100
f= x[k]*y[n]*z[m]
for j = 1, 30000
data[j]= A[i,j]*f
fwrite(fp,data)
free(data)
data[j]
имеет типchar
. Еслиf
также относится к типуchar
, это означает, что для массиваdata
существует только 256 возможных значений. Как насчет вычисления этих значений и сохранения их в массиве 256x30000 (например, datap[256][30000])? Затем простоfwrite(fp,datap[f]);
. Это сократит время вычислений на 100 без использования распараллеливания. Обратите внимание, что файл также можно сдуть, так как одна и та же строка будет появляться снова и снова... Просто сохранитеf[120][120][120]
иdatap[256][30000]
! - person francis   schedule 03.07.2015