2015-07-21 1 views
1

Я язычком ввода текстового файла:анализировать текстовый файл параллельно с mpi4py

0 .4 
1 .9 
2 .2 
3 .12 
4 .55 
5 .98 

Я анализирую его в простом Python как:

lines = open("songs.tsv").readlines() 

def extract_hotness(line): 
     return float(line.split()[1]) 

songs_hotness =map(extract_hotness, lines) 
max_hotness = max(songs_hotness) 

Как выполнить ту же операцию, параллельно используя mpi4py? Я начал реализовывать это с помощью scatter, но это не сработает сразу, потому что scatter нуждается в элементах списка той же длины, что и количество узлов.

ответ

0

Обработка текстового файла параллельно сложна. Где вы разбиваете файл? Вы даже читаете из параллельной файловой системы? Вы можете рассмотреть MPI-IO, если у вас достаточно большой входной файл. Если вы идете по этому маршруту, эти ответы, представленные в контексте C, описывают проблемы, которые по-прежнему сохраняются в mpi4py: https://stackoverflow.com/a/31726730/1024740 и https://stackoverflow.com/a/12942718/1024740

Другой подход заключается не в разброске данных, для всех остальных. Этот подход требует достаточного объема памяти для одновременной постановки всех входных данных или схемы мастера-работника, где только одни данные считываются одним выстрелом.

+0

Thansk, мне нужно это, как пример, поэтому мы можем предположить, что файл крошечный, я не хочу его транслировать, но чтобы разбросать его, любое разбиение файла в порядке, я просто не хочу дублировать строки в различные узлы. –