8192x8192 の行列をメモリに読み込む必要があります。できるだけ早くやりたいです。
今、私はこの構造を持っています:
char inputFile[8192][8192*4]; // I know the numbers are at max 3 digits
int8_t matrix[8192][8192]; // Matrix to be populated
// Read entire file line by line using fgets
while (fgets (inputFile[lineNum++], MAXCOLS, fp));
//Populate the matrix in parallel,
for (t = 0; t < NUM_THREADS; t++){
pthread_create(&threads[t], NULL, ParallelRead, (void *)t);
}
functionParallelRead
では、各行を解析しatoi
、行列を作成して入力します。スレッド t が行を解析するように、並列処理は行単位です。t, t+ 1 * NUM_THREADS..
2 スレッドの 2 コア システムでは、これには
Loading big file (fgets) : 5.79126
Preprocessing data (Parallel Read) : 4.44083
これをさらに最適化する方法はありますか?