У меня очень большой файл данных, и каждая запись в этом файле данных состоит из 4 строк. Я написал очень простую программу на языке C для анализа файлов этого типа и вывода некоторой полезной информации. Основная идея программы такова.
int main()
{
char buffer[BUFFER_SIZE];
while(fgets(buffer, BUFFER_SIZE, stdin))
{
fgets(buffer, BUFFER_SIZE, stdin);
do_some_simple_processing_on_the_second_line_of_the_record(buffer);
fgets(buffer, BUFFER_SIZE, stdin);
fgets(buffer, BUFFER_SIZE, stdin);
}
print_out_result();
}
При этом, конечно, не учитываются некоторые детали (работоспособность / проверка ошибок и т. Д.), Но это не имеет отношения к вопросу.
Программа работает нормально, но файлы данных, с которыми я работаю, огромны. Я решил, что попытаюсь ускорить программу, распараллеливая цикл с помощью OpenMP. Однако после небольшого поиска выясняется, что OpenMP может обрабатывать только циклы для
, где количество итераций известно заранее. Поскольку я заранее не знаю размер файлов и даже простые команды, такие как wc -l
, требуют много времени для выполнения, как я могу распараллелить эту программу?