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