Добавьте функцию пользовательского уровня в MPICH3.3. * - PullRequest
1 голос
/ 29 января 2020

Мне нужно добавить функцию уровня пользователя, MPI_Myfunc(), к MPICH-3.3.2 . Я добавляю прототип функции в src / include / mpi.h.in , где находятся другие прототипы (MPI_Send, ...), и я реализую его в src / mpi / coll / allgather / allgather. c. Я могу скомпилировать и собрать MPICH без каких-либо проблем. Однако, когда я хочу скомпилировать тестовую программу, которая вызывает MPI_Myfunc(), я получаю эту ошибку:

неопределенная ссылка на MPI_Myfunc.

Я не получить эту ошибку, когда я следую той же процедуре в MPICH-3.2.1. Интересно, есть ли изменения в MPICH-3.3.2, о которых я не знаю.

Как мне исправить эту ошибку?

1 Ответ

0 голосов
/ 30 января 2020

Мне удалось решить эту проблему, добавив следующее к прототипу функции в / src / invlude / mpi.h.in :

MPICH_ATTR_POINTER_WITH_TYPE_TAG(1,3) MPICH_API_PUBLIC;

Итак, прототип функции выглядит так:

void MPI_Myfunc() MPICH_ATTR_POINTER_WITH_TYPE_TAG(1,3) MPICH_API_PUBLIC;
...