Intel® C++ Compiler
Community support and assistance for creating C++ code that runs on platforms based on Intel® processors.
7957 Discussions

Error building openmpi with intel 18.0.3: Open MPI requires a C99 compiler

FlyingHermes
New Contributor I
1,383 Views

Hi,

I'm trying to build the latest version of openmpi (3.1.2) using intel 18.0.3 and the installation process complains about the compiler not being ISO C99. The error occurs for other versions of openmpi and intel (18.0.0 and 17).

Also, for what it's worth, I'm using the Fedora 28 with

1 $ uname -r
2 4.17.19-200.fc28.x86_64
3 $ ldd --version
4 ldd (GNU libc) 2.27

 

I've wrote the following simple build script which download openmpi-3.1.2, extract files and build it.

01 #!/bin/bash
02 set -e
03 INTEL_HOME="<path>"
04 source ${INTEL_HOME}/compilers_and_libraries_2018.3.222/linux/bin/compilervars.sh intel64
05 ifort -v
06 wget https://www.open-mpi.org/software/ompi/v3.1/downloads/openmpi-3.1.2.tar.gz
07 tar -xzvf openmpi-3.1.2.tar.gz
08 TopDir=${pwd}
09 mkdir -p build
10 cd build
11 ./../openmpi-3.1.2/configure --prefix=${TopDir}/install CC=icc CXX=icpc FC=ifort CFLAGS="-D_Float128=__float128"
12 make all install -j

You just have to set the path where intel tools are installed in the variable INTEL_HOME.

Running this script, I have the following output:

