Проблема заключается в поиске пароля в большом файле размером около 10 ГБ с использованием MPI.Я разделил файл между различными процессами с размером фрагмента (Total number of bytes in file / P)
, где p - число процессов, которые нужно создать, и параллельно применил мою логику поиска в каждом процессе через цикл.Я хочу остановить другие процессы, когда один процесс найдет решение.
Таким образом, чтобы прервать все другие процессы, я использую следующие два подхода.
- Первый подход заключается в вызове функции MPI_Abort ().из процесса всякий раз, когда его найти решение.
- второй подход заключается в использовании флага и установить его всякий раз, когда какой-либо процесс находит свое решение.После установки этого флага отправьте его всем остальным процессам, используя неблокирующую функцию send / recv / Iprobe.Затем проверьте этот флаг каждым процессом, используя
if(flag == 1) break
;и сделайте так ..
Мой первый вопрос: какой из двух вышеуказанных подходов лучше и почему?
, а второй - когда я использовал второй подход, который я получил после сообщения после завершения их выполненияуспешно ...
* Произошла ошибка в MPI_Finalize * после завершения MPI *** MPI_ERRORS_ARE_FATAL (до свидания) [abc: 19150] Прервать до успешного завершения MPI_INIT;не может гарантировать, что все остальные процессы были убиты!
* Произошла ошибка в MPI_Finalize * после завершения MPI * MPI_ERRORS_ARE_FATAL (до свидания) [abc: 19151]Прервать до успешного завершения MPI_INIT;не может гарантировать, что все остальные процессы были убиты!