When on the IA64 platform, if we're using the Intel 9.0 v20051201
compiler, automatically disable the ptmalloc component. It seems that optimization level -O2 or higher will cause the generated code to do Bad Things (e.g., opalcc will segv). Upgrading to the Intel 9.1 compiler seems to fix the problem. This closes ticket #227. This commit was SVN r11076.
Этот коммит содержится в:
родитель
bd7e8febb1
Коммит
7aac77a37c
4
NEWS
4
NEWS
@ -45,6 +45,10 @@ version 1.0.
|
||||
1.1.1
|
||||
-----
|
||||
|
||||
- If using the Intel 9.0 v20051201 compiler on an IA64 platform, the
|
||||
ptmalloc2 memory manager component will automatically disable
|
||||
itself. Other versions of the Intel compiler on this platform seem
|
||||
to work fine (e.g., 9.1).
|
||||
- Added "host" MPI_Info key to MPI_COMM_SPAWN and
|
||||
MPI_COMM_SPAWN_MULTIPLE.
|
||||
- Add missing C++ methods: MPI::Datatype::Create_indexed_block,
|
||||
|
7
README
7
README
@ -116,6 +116,13 @@ base as of this writing (17 Jun 2006):
|
||||
compiling certain Open MPI source code files. As such, it is not
|
||||
supported.
|
||||
|
||||
- The Intel 9.0 v20051201 compiler on IA64 platforms seems to have a
|
||||
problem with optimizing the ptmalloc2 memory manager component (the
|
||||
generated code will segv). As such, the ptmalloc2 component will
|
||||
automatically disable itself if it detects that it is on this
|
||||
platform/compiler combination. The only effect that this should
|
||||
have is that the MCA parameter mpi_leave_pinned will be inoperative.
|
||||
|
||||
- Early versions of the Portland Group 6.0 compiler have problems
|
||||
creating the C++ MPI bindings as a shared library (e.g., v6.0-1).
|
||||
Tests with later versions show that this has been fixed (e.g.,
|
||||
|
@ -60,6 +60,31 @@ AC_DEFUN([MCA_memory_ptmalloc2_CONFIG],[
|
||||
[memory_ptmalloc2_happy="yes"],
|
||||
[memory_ptmalloc2_happy="no"])])
|
||||
|
||||
# Per ticket #227, Intel 9.0 v20051201 on ia64 with optimization
|
||||
# of -O2 or higher will bork ptmalloc2 in strange in mysterious
|
||||
# ways. Doh! So if the compiler vendor is intel and we're on an
|
||||
# ia64 box, run "icc --version" and snarf the version string. If
|
||||
# it's 9.0 and the version is <= 20051201, then disable ptmalloc2.
|
||||
# Executive decision: ignore optimization levels (even though -O1
|
||||
# and -O0 seem to work). The upgrade to 9.1 is free, so that's a
|
||||
# better path than trying to make a much more complicated test
|
||||
# here.
|
||||
|
||||
case $host in
|
||||
ia64-*)
|
||||
AS_IF([test "$ompi_c_vendor" = "intel"],
|
||||
[# check for v9.0 <= 20051201
|
||||
icc_major_ver="`$CC --version | head -n 1 | awk '{ print [$]3 }'`"
|
||||
icc_minor_ver="`$CC --version | head -n 1 | awk '{ print [$]4 }'`"
|
||||
AS_IF([test "$icc_major_ver" = "9.0" -a "`expr $icc_minor_ver \<= 20051201`" = "1"],
|
||||
[memory_ptmalloc2_happy="no"
|
||||
AC_MSG_WARN([*** Detected Intel C compiler v9.0 <= 20051201 on ia64])
|
||||
AC_MSG_WARN([*** This compiler/platform combination has known problems with ptmalloc2])
|
||||
AC_MSG_WARN([*** Automatically disabling ptmalloc2])])
|
||||
unset icc_major_ver icc_minor_ver])
|
||||
;;
|
||||
esac
|
||||
|
||||
AS_IF([test "$memory_ptmalloc2_happy" = "yes"],
|
||||
[# check for malloc.h
|
||||
AC_CHECK_HEADER([malloc.h],
|
||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user