Hi, I am trying to compile the Chandrasekhar release of the Einstein Toolkit on an AIX cluster (CINECA) using the native xlc compiler. It fails with the following message:
"/sp6/usersissa/sists082/sim_build/pizza_dev/configs/pizza_dev/build/LoopControl/loopcontrol.c", line 46.8: 1506-1108 (I) The use of keyword '__inline__' is non-portable. "/sp6/usersissa/sists082/sim_build/pizza_dev/configs/pizza_dev/build/LoopControl/loopcontrol.c", line 946.1: 1506-343 (S) Redeclaration of lc_statmap_init differs from previous declaration on line 513 of "/sp6/usersissa/sists082/sim_build/pizza_dev/configs/pizza_dev/build/LoopControl/loopcontrol.c". "/sp6/usersissa/sists082/sim_build/pizza_dev/configs/pizza_dev/build/LoopControl/loopcontrol.c", line 946.1: 1506-376 (I) Redeclaration of lc_statmap_init has a different number of fixed parameters than the previous declaration. "/sp6/usersissa/sists082/sim_build/pizza_dev/configs/pizza_dev/build/LoopControl/loopcontrol.c", line 946.1: 1506-377 (I) The type "char*" of parameter 3 differs from the previous type "const char* restrict const". "/sp6/usersissa/sists082/sim_build/pizza_dev/configs/pizza_dev/build/LoopControl/loopcontrol.c", line 957.1: 1506-343 (S) Redeclaration of lc_control_init differs from previous declaration on line 546 of "/sp6/usersissa/sists082/sim_build/pizza_dev/configs/pizza_dev/build/LoopControl/loopcontrol.c". "/sp6/usersissa/sists082/sim_build/pizza_dev/configs/pizza_dev/build/LoopControl/loopcontrol.c", line 957.1: 1506-377 (I) The type "const int* restrict const" of parameter 3 differs from the previous type "const int". "/sp6/usersissa/sists082/sim_build/pizza_dev/configs/pizza_dev/build/LoopControl/loopcontrol.c", line 977.1: 1506-334 (S) Identifier lc_control_finish has already been defined on line 801 of "/sp6/usersissa/sists082/sim_build/pizza_dev/configs/pizza_dev/build/LoopControl/loopcontrol.c". gmake[3]: *** [loopcontrol.c.o] Error 1 gmake[2]: *** [make.checked] Error 2 gmake[1]: *** [/sp6/usersissa/sists082/sim_build/pizza_dev/configs/pizza_dev/lib/libthorn_LoopControl.a] Error 2 gmake: *** [pizza_dev] Error 2
--------------------------
my option file looks like this:
CC = xlc_r CXX = xlC_r F90 = xlf90_r F77 = xlf_r CPP = cpp FPP = /opt/freeware/bin/cpp
CPPFLAGS = CFLAGS = -qspill=100000 -qsuppress=1501-245 -qlanglvl=stdc99 CXXFLAGS = -qspill=100000 -qsuppress=1501-245 -qrtti=all F77FLAGS = -qspill=100000 -qsuppress=1501-245 F90FLAGS = -qspill=100000 -qsuppress=1501-245
DEBUG = no OPTIMISE = yes
OPTIMISE = yes CPP_OPTIMISE_FLAGS = -DNDEBUG FPP_OPTIMISE_FLAGS = -DNDEBUG C_OPTIMISE_FLAGS = -O2 -qmaxmem=-1 -qarch=pwr6 -qtune=pwr6 CXX_OPTIMISE_FLAGS = -O2 -qmaxmem=-1 -qarch=pwr6 -qtune=pwr6 F77_OPTIMISE_FLAGS = -O2 -qmaxmem=-1 -qarch=pwr6 -qtune=pwr6 F90_OPTIMISE_FLAGS = -O2 -qmaxmem=-1 -qarch=pwr6 -qtune=pwr6
WARN = yes
HDF5 = yes HDF5_DIR = /cineca/prod/libraries/hdf5/1.8.4_ser/xl--10.1/ LIBSZ_DIR = /cineca/prod/libraries/szlib/2.1/xl--10.1/ GSL = yes GSL_DIR = /cineca/prod/libraries/gsl/1.9/xl--10.1/ MPI = NATIVE PTHREADS = no
--------------------------
The compiler versions are:
IBM XL C/C++ for AIX, V10.1 Version: 10.01.0000.0008
IBM XL Fortran for AIX, V12.1 Version: 12.01.0000.0009
--------------------------
The same code compiled just fine on Ubuntu 10.10 using the gnu compiler. Any ideas ?
Cheers, Wolfgang.
Wolfgang
While I don't know CINECA, I have configuration files for several other systems, available at https://svn.cct.lsu.edu/repos/numrel/simfactory/branches/PYSIM_2010/mdb/optionlists/. You may find the following interesting:
vip.cfg (AIX, xlc) bp.cfg (AIX, xlc)
and maybe also
bd.cfg (Linux, xlc)
I don't know why the compiler would think that lc_statmap_init is redeclared (it is not), but maybe passing certain magic compiler flags will help. You can use the above configuration options for ideas.
-erik
On Fri, Feb 18, 2011 at 1:33 PM, Wolfgang Kastaun kastaun@sissa.it wrote:
Hi, I am trying to compile the Chandrasekhar release of the Einstein Toolkit on an AIX cluster (CINECA) using the native xlc compiler. It fails with the following message:
"/sp6/usersissa/sists082/sim_build/pizza_dev/configs/pizza_dev/build/LoopControl/loopcontrol.c", line 46.8: 1506-1108 (I) The use of keyword '__inline__' is non-portable. "/sp6/usersissa/sists082/sim_build/pizza_dev/configs/pizza_dev/build/LoopControl/loopcontrol.c", line 946.1: 1506-343 (S) Redeclaration of lc_statmap_init differs from previous declaration on line 513 of "/sp6/usersissa/sists082/sim_build/pizza_dev/configs/pizza_dev/build/LoopControl/loopcontrol.c". "/sp6/usersissa/sists082/sim_build/pizza_dev/configs/pizza_dev/build/LoopControl/loopcontrol.c", line 946.1: 1506-376 (I) Redeclaration of lc_statmap_init has a different number of fixed parameters than the previous declaration. "/sp6/usersissa/sists082/sim_build/pizza_dev/configs/pizza_dev/build/LoopControl/loopcontrol.c", line 946.1: 1506-377 (I) The type "char*" of parameter 3 differs from the previous type "const char* restrict const". "/sp6/usersissa/sists082/sim_build/pizza_dev/configs/pizza_dev/build/LoopControl/loopcontrol.c", line 957.1: 1506-343 (S) Redeclaration of lc_control_init differs from previous declaration on line 546 of "/sp6/usersissa/sists082/sim_build/pizza_dev/configs/pizza_dev/build/LoopControl/loopcontrol.c". "/sp6/usersissa/sists082/sim_build/pizza_dev/configs/pizza_dev/build/LoopControl/loopcontrol.c", line 957.1: 1506-377 (I) The type "const int* restrict const" of parameter 3 differs from the previous type "const int". "/sp6/usersissa/sists082/sim_build/pizza_dev/configs/pizza_dev/build/LoopControl/loopcontrol.c", line 977.1: 1506-334 (S) Identifier lc_control_finish has already been defined on line 801 of "/sp6/usersissa/sists082/sim_build/pizza_dev/configs/pizza_dev/build/LoopControl/loopcontrol.c". gmake[3]: *** [loopcontrol.c.o] Error 1 gmake[2]: *** [make.checked] Error 2 gmake[1]: *** [/sp6/usersissa/sists082/sim_build/pizza_dev/configs/pizza_dev/lib/libthorn_LoopControl.a] Error 2 gmake: *** [pizza_dev] Error 2
my option file looks like this:
CC = xlc_r CXX = xlC_r F90 = xlf90_r F77 = xlf_r CPP = cpp FPP = /opt/freeware/bin/cpp
CPPFLAGS = CFLAGS = -qspill=100000 -qsuppress=1501-245 -qlanglvl=stdc99 CXXFLAGS = -qspill=100000 -qsuppress=1501-245 -qrtti=all F77FLAGS = -qspill=100000 -qsuppress=1501-245 F90FLAGS = -qspill=100000 -qsuppress=1501-245
DEBUG = no OPTIMISE = yes
OPTIMISE = yes CPP_OPTIMISE_FLAGS = -DNDEBUG FPP_OPTIMISE_FLAGS = -DNDEBUG C_OPTIMISE_FLAGS = -O2 -qmaxmem=-1 -qarch=pwr6 -qtune=pwr6 CXX_OPTIMISE_FLAGS = -O2 -qmaxmem=-1 -qarch=pwr6 -qtune=pwr6 F77_OPTIMISE_FLAGS = -O2 -qmaxmem=-1 -qarch=pwr6 -qtune=pwr6 F90_OPTIMISE_FLAGS = -O2 -qmaxmem=-1 -qarch=pwr6 -qtune=pwr6
WARN = yes
HDF5 = yes HDF5_DIR = /cineca/prod/libraries/hdf5/1.8.4_ser/xl--10.1/ LIBSZ_DIR = /cineca/prod/libraries/szlib/2.1/xl--10.1/ GSL = yes GSL_DIR = /cineca/prod/libraries/gsl/1.9/xl--10.1/ MPI = NATIVE PTHREADS = no
The compiler versions are:
IBM XL C/C++ for AIX, V10.1 Version: 10.01.0000.0008
IBM XL Fortran for AIX, V12.1 Version: 12.01.0000.0009
The same code compiled just fine on Ubuntu 10.10 using the gnu compiler. Any ideas ?
Cheers, Wolfgang.
Users mailing list Users@einsteintoolkit.org http://lists.einsteintoolkit.org/mailman/listinfo/users
On Fri, 2011-02-18 at 14:03 -0500, Erik Schnetter wrote:
Wolfgang
While I don't know CINECA, I have configuration files for several other systems, available at https://svn.cct.lsu.edu/repos/numrel/simfactory/branches/PYSIM_2010/mdb/optionlists/. You may find the following interesting:
vip.cfg (AIX, xlc) bp.cfg (AIX, xlc)
and maybe also
bd.cfg (Linux, xlc)
Thanks. I tried a few of those compiler switches without luck, so tried to find the root of the problem. Looking at the code in the build directory, i.e. the source file that actually gets compiled, I notice that the function lc_statmap_ini IS indeed redeclared. In the source (not build) directry, we have the lines in loopcontrol.c:
944 CCTK_FCALL 945 void 946 CCTK_FNAME (lc_statmap_init) (int * restrict const initialised, 947 lc_statmap_t * restrict const lm, 948 ONE_FORTSTRING_ARG)
in the build directory, we have instead
944 CCTK_FCALL 945 void 946 lc_statmap_init (int * restrict const initialised, 947 lc_statmap_t * restrict const lm, 948 ONE_FORTSTRING_ARG)
According to the manual, somewhere in the build process CCTK_FNAME was supposed to alter the function name in order to declare another version callable from FORTRAN. But instead the name was left intact. My next question is thus where and when is FNAME defined, where in the build process is it applied, and how.
Wolfgang.
I don't know why the compiler would think that lc_statmap_init is redeclared (it is not), but maybe passing certain magic compiler flags will help. You can use the above configuration options for ideas.
-erik
On Fri, Feb 18, 2011 at 1:33 PM, Wolfgang Kastaun kastaun@sissa.it wrote:
Hi, I am trying to compile the Chandrasekhar release of the Einstein Toolkit on an AIX cluster (CINECA) using the native xlc compiler. It fails with the following message:
"/sp6/usersissa/sists082/sim_build/pizza_dev/configs/pizza_dev/build/LoopControl/loopcontrol.c", line 46.8: 1506-1108 (I) The use of keyword '__inline__' is non-portable. "/sp6/usersissa/sists082/sim_build/pizza_dev/configs/pizza_dev/build/LoopControl/loopcontrol.c", line 946.1: 1506-343 (S) Redeclaration of lc_statmap_init differs from previous declaration on line 513 of "/sp6/usersissa/sists082/sim_build/pizza_dev/configs/pizza_dev/build/LoopControl/loopcontrol.c". "/sp6/usersissa/sists082/sim_build/pizza_dev/configs/pizza_dev/build/LoopControl/loopcontrol.c", line 946.1: 1506-376 (I) Redeclaration of lc_statmap_init has a different number of fixed parameters than the previous declaration. "/sp6/usersissa/sists082/sim_build/pizza_dev/configs/pizza_dev/build/LoopControl/loopcontrol.c", line 946.1: 1506-377 (I) The type "char*" of parameter 3 differs from the previous type "const char* restrict const". "/sp6/usersissa/sists082/sim_build/pizza_dev/configs/pizza_dev/build/LoopControl/loopcontrol.c", line 957.1: 1506-343 (S) Redeclaration of lc_control_init differs from previous declaration on line 546 of "/sp6/usersissa/sists082/sim_build/pizza_dev/configs/pizza_dev/build/LoopControl/loopcontrol.c". "/sp6/usersissa/sists082/sim_build/pizza_dev/configs/pizza_dev/build/LoopControl/loopcontrol.c", line 957.1: 1506-377 (I) The type "const int* restrict const" of parameter 3 differs from the previous type "const int". "/sp6/usersissa/sists082/sim_build/pizza_dev/configs/pizza_dev/build/LoopControl/loopcontrol.c", line 977.1: 1506-334 (S) Identifier lc_control_finish has already been defined on line 801 of "/sp6/usersissa/sists082/sim_build/pizza_dev/configs/pizza_dev/build/LoopControl/loopcontrol.c". gmake[3]: *** [loopcontrol.c.o] Error 1 gmake[2]: *** [make.checked] Error 2 gmake[1]: *** [/sp6/usersissa/sists082/sim_build/pizza_dev/configs/pizza_dev/lib/libthorn_LoopControl.a] Error 2 gmake: *** [pizza_dev] Error 2
my option file looks like this:
CC = xlc_r CXX = xlC_r F90 = xlf90_r F77 = xlf_r CPP = cpp FPP = /opt/freeware/bin/cpp
CPPFLAGS = CFLAGS = -qspill=100000 -qsuppress=1501-245 -qlanglvl=stdc99 CXXFLAGS = -qspill=100000 -qsuppress=1501-245 -qrtti=all F77FLAGS = -qspill=100000 -qsuppress=1501-245 F90FLAGS = -qspill=100000 -qsuppress=1501-245
DEBUG = no OPTIMISE = yes
OPTIMISE = yes CPP_OPTIMISE_FLAGS = -DNDEBUG FPP_OPTIMISE_FLAGS = -DNDEBUG C_OPTIMISE_FLAGS = -O2 -qmaxmem=-1 -qarch=pwr6 -qtune=pwr6 CXX_OPTIMISE_FLAGS = -O2 -qmaxmem=-1 -qarch=pwr6 -qtune=pwr6 F77_OPTIMISE_FLAGS = -O2 -qmaxmem=-1 -qarch=pwr6 -qtune=pwr6 F90_OPTIMISE_FLAGS = -O2 -qmaxmem=-1 -qarch=pwr6 -qtune=pwr6
WARN = yes
HDF5 = yes HDF5_DIR = /cineca/prod/libraries/hdf5/1.8.4_ser/xl--10.1/ LIBSZ_DIR = /cineca/prod/libraries/szlib/2.1/xl--10.1/ GSL = yes GSL_DIR = /cineca/prod/libraries/gsl/1.9/xl--10.1/ MPI = NATIVE PTHREADS = no
The compiler versions are:
IBM XL C/C++ for AIX, V10.1 Version: 10.01.0000.0008
IBM XL Fortran for AIX, V12.1 Version: 12.01.0000.0009
The same code compiled just fine on Ubuntu 10.10 using the gnu compiler. Any ideas ?
Cheers, Wolfgang.
Users mailing list Users@einsteintoolkit.org http://lists.einsteintoolkit.org/mailman/listinfo/users
Hello Wolfgang, Erik,
Thanks. I tried a few of those compiler switches without luck, so tried to find the root of the problem. Looking at the code in the build directory, i.e. the source file that actually gets compiled, I notice that the function lc_statmap_ini IS indeed redeclared. In the source (not build) directry, we have the lines in loopcontrol.c:
944 CCTK_FCALL 945 void 946 CCTK_FNAME (lc_statmap_init) (int * restrict const initialised, 947 lc_statmap_t * restrict const lm, 948 ONE_FORTSTRING_ARG)
This won't help you fix the error (but might tell you why you encounter it), but the Cactus user guide says that (section C1.9.4 "Calls between Different Programming Languages"): --8<-- void CCTK FCALL CCTK FNAME(<routine name>)(int *ierr, <argument list>) <rewrite routine code, or call C routine itself>
The convention used in Cactus, is that <routine name> be the same as any C routine name, and that this is mixed-case. The macros change the case and number of underscores of the routine name to match that expected by Fortran. --8<-- so if your Fortran compiler uses no extra underscores in functions names (which is what it seems gfortran seems to do) and makes all Fortran function names lowercase (and Cactus detected this behaviour correctly), then LoopControl is using something "different" than the convention when using CCTK_FNAME (lc_statmap_init). Of course it could also be that CCTK_FNAME was not correctly set up during the configuration stage.
Yours, Roland
Wolfgang
As Roland indicates, this is an issue with the Fortran compiler. The option -qextname modifies the Fortran name mangling to add an underscore to Fortran name, so that Fortran and C names differ. You then need to reconfigure (run the *-config stage), so that Cactus detects this change. You will then also need to delete all existing object files (make *-clean).
-erik
On Fri, Feb 18, 2011 at 5:55 PM, Roland Haas roland.haas@physics.gatech.edu wrote:
Hello Wolfgang, Erik,
Thanks. I tried a few of those compiler switches without luck, so tried to find the root of the problem. Looking at the code in the build directory, i.e. the source file that actually gets compiled, I notice that the function lc_statmap_ini IS indeed redeclared. In the source (not build) directry, we have the lines in loopcontrol.c:
944 CCTK_FCALL 945 void 946 CCTK_FNAME (lc_statmap_init) (int * restrict const initialised, 947 lc_statmap_t * restrict const lm, 948 ONE_FORTSTRING_ARG)
This won't help you fix the error (but might tell you why you encounter it), but the Cactus user guide says that (section C1.9.4 "Calls between Different Programming Languages"): --8<-- void CCTK FCALL CCTK FNAME(<routine name>)(int *ierr, <argument list>) <rewrite routine code, or call C routine itself>
The convention used in Cactus, is that <routine name> be the same as any C routine name, and that this is mixed-case. The macros change the case and number of underscores of the routine name to match that expected by Fortran. --8<-- so if your Fortran compiler uses no extra underscores in functions names (which is what it seems gfortran seems to do) and makes all Fortran function names lowercase (and Cactus detected this behaviour correctly), then LoopControl is using something "different" than the convention when using CCTK_FNAME (lc_statmap_init). Of course it could also be that CCTK_FNAME was not correctly set up during the configuration stage.
Yours, Roland
-- My email is as private as my paper mail. I therefore support encrypting and signing email messages. Get my PGP key from http://keys.gnupg.net.
Users mailing list Users@einsteintoolkit.org http://lists.einsteintoolkit.org/mailman/listinfo/users
On Fri, 2011-02-18 at 19:21 -0500, Erik Schnetter wrote:
Wolfgang
As Roland indicates, this is an issue with the Fortran compiler. The option -qextname modifies the Fortran name mangling to add an underscore to Fortran name, so that Fortran and C names differ. You then need to reconfigure (run the *-config stage), so that Cactus detects this change. You will then also need to delete all existing object files (make *-clean).
Using -qextname did the trick. I had tried it before, but without make clean, just reconfigure.
Cheers, Wolfgang.
-erik
On Fri, Feb 18, 2011 at 5:55 PM, Roland Haas roland.haas@physics.gatech.edu wrote:
Hello Wolfgang, Erik,
Thanks. I tried a few of those compiler switches without luck, so tried to find the root of the problem. Looking at the code in the build directory, i.e. the source file that actually gets compiled, I notice that the function lc_statmap_ini IS indeed redeclared. In the source (not build) directry, we have the lines in loopcontrol.c:
944 CCTK_FCALL 945 void 946 CCTK_FNAME (lc_statmap_init) (int * restrict const initialised, 947 lc_statmap_t * restrict const lm, 948 ONE_FORTSTRING_ARG)
This won't help you fix the error (but might tell you why you encounter it), but the Cactus user guide says that (section C1.9.4 "Calls between Different Programming Languages"): --8<-- void CCTK FCALL CCTK FNAME(<routine name>)(int *ierr, <argument list>) <rewrite routine code, or call C routine itself>
The convention used in Cactus, is that <routine name> be the same as any C routine name, and that this is mixed-case. The macros change the case and number of underscores of the routine name to match that expected by Fortran. --8<-- so if your Fortran compiler uses no extra underscores in functions names (which is what it seems gfortran seems to do) and makes all Fortran function names lowercase (and Cactus detected this behaviour correctly), then LoopControl is using something "different" than the convention when using CCTK_FNAME (lc_statmap_init). Of course it could also be that CCTK_FNAME was not correctly set up during the configuration stage.
Yours, Roland
-- My email is as private as my paper mail. I therefore support encrypting and signing email messages. Get my PGP key from http://keys.gnupg.net.
Users mailing list Users@einsteintoolkit.org http://lists.einsteintoolkit.org/mailman/listinfo/users
users@lists.einsteintoolkit.org