001 checking for perl... perl
002  
003 ============================================================================
004 == Configuring Open MPI
005 ============================================================================
006  
007 *** Startup tests
008 checking build system type... x86_64-unknown-linux-gnu
009 checking host system type... x86_64-unknown-linux-gnu
010 checking target system type... x86_64-unknown-linux-gnu
011 checking for gcc... icc
012 checking whether the C compiler works... yes
013 checking for C compiler default output file name... a.out
014 checking for suffix of executables...
015 checking whether we are cross compiling... no
016 checking for suffix of object files... o
017 checking whether we are using the GNU C compiler... yes
018 checking whether icc accepts -g... yes
019 checking for icc option to accept ISO C89... none needed
020 checking whether icc understands -c and -o together... yes
021 checking how to run the C preprocessor... icc -E
022 checking for grep that handles long lines and -e... /usr/bin/grep
023 checking for egrep... /usr/bin/grep -E
024 checking for ANSI C header files... yes
025 checking for sys/types.h... yes
026 checking for sys/stat.h... yes
027 checking for stdlib.h... yes
028 checking for string.h... yes
029 checking for memory.h... yes
030 checking for strings.h... yes
031 checking for inttypes.h... yes
032 checking for stdint.h... yes
033 checking for unistd.h... yes
034 checking minix/config.h usability... no
035 checking minix/config.h presence... no
036 checking for minix/config.h... no
037 checking whether it is safe to define __EXTENSIONS__... yes
038 checking for a BSD-compatible install... /usr/bin/install -c
039 checking whether build environment is sane... yes
040 checking for a thread-safe mkdir -p... /usr/bin/mkdir -p
041 checking for gawk... gawk
042 checking whether make sets $(MAKE)... yes
043 checking for style of include used by make... GNU
044 checking whether make supports nested variables... yes
045 checking whether UID '1000' is supported by ustar format... yes
046 checking whether GID '1000' is supported by ustar format... yes
047 checking how to create a ustar tar archive... gnutar
048 checking dependency style of icc... gcc3
049 checking whether make supports nested variables... (cached) yes
050  
051 *** Checking versions
052 checking for repo version... v3.1.2
053 checking Open MPI version... 3.1.2
054 checking Open MPI release date... Aug 22, 2018
055 checking Open MPI repository version... v3.1.2
056 checking for repo version... v3.1.2
057 checking Open MPI Run-Time Environment version... 3.1.2
058 checking Open MPI Run-Time Environment release date... Aug 22, 2018
059 checking Open MPI Run-Time Environment repository version... v3.1.2
060 checking for repo version... v3.1.2
061 checking Open SHMEM version... 3.1.2
062 checking Open SHMEM release date... Aug 22, 2018
063 checking Open SHMEM repository version... v3.1.2
064 checking for repo version... v3.1.2
065 checking Open Portable Access Layer version... 3.1.2
066 checking Open Portable Access Layer release date... Aug 22, 2018
067 checking Open Portable Access Layer repository version... v3.1.2
068 checking for bootstrap Autoconf version... 2.69
069 checking for bootstrap Automake version... 1.15
070 checking for boostrap Libtool version... 2.4.6
071  
072 *** Initialization, setup
073 configure: builddir: /home/geek/Applications/OPENMPI/tmp/build
074 configure: srcdir: /home/geek/Applications/OPENMPI/tmp/openmpi-3.1.2
075 configure: Detected VPATH build
076 installing to directory "/install"
077  
078 *** OPAL Configuration options
079 checking if want to run code coverage... no
080 checking if want to compile with branch probabilities... no
081 checking if want to debug memory usage... no
082 checking if want to profile memory usage... no
083 checking if want developer-level compiler pickyness... no
084 checking if want developer-level debugging code... no
085 checking if want to developer-level timing framework... no
086 checking if want to install project-internal header files... no
087 checking if want pretty-print stacktrace... yes
088 checking if want pty support... yes
089 checking if want weak symbol support... yes
090 checking if want dlopen support... yes
091 checking for default value of mca_base_component_show_load_errors... enabled by default
092 checking if want heterogeneous support... no
093 checking if word-sized integers must be word-size aligned... yes
094 checking if want IPv6 support... no
095 checking if want package/brand string... Open MPI blopez@deimos Distribution
096 checking if want ident string... 3.1.2
097 checking if want to use an alternative checksum algo for messages... no
098 checking maximum length of processor name... 256
099 checking maximum length of error string... 256
100 checking maximum length of object name... 64
101 checking maximum length of info key... 36
102 checking maximum length of info val... 256
103 checking maximum length of port name... 1024
104 checking maximum length of datarep string... 128
105 checking if want getpwuid support... yes
106 checking for zlib in... (default search paths)
107 checking zlib.h usability... no
108 checking zlib.h presence... yes
109 configure: WARNING: zlib.h: present but cannot be compiled
110 configure: WARNING: zlib.h:     check for missing prerequisite headers?
111 configure: WARNING: zlib.h: see the Autoconf documentation
112 configure: WARNING: zlib.h:     section "Present But Cannot Be Compiled"
113 configure: WARNING: zlib.h: proceeding with the compiler's result
114 configure: WARNING:     ## ------------------------------------------------------ ##
115 configure: WARNING:     ## Report this to http://www.open-mpi.org/community/help/ ##
116 configure: WARNING:     ## ------------------------------------------------------ ##
117 checking for zlib.h... no
118 checking will zlib support be built... no
119 checking __NetBSD__... no
120 checking __FreeBSD__... no
121 checking __OpenBSD__... no
122 checking __DragonFly__... no
123 checking __386BSD__... no
124 checking __bsdi__... no
125 checking __APPLE__... no
126 checking __linux__... yes
127 checking __sun__... no
128 checking __sun... no
129 checking netdb.h usability... no
130 checking netdb.h presence... yes
131 configure: WARNING: netdb.h: present but cannot be compiled
132 configure: WARNING: netdb.h:     check for missing prerequisite headers?
133 configure: WARNING: netdb.h: see the Autoconf documentation
134 configure: WARNING: netdb.h:     section "Present But Cannot Be Compiled"
135 configure: WARNING: netdb.h: proceeding with the compiler's result
136 configure: WARNING:     ## ------------------------------------------------------ ##
137 configure: WARNING:     ## Report this to http://www.open-mpi.org/community/help/ ##
138 configure: WARNING:     ## ------------------------------------------------------ ##
139 checking for netdb.h... no
140 checking netinet/in.h usability... no
141 checking netinet/in.h presence... yes
142 configure: WARNING: netinet/in.h: present but cannot be compiled
143 configure: WARNING: netinet/in.h:     check for missing prerequisite headers?
144 configure: WARNING: netinet/in.h: see the Autoconf documentation
145 configure: WARNING: netinet/in.h:     section "Present But Cannot Be Compiled"
146 configure: WARNING: netinet/in.h: proceeding with the compiler's result
147 configure: WARNING:     ## ------------------------------------------------------ ##
148 configure: WARNING:     ## Report this to http://www.open-mpi.org/community/help/ ##
149 configure: WARNING:     ## ------------------------------------------------------ ##
150 checking for netinet/in.h... no
151 checking netinet/tcp.h usability... no
152 checking netinet/tcp.h presence... yes
153 configure: WARNING: netinet/tcp.h: present but cannot be compiled
154 configure: WARNING: netinet/tcp.h:     check for missing prerequisite headers?
155 configure: WARNING: netinet/tcp.h: see the Autoconf documentation
156 configure: WARNING: netinet/tcp.h:     section "Present But Cannot Be Compiled"
157 configure: WARNING: netinet/tcp.h: proceeding with the compiler's result
158 configure: WARNING:     ## ------------------------------------------------------ ##
159 configure: WARNING:     ## Report this to http://www.open-mpi.org/community/help/ ##
160 configure: WARNING:     ## ------------------------------------------------------ ##
161 checking for netinet/tcp.h... no
162 checking for struct sockaddr_in... no
163 checking if --with-cuda is set... not set (--with-cuda=)
164 checking whether CU_POINTER_ATTRIBUTE_SYNC_MEMOPS is declared... no
165 checking whether cuPointerGetAttributes is declared... no
166 checking if have cuda support... no
167 checking if user requested external PMIx support()... no
168  
169 *** ORTE Configuration options
170 checking if want orterun "--prefix" behavior to be enabled by default... no
171  
172 *** OMPI Configuration options
173 checking if want compile-time warnings inside of mpi.h... yes
174 checking if want sparse process groups... no
175 checking if want peruse support... no
176 checking if want Fortran MPI bindings...  (try)
177 checking if want C++ bindings... no
178 checking if want MPI::SEEK_SET support... yes
179 checking if want run-time MPI parameter checking... runtime
180  
181 *** OSHMEM Configuration options
182 checking if want oshmem... yes
183 checking if want SGI/Quadrics compatibility mode... yes
184 checking if want OSHMEM API parameter checking... always
185 checking for on_exit... yes
186 checking if want pshmem... yes
187 checking if want to build OSHMEM fortran bindings... yes
188 checking if want custom libmpi(_FOO) name... mpi
189 checking if want wrapper compiler rpath support... yes
190 checking if want wrapper compiler runpath support... yes
191  
192 ============================================================================
193 == Compiler and preprocessor tests
194 ============================================================================
195  
196 *** C compiler and preprocessor
197 checking for gcc... (cached) icc
198 checking whether we are using the GNU C compiler... (cached) yes
199 checking whether icc accepts -g... (cached) yes
200 checking for icc option to accept ISO C89... (cached) none needed
201 checking whether icc understands -c and -o together... (cached) yes
202 checking for icc option to accept ISO C99... unsupported
203 configure: WARNING: Open MPI requires a C99 compiler
204 configure: error: Aborting

 

