Skip to content
Snippets Groups Projects
Commit 967e7606 authored by Kurt A. O'Hearn's avatar Kurt A. O'Hearn
Browse files

PG-PuReMD: fix CUDA compilation error. Revert library building via libtool due...

PG-PuReMD: fix CUDA compilation error. Revert library building via libtool due to issues with recognizing custom suffix rules for building CUDA source files and revisit at a later date.
parent 58a9a0e0
No related branches found
No related tags found
No related merge requests found
......@@ -16,15 +16,17 @@ NVCCFLAGS += --compiler-options "$(DEFS) $(NVCC_OPT_CODE_DEFS) -O3 -funroll-loop
endif
lib_LTLIBRARIES = lib/libpuremd.la
lib_libpuremd_la_SOURCES = src/allocate.c src/basic_comm.c src/ffield.c src/grid.c src/list.c \
bin_PROGRAMS = bin/pg-puremd
bin_pg_puremd_SOURCES = src/allocate.c src/basic_comm.c src/ffield.c src/grid.c src/list.c \
src/lookup.c src/io_tools.c src/reset_tools.c src/restart.c src/random.c \
src/tool_box.c src/traj.c src/analyze.c src/box.c src/system_props.c \
src/control.c src/comm_tools.c src/geo_tools.c src/lin_alg.c src/neighbors.c \
src/charges.c src/bond_orders.c src/multi_body.c src/bonds.c src/valence_angles.c \
src/hydrogen_bonds.c src/torsion_angles.c src/nonbonded.c src/forces.c \
src/integrate.c src/init_md.c src/puremd.c
lib_libpuremd_la_SOURCES += src/reax_types.h src/index_utils.h \
src/integrate.c src/init_md.c src/puremd.c \
src/driver.c \
src/reax_types.h src/index_utils.h \
src/allocate.h src/basic_comm.h src/ffield.h src/grid.h src/list.h \
src/lookup.h src/io_tools.h src/reset_tools.h src/restart.h src/random.h src/vector.h \
src/tool_box.h src/traj.h src/analyze.h src/box.h src/system_props.h \
......@@ -32,52 +34,37 @@ lib_libpuremd_la_SOURCES += src/reax_types.h src/index_utils.h \
src/charges.h src/bond_orders.h src/multi_body.h src/bonds.h src/valence_angles.h \
src/hydrogen_bonds.h src/torsion_angles.h src/nonbonded.h src/forces.h \
src/integrate.h src/init_md.h
include_HEADERS = src/puremd.h
if USE_CUDA
lib_libpuremd_la_SOURCES += src/cuda/cuda_utils.cu src/cuda/cuda_allocate.cu src/cuda/cuda_environment.cu \
src/cuda/cuda_system_props.cu src/cuda/cuda_reduction.cu src/cuda/cuda_box.cu src/cuda/cuda_list.cu \
src/cuda/cuda_copy.cu src/cuda/cuda_reset_tools.cu src/cuda/cuda_random.cu \
src/cuda/cuda_neighbors.cu src/cuda/cuda_bond_orders.cu src/cuda/cuda_bonds.cu \
src/cuda/cuda_multi_body.cu src/cuda/cuda_valence_angles.cu \
src/cuda/cuda_torsion_angles.cu src/cuda/cuda_hydrogen_bonds.cu src/cuda/cuda_forces.cu \
src/cuda/cuda_charges.cu src/cuda/cuda_lin_alg.cu \
src/cuda/cuda_nonbonded.cu src/cuda/cuda_integrate.cu src/cuda/cuda_post_evolve.cu \
src/cuda/cuda_init_md.cu src/cuda/cuda_lookup.cu
lib_libpuremd_la_SOURCES += src/cuda/cuda_helpers.h src/cuda/cuda_shuffle.h \
src/cuda/cuda_utils.h src/cuda/cuda_allocate.h src/cuda/cuda_environment.h \
src/cuda/cuda_system_props.h src/cuda/cuda_reduction.h src/cuda/cuda_box.h src/cuda/cuda_list.h \
src/cuda/cuda_copy.h src/cuda/cuda_reset_tools.h src/cuda/cuda_random.h src/cuda/cuda_vector.h \
src/cuda/cuda_neighbors.h src/cuda/cuda_bond_orders.h src/cuda/cuda_bonds.h \
src/cuda/cuda_multi_body.h src/cuda/cuda_valence_angles.h \
src/cuda/cuda_torsion_angles.h src/cuda/cuda_hydrogen_bonds.h src/cuda/cuda_forces.h \
src/cuda/cuda_charges.h src/cuda/cuda_lin_alg.h \
src/cuda/cuda_nonbonded.h src/cuda/cuda_integrate.h src/cuda/cuda_post_evolve.h \
src/cuda/cuda_init_md.h src/cuda/cuda_lookup.h
bin_pg_puremd_SOURCES += src/cuda/cuda_utils.cu src/cuda/cuda_allocate.cu src/cuda/cuda_environment.cu \
src/cuda/cuda_system_props.cu src/cuda/cuda_reduction.cu src/cuda/cuda_box.cu src/cuda/cuda_list.cu \
src/cuda/cuda_copy.cu src/cuda/cuda_reset_tools.cu src/cuda/cuda_random.cu \
src/cuda/cuda_neighbors.cu src/cuda/cuda_bond_orders.cu src/cuda/cuda_bonds.cu \
src/cuda/cuda_multi_body.cu src/cuda/cuda_valence_angles.cu \
src/cuda/cuda_torsion_angles.cu src/cuda/cuda_hydrogen_bonds.cu src/cuda/cuda_forces.cu \
src/cuda/cuda_charges.cu src/cuda/cuda_lin_alg.cu \
src/cuda/cuda_nonbonded.cu src/cuda/cuda_integrate.cu src/cuda/cuda_post_evolve.cu \
src/cuda/cuda_init_md.cu src/cuda/cuda_lookup.cu \
src/cuda/cuda_helpers.h src/cuda/cuda_shuffle.h \
src/cuda/cuda_utils.h src/cuda/cuda_allocate.h src/cuda/cuda_environment.h \
src/cuda/cuda_system_props.h src/cuda/cuda_reduction.h src/cuda/cuda_box.h src/cuda/cuda_list.h \
src/cuda/cuda_copy.h src/cuda/cuda_reset_tools.h src/cuda/cuda_random.h src/cuda/cuda_vector.h \
src/cuda/cuda_neighbors.h src/cuda/cuda_bond_orders.h src/cuda/cuda_bonds.h \
src/cuda/cuda_multi_body.h src/cuda/cuda_valence_angles.h \
src/cuda/cuda_torsion_angles.h src/cuda/cuda_hydrogen_bonds.h src/cuda/cuda_forces.h \
src/cuda/cuda_charges.h src/cuda/cuda_lin_alg.h \
src/cuda/cuda_nonbonded.h src/cuda/cuda_integrate.h src/cuda/cuda_post_evolve.h \
src/cuda/cuda_init_md.h src/cuda/cuda_lookup.h
if DEBUG
lib_libpuremd_la_SOURCES += src/cuda/cuda_validation.cu
lib_libpuremd_la_SOURCES += src/cuda/cuda_validation.h
bin_pg_puremd_SOURCES += src/cuda/cuda_validation.cu \
src/cuda/cuda_validation.h
endif
# dummy source to cause C linking
nodist_EXTRA_lib_libpuremd_la_SOURCES = src/dummy.c
# dummy source to trigger C linking
nodist_EXTRA_bin_pg_puremd_SOURCES = src/dummy.c
endif
lib_libpuremd_la_CFLAGS = $(AM_CFLAGS) $(MPI_CFLAGS) $(CFLAGS)
lib_libpuremd_la_CPPFLAGS = $(AM_CPPFLAGS) $(CPPFLAGS)
lib_libpuremd_la_LIBADD = $(AM_LDADD) $(MPI_LIBS) $(LDADD) -lstdc++
lib_libpuremd_la_LDFLAGS = -version-info 1:0:0
if USE_CUDA
lib_libpuremd_la_CFLAGS += $(CUDA_CFLAGS)
lib_libpuremd_la_LIBADD += $(CUDA_LIBS)
endif
bin_PROGRAMS = bin/pg-puremd
bin_pg_puremd_SOURCES = src/driver.c
bin_pg_puremd_CFLAGS = $(AM_CFLAGS) $(MPI_CFLAGS) $(CFLAGS)
bin_pg_puremd_CPPFLAGS = -I src $(AM_CPPFLAGS) $(CPPFLAGS)
bin_pg_puremd_LDADD = lib/libpuremd.la $(AM_LDADD) $(MPI_LIBS) $(LDADD) -lstdc++
bin_pg_puremd_CPPFLAGS = $(AM_CPPFLAGS) $(CPPFLAGS)
bin_pg_puremd_LDADD = $(AM_LDADD) $(MPI_LIBS) $(LDADD) -lstdc++
if USE_CUDA
bin_pg_puremd_CFLAGS += $(CUDA_CFLAGS)
bin_pg_puremd_LDADD += $(CUDA_LIBS)
......
......@@ -56,66 +56,6 @@ m4_ifndef([AC_AUTOCONF_VERSION],
[m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
# Copyright (C) 2011-2017 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# AM_PROG_AR([ACT-IF-FAIL])
# -------------------------
# Try to determine the archiver interface, and trigger the ar-lib wrapper
# if it is needed. If the detection of archiver interface fails, run
# ACT-IF-FAIL (default is to abort configure with a proper error message).
AC_DEFUN([AM_PROG_AR],
[AC_BEFORE([$0], [LT_INIT])dnl
AC_BEFORE([$0], [AC_PROG_LIBTOOL])dnl
AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
AC_REQUIRE_AUX_FILE([ar-lib])dnl
AC_CHECK_TOOLS([AR], [ar lib "link -lib"], [false])
: ${AR=ar}
AC_CACHE_CHECK([the archiver ($AR) interface], [am_cv_ar_interface],
[AC_LANG_PUSH([C])
am_cv_ar_interface=ar
AC_COMPILE_IFELSE([AC_LANG_SOURCE([[int some_variable = 0;]])],
[am_ar_try='$AR cru libconftest.a conftest.$ac_objext >&AS_MESSAGE_LOG_FD'
AC_TRY_EVAL([am_ar_try])
if test "$ac_status" -eq 0; then
am_cv_ar_interface=ar
else
am_ar_try='$AR -NOLOGO -OUT:conftest.lib conftest.$ac_objext >&AS_MESSAGE_LOG_FD'
AC_TRY_EVAL([am_ar_try])
if test "$ac_status" -eq 0; then
am_cv_ar_interface=lib
else
am_cv_ar_interface=unknown
fi
fi
rm -f conftest.lib libconftest.a
])
AC_LANG_POP([C])])
case $am_cv_ar_interface in
ar)
;;
lib)
# Microsoft lib, so override with the ar-lib wrapper script.
# FIXME: It is wrong to rewrite AR.
# But if we don't then we get into trouble of one sort or another.
# A longer-term fix would be to have automake use am__AR in this case,
# and then we could set am__AR="$am_aux_dir/ar-lib \$(AR)" or something
# similar.
AR="$am_aux_dir/ar-lib $AR"
;;
unknown)
m4_default([$1],
[AC_MSG_ERROR([could not determine $AR interface])])
;;
esac
AC_SUBST([AR])dnl
])
# AM_AUX_DIR_EXPAND -*- Autoconf -*-
# Copyright (C) 2001-2017 Free Software Foundation, Inc.
......@@ -1213,8 +1153,3 @@ AC_SUBST([am__untar])
m4_include([../m4/acx_mpi.m4])
m4_include([../m4/ax_compiler_vendor.m4])
m4_include([../m4/ax_cuda.m4])
m4_include([../m4/libtool.m4])
m4_include([../m4/ltoptions.m4])
m4_include([../m4/ltsugar.m4])
m4_include([../m4/ltversion.m4])
m4_include([../m4/lt~obsolete.m4])
......@@ -10,9 +10,9 @@ sav_CFLAGS="$CFLAGS"
AM_INIT_AUTOMAKE([1.15 subdir-objects -Wall -Werror foreign])
# Enable silent build rules by default.
m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])], [AC_SUBST([AM_DEFAULT_VERBOSITY],[1])])
AM_PROG_AR
LT_PREREQ([2.2])
LT_INIT([dlopen])
#AM_PROG_AR
#LT_PREREQ([2.2])
#LT_INIT([dlopen])
AC_CONFIG_MACRO_DIR([../m4])
......@@ -55,15 +55,15 @@ AC_CHECK_FUNCS([gettimeofday memset])
# Check for compiler vendor
AX_COMPILER_VENDOR
if test "x$ax_cv_c_compiler_vendor" = "xgnu"; then
if test "x$BUILD_DEBUG" = "x"; then
CFLAGS="$CFLAGS -Wall -O3 -funroll-loops -fstrict-aliasing"
if test "x${ax_cv_c_compiler_vendor}" = "xgnu"; then
if test "x${BUILD_DEBUG}" = "x"; then
CFLAGS="${CFLAGS} -Wall -O3 -funroll-loops -fstrict-aliasing"
else
CFLAGS="$CFLAGS -Wall -O0 -g"
CFLAGS="${CFLAGS} -Wall -O0 -g"
fi
fi
if test "x$ax_cv_c_compiler_vendor" = "xintel"; then
if test "x$BUILD_DEBUG" = "x"; then
if test "x${ax_cv_c_compiler_vendor}" = "xintel"; then
if test "x${BUILD_DEBUG}" = "x"; then
CFLAGS="$CFLAGS -fast"
fi
fi
......@@ -75,10 +75,10 @@ AC_CHECK_PROG(MPIRUN, mpirun, mpirun)
AC_SUBST(MPIRUN)
# try to find if we are using OpenMPI / MPICH by looking inside mpi.h
sav_CC="$CC"
sav_CFLAGS="$CFLAGS"
CC="$MPICC"
CFLAGS="$CFLAGS"
sav_CC="${CC}"
sav_CFLAGS="${CFLAGS}"
CC="${MPICC}"
CFLAGS="${CFLAGS}"
AC_CHECK_DECL([OPEN_MPI], [mpi_vendor="OpenMPI"],
[], [#include "mpi.h"])
# MPICH v2
......@@ -87,45 +87,45 @@ AC_CHECK_DECL([MPICH2], [mpi_vendor="MPICH2"],
# MPICH v3
AC_CHECK_DECL([MPICH_VERSION], [mpi_vendor="MPICH3"],
[], [#include "mpi.h"])
CC="$sav_CC"
CFLAGS="$sav_CFLAGS"
CC="${sav_CC}"
CFLAGS="${sav_CFLAGS}"
# try to set MPI_CFLAGS and MPI_LIBS
MPI_CFLAGS=
MPI_LIBS=
if test "$mpi_vendor" = "OpenMPI"
if test "x${mpi_vendor}" = "xOpenMPI"
then
MPI_CFLAGS=`$MPICC --showme:compile`
MPI_LIBS=`$MPICC --showme:link`
MPI_CFLAGS=`${MPICC} --showme:compile`
MPI_LIBS=`${MPICC} --showme:link`
AC_MSG_NOTICE([OpenMPI found])
AC_MSG_NOTICE([MPI_CFLAGS=$MPI_CFLAGS])
AC_MSG_NOTICE([MPI_LIBS=$MPI_LIBS])
elif test "$mpi_vendor" = "MPICH2" || test "$mpi_vendor" = "MPICH3"
AC_MSG_NOTICE([MPI_CFLAGS=${MPI_CFLAGS}])
AC_MSG_NOTICE([MPI_LIBS=${MPI_LIBS}])
elif test "x${mpi_vendor}" = "xMPICH2" || test "x${mpi_vendor}" = "xMPICH3"
then
# build MPI_CFLAGS
tmp=`$MPICC -compile-info | awk '{$1=""; print $0 }'`
tmp=`${MPICC} -compile-info | awk '{$1=""; print $0 }'`
MPI_CFLAGS=
for i in $tmp
do
case $i in
-[[DIUbi]]*)
MPI_CFLAGS="$MPI_CFLAGS $i"
MPI_CFLAGS="${MPI_CFLAGS} ${i}"
;;
esac
done
# build MPI_LIBS
tmp=`$MPICC -link-info | awk '{$1=""; print $0 }'`
tmp=`${MPICC} -link-info | awk '{$1=""; print $0 }'`
for i in $tmp
do
case $i in
[[\\/]]*.a | ?:[[\\/]]*.a | -[[lLRu]]* | -Wl* )
MPI_LIBS="$MPI_LIBS $i"
MPI_LIBS="${MPI_LIBS} ${i}"
;;
esac
done
AC_MSG_NOTICE([MPICH found])
AC_MSG_NOTICE([MPI_CFLAGS=$MPI_CFLAGS])
AC_MSG_NOTICE([MPI_LIBS=$MPI_LIBS])
AC_MSG_NOTICE([MPI_CFLAGS=${MPI_CFLAGS}])
AC_MSG_NOTICE([MPI_LIBS=${MPI_LIBS}])
else
AC_MSG_WARN([Neither OpenMPI and MPICH have been recognized...])
fi
......@@ -141,12 +141,12 @@ AC_PROG_CXXCPP
AX_COMPILER_VENDOR
# Check for CUDA support.
if test "x$BUILD_GPU" = "xyes"; then
if test "x${BUILD_GPU}" = "xyes"; then
CONFIGURE_HEADLINE([ CUDA support ])
AX_CUDA
NVCCFLAGS=
NVCCFLAGS+=" -ccbin=$CXX"
NVCCFLAGS+=" -ccbin=${CXX}"
if test "x${BUILD_DEBUG}" = "xtrue"
then
NVCCFLAGS+=" -g -G"
......
......@@ -216,14 +216,15 @@ void* setup( const char * const geo_file, const char * const ffield_file,
#ifdef HAVE_CUDA
/* setup the CUDA Device for this process */
Setup_Cuda_Environment( system->my_rank, control->nprocs, control->gpus_per_node );
Setup_Cuda_Environment( pmd_handle->system->my_rank,
pmd_handle->control->nprocs, pmd_handle->control->gpus_per_node );
#if defined(DEBUG)
print_device_mem_usage( );
#endif
/* init blocks sizes */
init_blocks( system );
init_blocks( pmd_handle->system );
#endif
return (void*) pmd_handle;
......
......@@ -30,7 +30,7 @@ AC_ARG_ENABLE([openmp],
[pack_openmp_enabled=${enableval}], [pack_openmp_enabled=yes])
AC_ARG_ENABLE([mpi-old],
[AS_HELP_STRING([--enable-mpi-old],
[enable MPI support @<:@default: no@:>@])],
[enable MPI support (old) @<:@default: no@:>@])],
[pack_mpi_old_enabled=${enableval}], [pack_mpi_old_enabled=no])
AC_ARG_ENABLE([gpu],
[AS_HELP_STRING([--enable-gpu],
......@@ -38,7 +38,7 @@ AC_ARG_ENABLE([gpu],
[pack_gpu_enabled=${enableval}], [pack_gpu_enabled=no])
AC_ARG_ENABLE([mpi],
[AS_HELP_STRING([--enable-mpi],
[enable MPI but not CUDA support @<:@default: no@:>@])],
[enable MPI support @<:@default: no@:>@])],
[pack_mpi_enabled=${enableval}], [pack_mpi_enabled=no])
AC_ARG_ENABLE([mpi-gpu],
[AS_HELP_STRING([--enable-mpi-gpu],
......@@ -80,7 +80,7 @@ AC_ARG_ENABLE([debug],
[enable debug support @<:@default: no@:>@])],
[DEBUG=${enableval}], [DEBUG=no]
)
if test "x$DEBUG" = "xyes"
if test "x${DEBUG}" = "xyes"
then
# #TODO: fix exporting to subdirs
# # See: http://stackoverflow.com/questions/34124337/changing-flags-in-configure-ac-vs-caching-with-subprojects
......@@ -125,7 +125,7 @@ fi
AC_ARG_WITH([superlu-mt],
[AS_HELP_STRING([--with-superlu-mt],
[enable usage of SuperLU MT for QEq preconditioner computation @<:@default: no@:>@])],
[enable usage of SuperLU MT for preconditioning @<:@default: no@:>@])],
[package_superlu_mt=${withval}], [package_superlu_mt=no])
if test "x${package_superlu_mt}" != "xno"
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment