2013-02-12 3 views
2

Я пытаюсь установить Valgrind с полной поддержкой MPI под Linux. Согласно Valgrind documentation. Я должен скомпилировать с уже установленным MPI, но в соответствии с документацией MPICH и OpenMPI я должен скомпилировать с уже установленным Valgrind. Это довольно запутанно, так что я должен установить первым?Компиляция Valgrind с поддержкой MPI

ответ

1

Вы говорите, что собираетесь установить valgrind с поддержкой MPI. Это означает, что вы можете использовать mpicc или какой-либо другой компилятор mpi. То, что спрашивает valgrind, должно быть построено с тем же компилятором. Если вы собираетесь отлаживать любой из этих компиляторов mpi с помощью valgrind, вам необходимо следовать инструкциям в разделе интеграции Valgrind.

Информация о том, какой дистрибутив вы используете, отсутствует. В системе Debian valgrind-mpi может быть пакетом, который вы ищете.

+0

Извините, если мой оригинальный пост был недостаточно ясным. Я намерен отлаживать свои собственные приложения MPI с помощью Valgrind, а не с самими компиляторами MPI. В документации Valgrind говорится о настройке с помощью --with-mpicc =/path/to/mpicc, поэтому здесь предполагается, что у вас установлена ​​версия любого дистрибутива MPI. Однако в документации OpenMPI, например, говорится, что нужно настроить с помощью --enable-debug --enable-memchecker --with-valgrind =/path/to/valgrind - который я не могу сделать, прежде чем я установил Valgrind естественно , – user787267

+0

Мое первоначальное понимание выглядит хорошо. Вы должны быть в порядке, если вы устанавливаете компилятор mpi, а затем создаете valgrind с помощью '--with-mpicc =/path/to/mpicc'. Трудно продолжать так. Если у вас есть какие-либо проблемы в форме ошибок или так будет очень полезно. – vpit3833

2

Здесь нет круговой зависимости. Скорее вы сталкиваетесь с двумя разными методами, которые размещают запросы клиента Valgrind в разных местах.

Открытый MPI может быть построен с поддержкой OMPI-поддержки Valgrind. Это отличается от создания Memchecker поддержкой MPI в том, что он также позволяет проверять внутренние компоненты OMPI (поэтому он также требует включения отладки в OMPI). Клиентские запросы Memchecker становятся частью кода библиотеки очень специфичным для OMPI образом. Это не требует внесения изменений в код Valgrind, т. Е. Он должен работать с любой установкой Valgrind (при условии, что требования к минимальной версии удовлетворяются)

С другой стороны, Open MPI, а также любая другая реализация MPI, предоставляет PMPI профилирующий интерфейс. Это может быть использовано Memchecker для обеспечения поддержки MPI. Как описано в документации, Memchecker создает библиотеку функций, которые заменяют (и обертывают) исходные вызовы MPI (так работает механизм PMPI - все вызовы MPI_* являются слабыми символами и могут быть переопределены другими символами с тем же именем, истинные вызовы MPI на самом деле PMPI_* и MPI_* определены как слабые псевдонимы на ELF-системах). Это не требует изменений в коде библиотеки MPI. Он должен работать с любой реализацией MPI, но только пользовательская память будет правильно отлаживаться, то есть ложные срабатывания могут быть обнаружены внутри кода библиотеки MPI (хотя они не должны быть ложными срабатываниями и могут означать, что сама библиотека ошибочна).

То же самое касается поддержки Valgrind в MPICH.

Смежные вопросы