У меня есть большой файл csv, и мне нужно обработать каждую строку, чтобы посчитать несколько слов. Мне нужно использовать некоторый подход MPI для распространения обработки данных между несколькими процессами. В настоящее время я использую разброс/сбор в библиотеке mpi4py
. Проблема в том, что мне нужно создать массив с длиной, равной количеству процессов. Но я получаю ошибку памяти при создании списка для большого количества строк.MPI разбросаны для распространения большого файла csv
size = comm.Get_size()
f=open('x.csv')
lines=[[] for _ in range(size)]
for line in f:
# this line raises memory error after about 250000 rows are appended
lines[i%size].append(line)
Есть ли другой способ передачи больших данных между этими процессами?
1) Выполняется ли это на нескольких узлах? 2) Является ли это общей файловой системой? Вообще кажется ** очень маловероятным **, что вы на самом деле получаете производительность от своего подхода, а не поочередно подсчитываете свои слова, так как это, вероятно, ограничено шириной запрета ввода-вывода, а не вычислением. – Zulan
@ Zulan Да, у меня есть несколько узлов и общая файловая система. в настоящее время производительность для меня не так важна, я просто хочу протестировать и работать с этой библиотекой MPI в своем файле – stardiv