Некоторые типичные ошибки, которые могут возникать при параллельном программировании на MPI:
- Взаимная блокировка при пересылке сообщений. 1 Если цепочка передачи сообщений замкнута, отправка может не завершиться никогда, потому что каждый процесс будет ожидать завершения отправки своего сообщения. 1
- Освобождение или изменение буферов, используемых при неблокирующей пересылке. 1 При вызове неблокирующих функций возврат из них происходит немедленно, а адреса массивов с сообщениями запоминаются во внутренних структурах библиотеки MPI. 1 Важно, чтобы этот участок памяти не был удалён или изменён до окончания передачи. 1
- Несоответствие вызовов функций передачи и приёма сообщений. 1 Важно, чтобы каждому вызову функции отправки сообщения соответствовал вызов функции приёма и наоборот. 1 К этому же типу ошибок можно отнести вызов функций передачи и приёма сообщений с несоответствующими тэгами идентификации сообщений. 1
- Несоблюдение правила вызова коллективных функций. 2 Несоблюдение этого правила приводит к ошибкам на стадии выполнения программы (обычно к «повисанию» программы). 2