我必须将 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);
}
在函数ParallelRead
中,我解析每一行,执行atoi
并填充矩阵。并行性是逐行的,就像线程 t 解析行t, t+ 1 * NUM_THREADS..
在具有 2 个线程的双核系统上,这需要
Loading big file (fgets) : 5.79126
Preprocessing data (Parallel Read) : 4.44083
有没有办法进一步优化这个?