I'm award of this link: https://stackoverflow.com/questions/47313348/open-mpi-with-icc-open-mpi-requires-a-c99-compiler

in which a workaround is given. This workaround consists of adding the options

1 CC=icc CXX=icpc FC=ifort CFLAGS="-D_Float128=__float128"

 

when running configure but it did not help for me.

Any idea of what is going wrong here ?

Thanks

0 Kudos
2 Replies
FlyingHermes
New Contributor I
1,383 Views

Same message than above, but with better formatting.

Hi,
I'm trying to build the latest version of openmpi (3.1.2) using intel 18.0.3 and the installation process complains about the compiler not being ISO C99. The error occurs for other versions of openmpi and intel (18.0.0 and 17).
Also, for what it's worth, I'm using the Fedora 28 with

$ uname -r
4.17.19-200.fc28.x86_64
$ ldd --version
ldd (GNU libc) 2.27


I've wrote the following simple build script which download openmpi-3.1.2, extract files and build it.

#!/bin/bash
set -e
INTEL_HOME="<path>"
source ${INTEL_HOME}/compilers_and_libraries_2018.3.222/linux/bin/compilervars.sh intel64
ifort -v
wget https://www.open-mpi.org/software/ompi/v3.1/downloads/openmpi-3.1.2.tar.gz
tar -xzvf openmpi-3.1.2.tar.gz
TopDir=${pwd}
mkdir -p build
cd build
./../openmpi-3.1.2/configure --prefix=${TopDir}/install CC=icc CXX=icpc FC=ifort CFLAGS="-D_Float128=__float128"
make all install -j

