как генерировать сигнал, чтобы остановить выполнение других процессов в распределенной модели - PullRequest
1 голос
/ 21 января 2012

Проблема заключается в поиске строки максимальной длины 10 байтов в файле размером 20 ГБ.Файл содержит одну строку в одной строке.Я пишу параллельное программирование, чтобы сделать это.Я просто разделил файл на p процессов размером около (Число байтов в файле / P) и прочитал этот большой кусок всеми процессами параллельно.После этого я искал строку во всех процессах одновременно.

Так что я просто хочу прекратить поиск во всех других процессах, когда между тем я получаю совпадение строк в любом процессе, чтобы получить преимущество параллельного программирования.

Как мы можем остановить выполнение других процессов?

1 Ответ

1 голос
/ 21 января 2012

Не уверен, что это самый элегантный способ, но как только один процесс найдет подходящую строку, он может MPI_Isend () для всех процессов, которые больше не нужно выполнять.

Каждый процесс будет время от времени проверять, используя MPI_Iprobe () , если есть ожидающее сообщение, и если есть: примите его, используя MPI_Rccv () , и теперь процесс может завершить себя элегантно.

...