0
如果我只想並行化循環並使用openmp連續保存到文件,什麼是最佳解決方案?我有一個包含大量信息的文件,我想將它們拆分成相同的塊(每個16個字節),並使用openmp(C++中的多線程編程)進行加密。加密過程完成後,這些塊存儲在一個文件中,但是與原始文件的序列相同。多線程在C++中使用openmp
i_count=meta->subchunk2_size-meta->subchunk2_size%16;// TO GET THE EXACT LENTH MODE 16
// Get the number of processors in this system
int iCPU = omp_get_num_procs();
// Now set the number of threads
omp_set_num_threads(iCPU);
#pragma omp parallel for ordered
for(i=0;i<i_count;i+=16)
{
fread(Store,sizeof(char),16,Rfile);// read
ENCRYPT();
#pragma omp ordered
fwrite(Store,sizeof(char),16,Wfile) // write
}
該程序它假設工作並行但保存到文件工作順序,但程序的執行表明它按順序工作。
正如我前面提到的,加密過程中使用的文件的大小很大,不能直接將它移動到矩陣。 sot指令「fread(Store,sizeof(char),icount,Rfile); //讀取」,不是有用的,是否有另一個選項? – user3540874