Самое быстрое чтение файла в многопоточном приложении

Мне нужно прочитать в память матрицу 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

Есть ли способ оптимизировать это дальше?

8
задан genpfault 21 May 2012 в 21:02
поделиться