Префикс MPIR в MPICH/MVAPICH

Следующая ссылка представляет соглашения о префиксах имен функций в MPICH/MVAPICH (например, префиксы MPID и MPIU).

Соглашение о префиксе имени функции в MPICH/MVAPICH

Мне просто интересно, что представляет собой префикс MPIR (не поясняется в приведенной выше ссылке)? На каком уровне он реализован и какие слои имеют к нему доступ? Заранее спасибо


person Iman    schedule 10.04.2013    source источник


Ответы (1)


MPIR_ обычно используется для символов, которые определены на верхнем уровне, который находится ниже фактического интерфейса MPI_, но выше интерфейса абстрактных устройств (ADI), символы которого обычно имеют префикс MPID_. Большинство символов MPIU_ также определены на этом уровне, но обычно они предназначены для совершенно отдельных служебных процедур, которые не реализуют никакой «бизнес-логики MPI». Как всегда с этими соглашениями об именах, соглашение не соблюдалось на 100% строго во всех случаях.

Источник: мой мозг; Я занимаюсь разработкой MPICH более 5 лет.

Использование имен, отличных от MPI_, для подпрограмм, определенных внутри библиотеки, важно, так как это означает, что мы не наткнемся случайно на пространство имен MPI и потенциально не вступим в конфликт с будущей стандартизацией или не запутаем пользователей относительно того, что на самом деле является стандартной функциональностью: http://www.mpi-forum.org/docs/mpi22-report/node31.htm#Node31

Мы используем формат декларации ISO C. Все имена MPI имеют префикс MPI_, определенные константы пишутся заглавными буквами, а определенные типы и функции имеют одну заглавную букву после префикса. Программы не должны объявлять переменные или функции с именами, начинающимися с префикса MPI_. Для поддержки интерфейса профилирования программы не должны объявлять функции с именами, начинающимися с префикса PMPI_.

person Dave Goodell    schedule 10.04.2013
comment
Спасибо. Итак, вы говорите, что между интерфейсом MPI и уровнем устройства есть слой. Итак, когда мы говорим, что функции MPID_ реализуются устройством, которое будет использоваться на уровне MPI, мы имеем в виду MPIR, верно? И когда мы говорим, что функции MPI_ реализованы на уровне MPI для использования приложением на уровне MPI, мы имеем в виду интерфейс MPI, верно? - person Iman; 10.04.2013
comment
Вид зависит от того, как вы хотите смотреть на это. Я смотрю на уровень MPI и уровень MPIR как на один и тот же слой на диаграмме. То есть интерфейс — это граница между слоями, в идеале состоящая из четко определенного набора функций и типов данных (представьте себе хорошо спроектированный набор заголовков). Слои — это место, где живет фактическая реализация этих функций (файлы .c для этих заголовков). К сожалению, у меня нет под рукой схемы, наглядно иллюстрирующей это. - person Dave Goodell; 11.04.2013