I am trying to install ompi to use the DDN exascaler. I have tried with both the current version of ompi https://github.com/open-mpi/ompi and an older version of ompi hosted by DDNStorage https://github.com/DDNStorage/ompi-public. Both gave my errors during the ./configure step. I am using the DDN exascaler on GCP to link to a slurm cluster there, and my slurm cluster is running ubuntu 20.04.
./configure --prefix=/home/apps/ompi --enable-mpi-cxx --with-lustre=/usr/src/lustre-client-modules-2.14.0-ddn54/lustre/
error ourput from configure:
--- MCA component fs:lustre (m4 configuration macro)
checking for MCA component fs:lustre compile mode... dso
checking --with-lustre value... sanity check ok (/usr/src/lustre-client-modules-2.14.0-ddn54/lustre/)
checking looking for lustre libraries and header files in... (/usr/src/lustre-client-modules-2.14.0-ddn54/lustre/)
checking lustre/lustreapi.h usability... no
checking lustre/lustreapi.h presence... yes
configure: WARNING: lustre/lustreapi.h: present but cannot be compiled
configure: WARNING: lustre/lustreapi.h: check for missing prerequisite headers?
configure: WARNING: lustre/lustreapi.h: see the Autoconf documentation
configure: WARNING: lustre/lustreapi.h: section "Present But Cannot Be Compiled"
configure: WARNING: lustre/lustreapi.h: proceeding with the compiler's result
configure: WARNING: ## ------------------------------------------------------ ##
configure: WARNING: ## Report this to http://www.open-mpi.org/community/help/ ##
configure: WARNING: ## ------------------------------------------------------ ##
checking for lustre/lustreapi.h... no
configure: error: Lustre support requested but not found. Aborting
I tried adding header guards around the line of code that triggered the nested redefinition error but this didn't solve it:
/* JSON handling */
#ifndef LUSTREAPI_H
#define LUSTREAPI_H
enum llapi_json_types {
LLAPI_JSON_INTEGER = 1,
LLAPI_JSON_BIGNUM,
LLAPI_JSON_REAL,
LLAPI_JSON_STRING
};
#endif
A more detailed breakdown of what went wrong, from the DDN version of ompi (output from open mpi's version of ompi is further below)
configure:302163: checking lustre/lustreapi.h usability
configure:302163: gcc -c -O3 -DNDEBUG -Wall -Wundef -Wno-long-long -Wsign-compare -Wmissing-prototypes -Wstrict-prototypes -Wcomment -pedantic -Werror-implicit-function-declaration -finline-functions -fno-strict-aliasing -pthread -I/home/apps/ddnompi/ompi-public/opal/mca/event/libevent2022/libevent -I/home/apps/ddnompi/ompi-public/opal/mca/event/libevent2022/libevent/include -I/usr/src/lustre-client-modules-2.14.0-ddn54/lustre/include conftest.c >&5
In file included from conftest.c:784:
/usr/src/lustre-client-modules-2.14.0-ddn54/lustre/include/lustre/lustreapi.h:129:40: warning: ISO C does not permit named variadic macros [-Wvariadic-macros]
129 | #define llapi_err_noerrno(level, fmt, a...) \
| ^~~
/usr/src/lustre-client-modules-2.14.0-ddn54/lustre/include/lustre/lustreapi.h:145:10: warning: ISO C forbids zero-size array 'lsp_osts' [-Wpedantic]
145 | __u32 lsp_osts[0];
| ^~~~~~~~
/usr/src/lustre-client-modules-2.14.0-ddn54/lustre/include/lustre/lustreapi.h:592:6: error: nested redefinition of 'enum llapi_json_types'
592 | enum llapi_json_types {
| ^~~~~~~~~~~~~~~~
/usr/src/lustre-client-modules-2.14.0-ddn54/lustre/include/lustre/lustreapi.h:592:6: error: redeclaration of 'enum llapi_json_types'
In file included from /usr/src/lustre-client-modules-2.14.0-ddn54/lustre/include/lustre/lustreapi.h:47,
from conftest.c:784:
/usr/include/linux/lustre/lustre_user.h:2224:6: note: originally defined here
2224 | enum llapi_json_types {
| ^~~~~~~~~~~~~~~~
In file included from conftest.c:784:
/usr/src/lustre-client-modules-2.14.0-ddn54/lustre/include/lustre/lustreapi.h:593:2: error: redeclaration of enumerator 'LLAPI_JSON_INTEGER'
593 | LLAPI_JSON_INTEGER = 1,
| ^~~~~~~~~~~~~~~~~~
In file included from /usr/src/lustre-client-modules-2.14.0-ddn54/lustre/include/lustre/lustreapi.h:47,
from conftest.c:784:
/usr/include/linux/lustre/lustre_user.h:2225:2: note: previous definition of 'LLAPI_JSON_INTEGER' was here
2225 | LLAPI_JSON_INTEGER = 1,
| ^~~~~~~~~~~~~~~~~~
In file included from conftest.c:784:
/usr/src/lustre-client-modules-2.14.0-ddn54/lustre/include/lustre/lustreapi.h:594:2: error: redeclaration of enumerator 'LLAPI_JSON_BIGNUM'
594 | LLAPI_JSON_BIGNUM,
| ^~~~~~~~~~~~~~~~~
In file included from /usr/src/lustre-client-modules-2.14.0-ddn54/lustre/include/lustre/lustreapi.h:47,
from conftest.c:784:
/usr/include/linux/lustre/lustre_user.h:2226:2: note: previous definition of 'LLAPI_JSON_BIGNUM' was here
2226 | LLAPI_JSON_BIGNUM,
| ^~~~~~~~~~~~~~~~~
In file included from conftest.c:784:
/usr/src/lustre-client-modules-2.14.0-ddn54/lustre/include/lustre/lustreapi.h:595:2: error: redeclaration of enumerator 'LLAPI_JSON_REAL'
595 | LLAPI_JSON_REAL,
| ^~~~~~~~~~~~~~~
In file included from /usr/src/lustre-client-modules-2.14.0-ddn54/lustre/include/lustre/lustreapi.h:47,
from conftest.c:784:
/usr/include/linux/lustre/lustre_user.h:2227:2: note: previous definition of 'LLAPI_JSON_REAL' was here
2227 | LLAPI_JSON_REAL,
| ^~~~~~~~~~~~~~~
In file included from conftest.c:784:
/usr/src/lustre-client-modules-2.14.0-ddn54/lustre/include/lustre/lustreapi.h:596:2: error: redeclaration of enumerator 'LLAPI_JSON_STRING'
596 | LLAPI_JSON_STRING
| ^~~~~~~~~~~~~~~~~
In file included from /usr/src/lustre-client-modules-2.14.0-ddn54/lustre/include/lustre/lustreapi.h:47,
from conftest.c:784:
/usr/include/linux/lustre/lustre_user.h:2228:2: note: previous definition of 'LLAPI_JSON_STRING' was here
2228 | LLAPI_JSON_STRING
| ^~~~~~~~~~~~~~~~~
In file included from conftest.c:784:
/usr/src/lustre-client-modules-2.14.0-ddn54/lustre/include/lustre/lustreapi.h:599:8: error: redefinition of 'struct llapi_json_item'
599 | struct llapi_json_item {
| ^~~~~~~~~~~~~~~
In file included from /usr/src/lustre-client-modules-2.14.0-ddn54/lustre/include/lustre/lustreapi.h:47,
from conftest.c:784:
/usr/include/linux/lustre/lustre_user.h:2231:8: note: originally defined here
2231 | struct llapi_json_item {
| ^~~~~~~~~~~~~~~
In file included from conftest.c:784:
/usr/src/lustre-client-modules-2.14.0-ddn54/lustre/include/lustre/lustreapi.h:611:8: error: redefinition of 'struct llapi_json_item_list'
611 | struct llapi_json_item_list {
| ^~~~~~~~~~~~~~~~~~~~
In file included from /usr/src/lustre-client-modules-2.14.0-ddn54/lustre/include/lustre/lustreapi.h:47,
from conftest.c:784:
/usr/include/linux/lustre/lustre_user.h:2243:8: note: originally defined here
2243 | struct llapi_json_item_list {
| ^~~~~~~~~~~~~~~~~~~~
In file included from conftest.c:784:
/usr/src/lustre-client-modules-2.14.0-ddn54/lustre/include/lustre/lustreapi.h:643:55: warning: ISO C forbids forward references to 'enum' types [-Wpedantic]
643 | int llapi_pcc_attach(const char *path, __u32 id, enum lu_pcc_type type);
| ^~~~~~~~~~~
/usr/src/lustre-client-modules-2.14.0-ddn54/lustre/include/lustre/lustreapi.h:643:55: warning: 'enum lu_pcc_type' declared inside parameter list will not be visible outside of this definition or declaration
/usr/src/lustre-client-modules-2.14.0-ddn54/lustre/include/lustre/lustreapi.h:645:20: warning: ISO C forbids forward references to 'enum' types [-Wpedantic]
645 | __u32 id, enum lu_pcc_type type);
| ^~~~~~~~~~~
/usr/src/lustre-client-modules-2.14.0-ddn54/lustre/include/lustre/lustreapi.h:645:20: warning: 'enum lu_pcc_type' declared inside parameter list will not be visible outside of this definition or declaration
/usr/src/lustre-client-modules-2.14.0-ddn54/lustre/include/lustre/lustreapi.h:647:24: warning: ISO C forbids forward references to 'enum' types [-Wpedantic]
647 | __u32 id, enum lu_pcc_type type);
| ^~~~~~~~~~~
/usr/src/lustre-client-modules-2.14.0-ddn54/lustre/include/lustre/lustreapi.h:647:24: warning: 'enum lu_pcc_type' declared inside parameter list will not be visible outside of this definition or declaration
/usr/src/lustre-client-modules-2.14.0-ddn54/lustre/include/lustre/lustreapi.h:655:9: warning: ISO C forbids forward references to 'enum' types [-Wpedantic]
655 | enum lu_pcc_detach_flags flags);
| ^~~~~~~~~~~~~~~~~~~
/usr/src/lustre-client-modules-2.14.0-ddn54/lustre/include/lustre/lustreapi.h:655:9: warning: 'enum lu_pcc_detach_flags' declared inside parameter list will not be visible outside of this definition or declaration
/usr/src/lustre-client-modules-2.14.0-ddn54/lustre/include/lustre/lustreapi.h:656:43: warning: 'struct lu_pcc_state' declared inside parameter list will not be visible outside of this definition or declaration
656 | int llapi_pcc_state_get_fd(int fd, struct lu_pcc_state *state);
| ^~~~~~~~~~~~
/usr/src/lustre-client-modules-2.14.0-ddn54/lustre/include/lustre/lustreapi.h:657:50: warning: 'struct lu_pcc_state' declared inside parameter list will not be visible outside of this definition or declaration
657 | int llapi_pcc_state_get(const char *path, struct lu_pcc_state *state);
| ^~~~~~~~~~~~
/usr/src/lustre-client-modules-2.14.0-ddn54/lustre/include/lustre/lustreapi.h:665:53: warning: ISO C forbids forward references to 'enum' types [-Wpedantic]
665 | int llapi_pcc_backend_id_get(const char *path, enum lu_pcc_type type,
| ^~~~~~~~~~~
/usr/src/lustre-client-modules-2.14.0-ddn54/lustre/include/lustre/lustreapi.h:665:53: warning: 'enum lu_pcc_type' declared inside parameter list will not be visible outside of this definition or declaration
/usr/src/lustre-client-modules-2.14.0-ddn54/lustre/include/lustre/lustreapi.h:1092:4: error: 'LCME_FL_EXTENSION' undeclared here (not in a function)
1092 | { LCME_FL_EXTENSION, "extension" },
| ^~~~~~~~~~~~~~~~~
/usr/src/lustre-client-modules-2.14.0-ddn54/lustre/include/lustre/lustreapi.h:1108:4: error: 'HS_PCCRW' undeclared here (not in a function)
1108 | { HS_PCCRW, "pccrw" },
| ^~~~~~~~
/usr/src/lustre-client-modules-2.14.0-ddn54/lustre/include/lustre/lustreapi.h:1109:4: error: 'HS_PCCRO' undeclared here (not in a function)
1109 | { HS_PCCRO, "pccro" },
| ^~~~~~~~
/usr/src/lustre-client-modules-2.14.0-ddn54/lustre/include/lustre/lustreapi.h:1223:35: warning: 'struct lu_heat' declared inside parameter list will not be visible outside of this definition or declaration
1223 | int llapi_heat_get(int fd, struct lu_heat *heat);
| ^~~~~~~
configure:302163: $? = 1
configure: failed program was:
| /* confdefs.h */
From open mpi's version of ompi:
configure:317138: checking lustre/lustreapi.h usability
configure:317138: gcc -c -O3 -DNDEBUG -finline-functions -fno-strict-aliasing -mcx16 -pthread -I/usr/local/include -I/usr/local/include -I/usr/src/lustre-client-modules-2.14.0-ddn54/lustre/include conftest.c >&5
In file included from conftest.c:779:
/usr/src/lustre-client-modules-2.14.0-ddn54/lustre/include/lustre/lustreapi.h:592:6: error: nested redefinition of 'enum llapi_json_types'
592 | enum llapi_json_types {
| ^~~~~~~~~~~~~~~~
/usr/src/lustre-client-modules-2.14.0-ddn54/lustre/include/lustre/lustreapi.h:592:6: error: redeclaration of 'enum llapi_json_types'
In file included from /usr/src/lustre-client-modules-2.14.0-ddn54/lustre/include/lustre/lustreapi.h:47,
from conftest.c:779:
/usr/include/linux/lustre/lustre_user.h:2224:6: note: originally defined here
2224 | enum llapi_json_types {
| ^~~~~~~~~~~~~~~~
In file included from conftest.c:779:
/usr/src/lustre-client-modules-2.14.0-ddn54/lustre/include/lustre/lustreapi.h:593:2: error: redeclaration of enumerator 'LLAPI_JSON_INTEGER'
593 | LLAPI_JSON_INTEGER = 1,
| ^~~~~~~~~~~~~~~~~~
In file included from /usr/src/lustre-client-modules-2.14.0-ddn54/lustre/include/lustre/lustreapi.h:47,
from conftest.c:779:
/usr/include/linux/lustre/lustre_user.h:2225:2: note: previous definition of 'LLAPI_JSON_INTEGER' was here
2225 | LLAPI_JSON_INTEGER = 1,
| ^~~~~~~~~~~~~~~~~~
In file included from conftest.c:779:
/usr/src/lustre-client-modules-2.14.0-ddn54/lustre/include/lustre/lustreapi.h:594:2: error: redeclaration of enumerator 'LLAPI_JSON_BIGNUM'
594 | LLAPI_JSON_BIGNUM,
| ^~~~~~~~~~~~~~~~~
In file included from /usr/src/lustre-client-modules-2.14.0-ddn54/lustre/include/lustre/lustreapi.h:47,
from conftest.c:779:
/usr/include/linux/lustre/lustre_user.h:2226:2: note: previous definition of 'LLAPI_JSON_BIGNUM' was here
2226 | LLAPI_JSON_BIGNUM,
| ^~~~~~~~~~~~~~~~~
In file included from conftest.c:779:
/usr/src/lustre-client-modules-2.14.0-ddn54/lustre/include/lustre/lustreapi.h:595:2: error: redeclaration of enumerator 'LLAPI_JSON_REAL'
595 | LLAPI_JSON_REAL,
| ^~~~~~~~~~~~~~~
In file included from /usr/src/lustre-client-modules-2.14.0-ddn54/lustre/include/lustre/lustreapi.h:47,
from conftest.c:779:
/usr/include/linux/lustre/lustre_user.h:2227:2: note: previous definition of 'LLAPI_JSON_REAL' was here
2227 | LLAPI_JSON_REAL,
| ^~~~~~~~~~~~~~~
In file included from conftest.c:779:
/usr/src/lustre-client-modules-2.14.0-ddn54/lustre/include/lustre/lustreapi.h:596:2: error: redeclaration of enumerator 'LLAPI_JSON_STRING'
596 | LLAPI_JSON_STRING
| ^~~~~~~~~~~~~~~~~
In file included from /usr/src/lustre-client-modules-2.14.0-ddn54/lustre/include/lustre/lustreapi.h:47,
from conftest.c:779:
/usr/include/linux/lustre/lustre_user.h:2228:2: note: previous definition of 'LLAPI_JSON_STRING' was here
2228 | LLAPI_JSON_STRING
| ^~~~~~~~~~~~~~~~~
In file included from conftest.c:779:
/usr/src/lustre-client-modules-2.14.0-ddn54/lustre/include/lustre/lustreapi.h:599:8: error: redefinition of 'struct llapi_json_item'
599 | struct llapi_json_item {
| ^~~~~~~~~~~~~~~
In file included from /usr/src/lustre-client-modules-2.14.0-ddn54/lustre/include/lustre/lustreapi.h:47,
from conftest.c:779:
/usr/include/linux/lustre/lustre_user.h:2231:8: note: originally defined here
2231 | struct llapi_json_item {
| ^~~~~~~~~~~~~~~
In file included from conftest.c:779:
/usr/src/lustre-client-modules-2.14.0-ddn54/lustre/include/lustre/lustreapi.h:611:8: error: redefinition of 'struct llapi_json_item_list'
611 | struct llapi_json_item_list {
| ^~~~~~~~~~~~~~~~~~~~
In file included from /usr/src/lustre-client-modules-2.14.0-ddn54/lustre/include/lustre/lustreapi.h:47,
from conftest.c:779:
/usr/include/linux/lustre/lustre_user.h:2243:8: note: originally defined here
2243 | struct llapi_json_item_list {
| ^~~~~~~~~~~~~~~~~~~~
In file included from conftest.c:779:
/usr/src/lustre-client-modules-2.14.0-ddn54/lustre/include/lustre/lustreapi.h:643:55: warning: 'enum lu_pcc_type' declared inside parameter list will not be visible outside of this definition or declaration
643 | int llapi_pcc_attach(const char *path, __u32 id, enum lu_pcc_type type);
| ^~~~~~~~~~~
/usr/src/lustre-client-modules-2.14.0-ddn54/lustre/include/lustre/lustreapi.h:645:20: warning: 'enum lu_pcc_type' declared inside parameter list will not be visible outside of this definition or declaration
645 | __u32 id, enum lu_pcc_type type);
| ^~~~~~~~~~~
/usr/src/lustre-client-modules-2.14.0-ddn54/lustre/include/lustre/lustreapi.h:647:24: warning: 'enum lu_pcc_type' declared inside parameter list will not be visible outside of this definition or declaration
647 | __u32 id, enum lu_pcc_type type);
| ^~~~~~~~~~~
/usr/src/lustre-client-modules-2.14.0-ddn54/lustre/include/lustre/lustreapi.h:655:9: warning: 'enum lu_pcc_detach_flags' declared inside parameter list will not be visible outside of this definition or declaration
655 | enum lu_pcc_detach_flags flags);
| ^~~~~~~~~~~~~~~~~~~
/usr/src/lustre-client-modules-2.14.0-ddn54/lustre/include/lustre/lustreapi.h:656:43: warning: 'struct lu_pcc_state' declared inside parameter list will not be visible outside of this definition or declaration
656 | int llapi_pcc_state_get_fd(int fd, struct lu_pcc_state *state);
| ^~~~~~~~~~~~
/usr/src/lustre-client-modules-2.14.0-ddn54/lustre/include/lustre/lustreapi.h:657:50: warning: 'struct lu_pcc_state' declared inside parameter list will not be visible outside of this definition or declaration
657 | int llapi_pcc_state_get(const char *path, struct lu_pcc_state *state);
| ^~~~~~~~~~~~
/usr/src/lustre-client-modules-2.14.0-ddn54/lustre/include/lustre/lustreapi.h:665:53: warning: 'enum lu_pcc_type' declared inside parameter list will not be visible outside of this definition or declaration
665 | int llapi_pcc_backend_id_get(const char *path, enum lu_pcc_type type,
| ^~~~~~~~~~~
/usr/src/lustre-client-modules-2.14.0-ddn54/lustre/include/lustre/lustreapi.h:1092:4: error: 'LCME_FL_EXTENSION' undeclared here (not in a function)
1092 | { LCME_FL_EXTENSION, "extension" },
| ^~~~~~~~~~~~~~~~~
/usr/src/lustre-client-modules-2.14.0-ddn54/lustre/include/lustre/lustreapi.h:1108:4: error: 'HS_PCCRW' undeclared here (not in a function)
1108 | { HS_PCCRW, "pccrw" },
| ^~~~~~~~
/usr/src/lustre-client-modules-2.14.0-ddn54/lustre/include/lustre/lustreapi.h:1109:4: error: 'HS_PCCRO' undeclared here (not in a function)
1109 | { HS_PCCRO, "pccro" },
| ^~~~~~~~
/usr/src/lustre-client-modules-2.14.0-ddn54/lustre/include/lustre/lustreapi.h:1223:35: warning: 'struct lu_heat' declared inside parameter list will not be visible outside of this definition or declaration
1223 | int llapi_heat_get(int fd, struct lu_heat *heat);
| ^~~~~~~
configure:317138: $? = 1
configure: failed program was:
| /* confdefs.h */
I am trying to install ompi to use the DDN exascaler. I have tried with both the current version of ompi https://github.com/open-mpi/ompi and an older version of ompi hosted by DDNStorage https://github.com/DDNStorage/ompi-public. Both gave my errors during the
./configurestep. I am using the DDN exascaler on GCP to link to a slurm cluster there, and my slurm cluster is running ubuntu 20.04.error ourput from configure:
I tried adding header guards around the line of code that triggered the nested redefinition error but this didn't solve it:
A more detailed breakdown of what went wrong, from the DDN version of ompi (output from open mpi's version of ompi is further below)
From open mpi's version of ompi: