diff --git a/base/modules/psb_config.h.in b/base/modules/psb_config.h.in new file mode 100644 index 00000000..b3c8d11f --- /dev/null +++ b/base/modules/psb_config.h.in @@ -0,0 +1,29 @@ +#ifndef PSB_CONFIG_H +#define PSB_CONFIG_H +#include +#include +#include + +#define @IPK@ +#define @LPK@ + + +typedef int32_t psb_m_t; + +#if defined(IPK4) && defined(LPK4) +typedef int32_t psb_i_t; +typedef int32_t psb_l_t; +#elif defined(IPK4) && defined(LPK8) +typedef int32_t psb_i_t; +typedef int64_t psb_l_t; +#elif defined(IPK8) && defined(LPK8) +typedef int64_t psb_i_t; +typedef int64_t psb_l_t; +#else +#endif +typedef int64_t psb_e_t; + +typedef float psb_s_t; +typedef double psb_d_t; +typedef float complex psb_c_t; +typedef double complex psb_z_t; diff --git a/base/modules/psb_internals.h b/base/modules/psb_internals.h index 5335ffd2..a1c31f24 100644 --- a/base/modules/psb_internals.h +++ b/base/modules/psb_internals.h @@ -1,20 +1,48 @@ #ifndef PSB_INTERNALS_H #define PSB_INTERNALS_H +#include "psb_config.h" + +#define MPI_INTEGER 1 +#define MPI_INTEGER8 2 +#define MPI_REAL 3 +#define MPI_DOUBLE 4 +#define MPI_COMPLEX 5 +#define MPI_DOUBLE_COMPLEX 6 +#define MPI_CHARACTER 7 +#define MPI_LOGICAL 8 +#define MPI_INTEGER2 9 +#define MPI_INTEGER4 10 +#define MPI_COMM_NULL -1 +#define MPI_COMM_WORLD 1 -/* providing a default mangling scheme */ -#ifndef LowerUnderscore -#ifndef LowerDoubleUnderscore -#ifndef LowerCase -#ifndef UpperUnderscore -#ifndef UpperDoubleUnderscore -#ifndef UpperCase -#define LowerUnderscore 1 /* 20110404 the default */ -/* #error "should specify a default mangling scheme" */ -#endif -#endif -#endif -#endif -#endif -#endif +double mpi_wtime(); +void mpi_wait(int *request, int* status, int *ierr); +void mpi_send(void* buf, int* count, int* datatype, + int *dest, int *tag, int *comm, int *ierr); +void mpi_isend(void* buf, int* count, int* datatype, + int *dest, int *tag, int *comm, int *request, + int *ierr); +void mpi_irecv(void* buf, int* count, int* datatype, + int *src, int *tag, int *comm, int *request, + int *ierr); +void mpi_alltoall(void* sdb, int* sdc, int* sdt, + void* rvb, int* rvc, int* rvt, int* comm, int* ierr); +void mpi_alltoallv(void* sdb, int* sdc, int* sdspl, int* sdt, + void* rvb, int* rvc, int* rdspl, int* rvt, int* comm, int* ierr); +void mpi_gather(void* sdb, int* sdc, int* sdt, + void* rvb, int* rvc, int* rvt, int *root, int* comm, int* ierr); +void mpi_gatherv(void* sdb, int* sdc, int* sdt, + void* rvb, int* rvc, int* rdspl, + int* rvt, int* comm, int *root, int* ierr); +void mpi_scatter(void* sdb, int* sdc, int* sdt, + void* rvb, int* rvc, int* rvt, int *root, int* comm, int* ierr); +void mpi_scatterv(void* sdb, int* sdc, int* sdt, + void* rvb, int* rvc, int* rdspl, + int* rvt, int* comm, int *root, int* ierr); +void mpi_allgather(void* sdb, int* sdc, int* sdt, + void* rvb, int* rvc, int* rvt, int* comm, int* ierr); +void mpi_allgatherv(void* sdb, int* sdc, int* sdt, + void* rvb, int* rvc, int* rdspl, + int* rvt, int* comm, int* ierr); #endif diff --git a/configure b/configure index 11ea8a43..c1d65b36 100755 --- a/configure +++ b/configure @@ -687,6 +687,8 @@ PRECLIBNAME RSB_LIBS LIBDIR PSBLASRULES +LPK +IPK FINCLUDES CINCLUDES METIS_LIBS @@ -6816,14 +6818,6 @@ fi ############################################################################### # Linking, symbol mangling, and misc tests ############################################################################### - -# Note : This is functional to Make.inc rules and structure (see below). -#AC_LANG([C]) -#AC_CHECK_SIZEOF(void *) -## Define for platforms with 64 bit (void * ) pointers -#if test X"$ac_cv_sizeof_void_p" == X"8" ; then -# CDEFINES="-DPtr64Bits $CDEFINES" -#fi ac_ext=${ac_fc_srcext-f} ac_compile='$FC -c $FCFLAGS $ac_fcflags_srcext conftest.$ac_ext >&5' ac_link='$FC -o conftest$ac_exeext $FCFLAGS $LDFLAGS $ac_fcflags_srcext conftest.$ac_ext $LIBS >&5' @@ -6983,40 +6977,6 @@ pac_fc_sec_under=${pac_fc_under#*,} pac_fc_sec_under=${pac_fc_sec_under# } pac_fc_under=${pac_fc_under%%,*} pac_fc_under=${pac_fc_under# } -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking defines for C/Fortran name interfaces" >&5 -printf %s "checking defines for C/Fortran name interfaces... " >&6; } -if test "x$pac_fc_case" == "xlower case"; then - if test "x$pac_fc_under" == "xunderscore"; then - if test "x$pac_fc_sec_under" == "xno extra underscore"; then - pac_f_c_names="-DLowerUnderscore" - elif test "x$pac_fc_sec_under" == "xextra underscore"; then - pac_f_c_names="-DLowerDoubleUnderscore" - else - pac_f_c_names="-DUNKNOWN" - fi - elif test "x$pac_fc_under" == "xno underscore"; then - pac_f_c_names="-DLowerCase" - else - pac_f_c_names="-DUNKNOWN" - fi -elif test "x$pac_fc_case" == "xupper case"; then - if test "x$pac_fc_under" == "xunderscore"; then - if test "x$pac_fc_sec_under" == "xno extra underscore"; then - pac_f_c_names="-DUpperUnderscore" - elif test "x$pac_fc_sec_under" == "xextra underscore"; then - pac_f_c_names="-DUpperDoubleUnderscore" - else - pac_f_c_names="-DUNKNOWN" - fi - elif test "x$pac_fc_under" == "xno underscore"; then - pac_f_c_names="-DUpperCase" - else - pac_f_c_names="-DUNKNOWN" - fi -else - pac_f_c_names="-DUNKNOWN" -fi -CDEFINES="$pac_f_c_names $CDEFINES" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $pac_f_c_names " >&5 printf "%s\n" " $pac_f_c_names " >&6; } @@ -7452,6 +7412,8 @@ fi if test x"$pac_cv_lpk_size" == x"" ; then pac_cv_lpk_size=8 fi +IPK="IPK$pac_cv_ipk_size" +LPK="LPK$pac_cv_lpk_size" # Enforce sensible combination if (( $pac_cv_lpk_size < $pac_cv_ipk_size )); then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Invalid combination of size specs IPK ${pac_cv_ipk_size} LPK ${pac_cv_lpk_size}. " >&5 @@ -11201,6 +11163,8 @@ FDEFINES=$(PSBFDEFINES) + + @@ -11209,6 +11173,8 @@ FDEFINES=$(PSBFDEFINES) ac_config_files="$ac_config_files Make.inc" +ac_config_files="$ac_config_files base/modules/psb_config.h" + ac_config_files="$ac_config_files util/psb_metis_int.h" cat >confcache <<\_ACEOF @@ -11953,6 +11919,7 @@ do case $ac_config_target in "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; "Make.inc") CONFIG_FILES="$CONFIG_FILES Make.inc" ;; + "base/modules/psb_config.h") CONFIG_FILES="$CONFIG_FILES base/modules/psb_config.h" ;; "util/psb_metis_int.h") CONFIG_FILES="$CONFIG_FILES util/psb_metis_int.h" ;; *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; @@ -12606,7 +12573,7 @@ printf "%s\n" "$as_me: You may want to rerun configure with --with-fcopenacc= " >&6;} fi fi - + ############################################################################### diff --git a/configure.ac b/configure.ac index ccf2f57e..6d71b335 100755 --- a/configure.ac +++ b/configure.ac @@ -321,45 +321,45 @@ dnl AC_MSG_NOTICE([Fortran name mangling: $ac_cv_fc_mangling]) [pac_fc_sec_under=${pac_fc_sec_under# }] [pac_fc_under=${pac_fc_under%%,*}] [pac_fc_under=${pac_fc_under# }] -AC_MSG_CHECKING([defines for C/Fortran name interfaces]) -if test "x$pac_fc_case" == "xlower case"; then - if test "x$pac_fc_under" == "xunderscore"; then - if test "x$pac_fc_sec_under" == "xno extra underscore"; then - pac_f_c_names="-DLowerUnderscore" - elif test "x$pac_fc_sec_under" == "xextra underscore"; then - pac_f_c_names="-DLowerDoubleUnderscore" - else - pac_f_c_names="-DUNKNOWN" -dnl AC_MSG_NOTICE([Fortran name mangling extra underscore unknown case]) - fi - elif test "x$pac_fc_under" == "xno underscore"; then - pac_f_c_names="-DLowerCase" - else - pac_f_c_names="-DUNKNOWN" -dnl AC_MSG_NOTICE([Fortran name mangling underscore unknown case]) - fi -elif test "x$pac_fc_case" == "xupper case"; then - if test "x$pac_fc_under" == "xunderscore"; then - if test "x$pac_fc_sec_under" == "xno extra underscore"; then - pac_f_c_names="-DUpperUnderscore" - elif test "x$pac_fc_sec_under" == "xextra underscore"; then - pac_f_c_names="-DUpperDoubleUnderscore" - else - pac_f_c_names="-DUNKNOWN" -dnl AC_MSG_NOTICE([Fortran name mangling extra underscore unknown case]) - fi - elif test "x$pac_fc_under" == "xno underscore"; then - pac_f_c_names="-DUpperCase" - else - pac_f_c_names="-DUNKNOWN" -dnl AC_MSG_NOTICE([Fortran name mangling underscore unknown case]) - fi -dnl AC_MSG_NOTICE([Fortran name mangling UPPERCASE not handled]) -else - pac_f_c_names="-DUNKNOWN" -dnl AC_MSG_NOTICE([Fortran name mangling unknown case]) -fi -CDEFINES="$pac_f_c_names $CDEFINES" +dnl AC_MSG_CHECKING([defines for C/Fortran name interfaces]) +dnl if test "x$pac_fc_case" == "xlower case"; then +dnl if test "x$pac_fc_under" == "xunderscore"; then +dnl if test "x$pac_fc_sec_under" == "xno extra underscore"; then +dnl pac_f_c_names="-DLowerUnderscore" +dnl elif test "x$pac_fc_sec_under" == "xextra underscore"; then +dnl pac_f_c_names="-DLowerDoubleUnderscore" +dnl else +dnl pac_f_c_names="-DUNKNOWN" +dnl dnl AC_MSG_NOTICE([Fortran name mangling extra underscore unknown case]) +dnl fi +dnl elif test "x$pac_fc_under" == "xno underscore"; then +dnl pac_f_c_names="-DLowerCase" +dnl else +dnl pac_f_c_names="-DUNKNOWN" +dnl dnl AC_MSG_NOTICE([Fortran name mangling underscore unknown case]) +dnl fi +dnl elif test "x$pac_fc_case" == "xupper case"; then +dnl if test "x$pac_fc_under" == "xunderscore"; then +dnl if test "x$pac_fc_sec_under" == "xno extra underscore"; then +dnl pac_f_c_names="-DUpperUnderscore" +dnl elif test "x$pac_fc_sec_under" == "xextra underscore"; then +dnl pac_f_c_names="-DUpperDoubleUnderscore" +dnl else +dnl pac_f_c_names="-DUNKNOWN" +dnl dnl AC_MSG_NOTICE([Fortran name mangling extra underscore unknown case]) +dnl fi +dnl elif test "x$pac_fc_under" == "xno underscore"; then +dnl pac_f_c_names="-DUpperCase" +dnl else +dnl pac_f_c_names="-DUNKNOWN" +dnl dnl AC_MSG_NOTICE([Fortran name mangling underscore unknown case]) +dnl fi +dnl dnl AC_MSG_NOTICE([Fortran name mangling UPPERCASE not handled]) +dnl else +dnl pac_f_c_names="-DUNKNOWN" +dnl dnl AC_MSG_NOTICE([Fortran name mangling unknown case]) +dnl fi +dnl CDEFINES="$pac_f_c_names $CDEFINES" AC_MSG_RESULT([ $pac_f_c_names ]) @@ -562,6 +562,8 @@ fi if test x"$pac_cv_lpk_size" == x"" ; then pac_cv_lpk_size=8 fi +IPK="IPK$pac_cv_ipk_size" +LPK="LPK$pac_cv_lpk_size" # Enforce sensible combination if (( $pac_cv_lpk_size < $pac_cv_ipk_size )); then AC_MSG_NOTICE([[Invalid combination of size specs IPK ${pac_cv_ipk_size} LPK ${pac_cv_lpk_size}. ]]); @@ -1016,6 +1018,8 @@ FDEFINES=$(PSBFDEFINES) $(CXX) $(CXXOPT) $(CXXINCLUDES) $(CXXDEFINES) -c $< -o $@' +AC_SUBST(IPK) +AC_SUBST(LPK) AC_SUBST(PSBLASRULES) AC_SUBST(LIBDIR) AC_SUBST(RSB_LIBS) @@ -1061,6 +1065,7 @@ AC_SUBST(LRSB) # the following files will be created by Automake AC_CONFIG_FILES([Make.inc]) +AC_CONFIG_FILES([base/modules/psb_config.h]) AC_CONFIG_FILES([util/psb_metis_int.h]) AC_OUTPUT() #AC_OUTPUT(Make.inc Makefile)