You just have to set the path where intel tools are installed in the variable INTEL_HOME.
Running this script, I have the following output:

checking for perl... perl
 
============================================================================
== Configuring Open MPI
============================================================================
 
*** Startup tests
checking build system type... x86_64-unknown-linux-gnu
checking host system type... x86_64-unknown-linux-gnu
checking target system type... x86_64-unknown-linux-gnu
checking for gcc... icc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables...
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether icc accepts -g... yes
checking for icc option to accept ISO C89... none needed
checking whether icc understands -c and -o together... yes
checking how to run the C preprocessor... icc -E
checking for grep that handles long lines and -e... /usr/bin/grep
checking for egrep... /usr/bin/grep -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking minix/config.h usability... no
checking minix/config.h presence... no
checking for minix/config.h... no
checking whether it is safe to define __EXTENSIONS__... yes
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /usr/bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking for style of include used by make... GNU
checking whether make supports nested variables... yes
checking whether UID '1000' is supported by ustar format... yes
checking whether GID '1000' is supported by ustar format... yes
checking how to create a ustar tar archive... gnutar
checking dependency style of icc... gcc3
checking whether make supports nested variables... (cached) yes
 
*** Checking versions
checking for repo version... v3.1.2
checking Open MPI version... 3.1.2
checking Open MPI release date... Aug 22, 2018
checking Open MPI repository version... v3.1.2
checking for repo version... v3.1.2
checking Open MPI Run-Time Environment version... 3.1.2
checking Open MPI Run-Time Environment release date... Aug 22, 2018
checking Open MPI Run-Time Environment repository version... v3.1.2
checking for repo version... v3.1.2
checking Open SHMEM version... 3.1.2
checking Open SHMEM release date... Aug 22, 2018
checking Open SHMEM repository version... v3.1.2
checking for repo version... v3.1.2
checking Open Portable Access Layer version... 3.1.2
checking Open Portable Access Layer release date... Aug 22, 2018
checking Open Portable Access Layer repository version... v3.1.2
checking for bootstrap Autoconf version... 2.69
checking for bootstrap Automake version... 1.15
checking for boostrap Libtool version... 2.4.6
 
*** Initialization, setup
configure: builddir: /home/geek/Applications/OPENMPI/tmp/build
configure: srcdir: /home/geek/Applications/OPENMPI/tmp/openmpi-3.1.2
configure: Detected VPATH build
installing to directory "/install"
 
