C++ MPI将嵌套循环中的变量写入单个文件

C++ MPI将嵌套循环中的变量写入单个文件,c++,parallel-processing,mpi,nested-loops,C++,Parallel Processing,Mpi,Nested Loops,我目前正试图找到一种有效的方法来并行化以下结构。文件量在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, 300

我目前正试图找到一种有效的方法来并行化以下结构。文件量在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项被写入文件,因此数据[j]似乎是char类型。如果f也是char类型,则表示数组数据只有256个可能的值。如何计算这些值并将其存储在256x30000数组中(比如datap[256][30000])?然后,只需fwritefp,datap[f];。这将在不使用并行化的情况下将计算时间减少100。请注意,由于同一行将一次又一次出现,因此该文件也可以缩小。。。只需存储f[120][120][120]和datap[256][30000]!