【发布时间】:2015-07-07 22:24:44
【问题描述】:
我目前正在尝试找到一种有效的方法来并行化以下结构。文件的数量很大,大约 50Gb,我想知道如何通过 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)
【问题讨论】:
-
由于文件大小为 50Gb,并且文件中写入了 120x120x120x30000 个项目,因此
data[j]的类型似乎为char。如果f也是char类型,则意味着数组data只有256 个可能的值。如何计算这些值并将它们存储在 256x30000 数组中(比如 datap[256][30000])?然后,只需fwrite(fp,datap[f]);。这将在不使用并行化的情况下将计算时间减少 100。请注意,文件也可以放气,因为同一行会一次又一次地出现......只需存储f[120][120][120]和datap[256][30000]!
标签: c++ parallel-processing mpi nested-loops