*** OPAL Configuration options
checking if want to run code coverage... no
checking if want to compile with branch probabilities... no
checking if want to debug memory usage... no
checking if want to profile memory usage... no
checking if want developer-level compiler pickyness... no
checking if want developer-level debugging code... no
checking if want to developer-level timing framework... no
checking if want to install project-internal header files... no
checking if want pretty-print stacktrace... yes
checking if want pty support... yes
checking if want weak symbol support... yes
checking if want dlopen support... yes
checking for default value of mca_base_component_show_load_errors... enabled by default
checking if want heterogeneous support... no
checking if word-sized integers must be word-size aligned... yes
checking if want IPv6 support... no
checking if want package/brand string... Open MPI blopez@deimos Distribution
checking if want ident string... 3.1.2
checking if want to use an alternative checksum algo for messages... no
checking maximum length of processor name... 256
checking maximum length of error string... 256
checking maximum length of object name... 64
checking maximum length of info key... 36
checking maximum length of info val... 256
checking maximum length of port name... 1024
checking maximum length of datarep string... 128
checking if want getpwuid support... yes
checking for zlib in... (default search paths)
checking zlib.h usability... no
checking zlib.h presence... yes
configure: WARNING: zlib.h: present but cannot be compiled
configure: WARNING: zlib.h:     check for missing prerequisite headers?
configure: WARNING: zlib.h: see the Autoconf documentation
configure: WARNING: zlib.h:     section "Present But Cannot Be Compiled"
configure: WARNING: zlib.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 zlib.h... no
checking will zlib support be built... no
checking __NetBSD__... no
checking __FreeBSD__... no
checking __OpenBSD__... no
checking __DragonFly__... no
checking __386BSD__... no
checking __bsdi__... no
checking __APPLE__... no
checking __linux__... yes
checking __sun__... no
checking __sun... no
checking netdb.h usability... no
checking netdb.h presence... yes
configure: WARNING: netdb.h: present but cannot be compiled
configure: WARNING: netdb.h:     check for missing prerequisite headers?
configure: WARNING: netdb.h: see the Autoconf documentation
configure: WARNING: netdb.h:     section "Present But Cannot Be Compiled"
configure: WARNING: netdb.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 netdb.h... no
checking netinet/in.h usability... no
checking netinet/in.h presence... yes
configure: WARNING: netinet/in.h: present but cannot be compiled
configure: WARNING: netinet/in.h:     check for missing prerequisite headers?
configure: WARNING: netinet/in.h: see the Autoconf documentation
configure: WARNING: netinet/in.h:     section "Present But Cannot Be Compiled"
configure: WARNING: netinet/in.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 netinet/in.h... no
checking netinet/tcp.h usability... no
checking netinet/tcp.h presence... yes
configure: WARNING: netinet/tcp.h: present but cannot be compiled
configure: WARNING: netinet/tcp.h:     check for missing prerequisite headers?
configure: WARNING: netinet/tcp.h: see the Autoconf documentation
configure: WARNING: netinet/tcp.h:     section "Present But Cannot Be Compiled"
configure: WARNING: netinet/tcp.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 netinet/tcp.h... no
checking for struct sockaddr_in... no
checking if --with-cuda is set... not set (--with-cuda=)
checking whether CU_POINTER_ATTRIBUTE_SYNC_MEMOPS is declared... no
checking whether cuPointerGetAttributes is declared... no
checking if have cuda support... no
checking if user requested external PMIx support()... no
 
*** ORTE Configuration options
checking if want orterun "--prefix" behavior to be enabled by default... no
 
*** OMPI Configuration options
checking if want compile-time warnings inside of mpi.h... yes
checking if want sparse process groups... no
checking if want peruse support... no
checking if want Fortran MPI bindings...  (try)
checking if want C++ bindings... no
checking if want MPI::SEEK_SET support... yes
checking if want run-time MPI parameter checking... runtime
 
*** OSHMEM Configuration options
checking if want oshmem... yes
checking if want SGI/Quadrics compatibility mode... yes
checking if want OSHMEM API parameter checking... always
checking for on_exit... yes
checking if want pshmem... yes
checking if want to build OSHMEM fortran bindings... yes
checking if want custom libmpi(_FOO) name... mpi
checking if want wrapper compiler rpath support... yes
checking if want wrapper compiler runpath support... yes
 
============================================================================
== Compiler and preprocessor tests
============================================================================
 
*** C compiler and preprocessor
checking for gcc... (cached) icc
checking whether we are using the GNU C compiler... (cached) yes
checking whether icc accepts -g... (cached) yes
checking for icc option to accept ISO C89... (cached) none needed
checking whether icc understands -c and -o together... (cached) yes
checking for icc option to accept ISO C99... unsupported
configure: WARNING: Open MPI requires a C99 compiler
configure: error: Aborting


I'm award of this link: https://stackoverflow.com/questions/47313348/open-mpi-with-icc-open-mpi-requires-a-c99-compiler
in which a workaround is given. This workaround consists of adding the options

CC=icc CXX=icpc FC=ifort CFLAGS="-D_Float128=__float128"

when running configure but it did not help for me.
Any idea of what is going wrong here ?

Thanks

 

0 Kudos
Viet_H_Intel
Moderator
1,383 Views

Hi,

Seems like your OS and Binutils are not supported by Intel compiler version 18.0. Please refer to Release Notes for details.

https://software.intel.com/en-us/articles/intel-c-compiler-180-release-notes

 

Thanks,

Viet

0 Kudos
Reply