From 623f03e3225a01f1cee996addee51e9364ea6be4 Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Wed, 22 Apr 2020 14:21:34 -0600 Subject: [PATCH 01/24] cmake: add support for latte super-build --- cmake/Modules/Packages/LATTE.cmake | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/cmake/Modules/Packages/LATTE.cmake b/cmake/Modules/Packages/LATTE.cmake index 4ce8888f37..d6eca1bbbd 100644 --- a/cmake/Modules/Packages/LATTE.cmake +++ b/cmake/Modules/Packages/LATTE.cmake @@ -1,4 +1,11 @@ enable_language(Fortran) + +# using lammps in a super-build setting +if(TARGET LATTE::latte) + target_link_libraries(lammps PRIVATE LATTE::latte) + return() +endif() + find_package(LATTE) if(LATTE_FOUND) set(DOWNLOAD_LATTE_DEFAULT OFF) From 0a96a8c3a521329783d42164ee0700a5c1c4447b Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 24 Apr 2020 21:23:21 -0400 Subject: [PATCH 02/24] make check for running under hybrid/overlay compatible with suffix styles also improve error message --- src/USER-MISC/pair_drip.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/USER-MISC/pair_drip.cpp b/src/USER-MISC/pair_drip.cpp index 020216f503..bb28d056ac 100644 --- a/src/USER-MISC/pair_drip.cpp +++ b/src/USER-MISC/pair_drip.cpp @@ -33,6 +33,7 @@ #include "neigh_request.h" #include "memory.h" #include "error.h" +#include "utils.h" using namespace LAMMPS_NS; @@ -116,8 +117,8 @@ void PairDRIP::allocate() void PairDRIP::settings(int narg, char ** /* arg */) { if (narg != 0) error->all(FLERR,"Illegal pair_style command"); - if (strcmp(force->pair_style,"hybrid/overlay")!=0) - error->all(FLERR,"ERROR: requires hybrid/overlay pair_style"); + if (!utils::strmatch(force->pair_style,"^hybrid/overlay")) + error->all(FLERR,"Pair style drip must be used as sub-style with hybrid/overlay"); } /* ---------------------------------------------------------------------- From 1de3995598f46cde09fe6c4bfb5cb4a1f5cbe258 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 24 Apr 2020 21:26:11 -0400 Subject: [PATCH 03/24] rename src/MAKE/MINE/... to src/MAKE/MINE/.gitignore to avoid penalizing people downloading LAMMPS via git on windows --- src/MAKE/MINE/... | 0 src/MAKE/MINE/.gitignore | 1 + 2 files changed, 1 insertion(+) delete mode 100644 src/MAKE/MINE/... create mode 100644 src/MAKE/MINE/.gitignore diff --git a/src/MAKE/MINE/... b/src/MAKE/MINE/... deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/src/MAKE/MINE/.gitignore b/src/MAKE/MINE/.gitignore new file mode 100644 index 0000000000..9c45e661e8 --- /dev/null +++ b/src/MAKE/MINE/.gitignore @@ -0,0 +1 @@ +/Makefile.* From bac681b9dcd879f576b6adbcc8e4c21d883990da Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Fri, 24 Apr 2020 20:14:30 -0600 Subject: [PATCH 04/24] cmake: fix linkage against external latte --- cmake/Modules/Packages/LATTE.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/Modules/Packages/LATTE.cmake b/cmake/Modules/Packages/LATTE.cmake index 4ce8888f37..d6e893b025 100644 --- a/cmake/Modules/Packages/LATTE.cmake +++ b/cmake/Modules/Packages/LATTE.cmake @@ -35,5 +35,5 @@ else() if(NOT LATTE_FOUND) message(FATAL_ERROR "LATTE library not found, help CMake to find it by setting LATTE_LIBRARY, or set DOWNLOAD_LATTE=ON to download it") endif() - target_link_libraries(lammps PRIVATE LATTE::latte) + target_link_libraries(lammps PRIVATE LATTE::latte ${LAPACK_LIBRARIES}) endif() From 5308b00c7bccc95bf94408d77dc2515e99703b5b Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Sat, 25 Apr 2020 07:28:16 -0600 Subject: [PATCH 05/24] Update LATTE.cmake --- cmake/Modules/Packages/LATTE.cmake | 1 + 1 file changed, 1 insertion(+) diff --git a/cmake/Modules/Packages/LATTE.cmake b/cmake/Modules/Packages/LATTE.cmake index d6e893b025..91223720b0 100644 --- a/cmake/Modules/Packages/LATTE.cmake +++ b/cmake/Modules/Packages/LATTE.cmake @@ -35,5 +35,6 @@ else() if(NOT LATTE_FOUND) message(FATAL_ERROR "LATTE library not found, help CMake to find it by setting LATTE_LIBRARY, or set DOWNLOAD_LATTE=ON to download it") endif() + # latte needs lapack target_link_libraries(lammps PRIVATE LATTE::latte ${LAPACK_LIBRARIES}) endif() From 758a27c1e7f8fc6d0e28353687741ad1e5b5c65f Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 25 Apr 2020 22:06:36 -0400 Subject: [PATCH 06/24] update MPI detection and handling of MPI to not automatically assume that a windows target means cross-compiling --- cmake/CMakeLists.txt | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index 192491e0df..628f68f6ea 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -135,23 +135,20 @@ if(PKG_USER-ADIOS) target_link_libraries(lammps PRIVATE adios2::adios2) endif() -if (CMAKE_SYSTEM_NAME STREQUAL Windows) - option(BUILD_MPI "Build MPI version" OFF) -else() - # do MPI detection after language activation, - # in case MPI for these languages is required +if(NOT CMAKE_CROSSCOMPILING) set(MPI_CXX_SKIP_MPICXX TRUE) find_package(MPI QUIET) option(BUILD_MPI "Build MPI version" ${MPI_FOUND}) +else() + option(BUILD_MPI "Build MPI version" OFF) endif() if(BUILD_MPI) - # We use a non-standard procedure to compile with MPI on windows - if (CMAKE_SYSTEM_NAME STREQUAL Windows) + # We use a non-standard procedure to cross-compile with MPI on Windows + if((CMAKE_SYSTEM_NAME STREQUAL Windows) AND CMAKE_CROSSCOMPILING) include(MPI4WIN) target_link_libraries(lammps PUBLIC MPI::MPI_CXX) else() - set(MPI_CXX_SKIP_MPICXX ON) find_package(MPI REQUIRED) target_link_libraries(lammps PUBLIC MPI::MPI_CXX) option(LAMMPS_LONGLONG_TO_LONG "Workaround if your system or MPI version does not recognize 'long long' data types" OFF) @@ -704,7 +701,14 @@ else() message(STATUS "Static library flags: ${CMAKE_STATIC_LINKER_FLAGS}") endif() if(BUILD_MPI) + # get MPI compile settings from MPI4WIN imported target when cross-compiling + if((CMAKE_SYSTEM_NAME STREQUAL Windows) AND CMAKE_CROSSCOMPILING) + get_target_property(MPI_CXX_INCLUDE_PATH MPI::MPI_CXX INTERFACE_INCLUDE_DIRECTORIES) + get_target_property(MPI_CXX_COMPILE_DEFINITIONS MPI::MPI_CXX INTERFACE_COMPILE_DEFINITIONS) + get_target_property(MPI_CXX_LIBRARIES MPI::MPI_CXX IMPORTED_LOCATION) + endif() message(STATUS "<<< MPI flags >>> +-- MPI_defines: ${MPI_CXX_COMPILE_DEFINITIONS} -- MPI includes: ${MPI_CXX_INCLUDE_PATH} -- MPI libraries: ${MPI_CXX_LIBRARIES};${MPI_Fortran_LIBRARIES}") endif() From 9a5b7141afa8889fce4c976f547438ab26f5b69b Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sun, 26 Apr 2020 00:14:27 -0400 Subject: [PATCH 07/24] move MPI compilation variable definitions workaround to MPI4WIN.cmake --- cmake/CMakeLists.txt | 6 ------ cmake/Modules/MPI4WIN.cmake | 5 +++++ 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index 628f68f6ea..9f29220d4f 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -701,12 +701,6 @@ else() message(STATUS "Static library flags: ${CMAKE_STATIC_LINKER_FLAGS}") endif() if(BUILD_MPI) - # get MPI compile settings from MPI4WIN imported target when cross-compiling - if((CMAKE_SYSTEM_NAME STREQUAL Windows) AND CMAKE_CROSSCOMPILING) - get_target_property(MPI_CXX_INCLUDE_PATH MPI::MPI_CXX INTERFACE_INCLUDE_DIRECTORIES) - get_target_property(MPI_CXX_COMPILE_DEFINITIONS MPI::MPI_CXX INTERFACE_COMPILE_DEFINITIONS) - get_target_property(MPI_CXX_LIBRARIES MPI::MPI_CXX IMPORTED_LOCATION) - endif() message(STATUS "<<< MPI flags >>> -- MPI_defines: ${MPI_CXX_COMPILE_DEFINITIONS} -- MPI includes: ${MPI_CXX_INCLUDE_PATH} diff --git a/cmake/Modules/MPI4WIN.cmake b/cmake/Modules/MPI4WIN.cmake index 19d2d2a13e..035c6a22f3 100644 --- a/cmake/Modules/MPI4WIN.cmake +++ b/cmake/Modules/MPI4WIN.cmake @@ -23,3 +23,8 @@ set_target_properties(MPI::MPI_CXX PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${SOURCE_DIR}/include" INTERFACE_COMPILE_DEFINITIONS "MPICH_SKIP_MPICXX") add_dependencies(MPI::MPI_CXX mpi4win_build) + +# set variables for status reporting at the end of CMake run +set(MPI_CXX_INCLUDE_PATH "${SOURCE_DIR}/include") +set(MPI_CXX_COMPILE_DEFINITIONS "MPICH_SKIP_MPICXX") +set(MPI_CXX_LIBRARIES "${SOURCE_DIR}/lib/libmpi.a") From bc3a1187ae913d75a129306c2a496e5d4edac296 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Mon, 27 Apr 2020 08:06:20 -0400 Subject: [PATCH 08/24] make behavior of comparing cutoff and long-range coulomb independent of order --- src/pair_hybrid.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pair_hybrid.cpp b/src/pair_hybrid.cpp index 4d8d6f6902..bbaa311819 100644 --- a/src/pair_hybrid.cpp +++ b/src/pair_hybrid.cpp @@ -1007,7 +1007,7 @@ void *PairHybrid::extract(const char *str, int &dim) for (int m = 0; m < nstyles; m++) { ptr = styles[m]->extract(str,dim); if (ptr && strcmp(str,"cut_coul") == 0) { - if (cutptr && dim != couldim) + if (couldim != -1 && dim != couldim) error->all(FLERR, "Coulomb styles of pair hybrid sub-styles do not match"); double *p_newvalue = (double *) ptr; From 437967bfd83f8078e0f34d6cfdb617457ee3b0f9 Mon Sep 17 00:00:00 2001 From: Yaser Afshar Date: Mon, 27 Apr 2020 12:49:03 -0500 Subject: [PATCH 09/24] =?UTF-8?q?adding=20the=20standard=20header=20to=20p?= =?UTF-8?q?revent=20=E2=80=98NULL=E2=80=99=20was=20not=20declared=20error?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/message/cslib/src/STUBS_ZMQ/zmq.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/message/cslib/src/STUBS_ZMQ/zmq.h b/lib/message/cslib/src/STUBS_ZMQ/zmq.h index 2f02eb4035..a335ee5e01 100644 --- a/lib/message/cslib/src/STUBS_ZMQ/zmq.h +++ b/lib/message/cslib/src/STUBS_ZMQ/zmq.h @@ -17,6 +17,8 @@ #ifndef ZMQ_DUMMY_H #define ZMQ_DUMMY_H +#include + namespace CSLIB_NS { #define ZMQ_REQ 0 From 1aaf3ee03fa2fbdce3873e3f7a655da663babf36 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Mon, 27 Apr 2020 15:10:14 -0400 Subject: [PATCH 10/24] add new combined container for compiling with GPU support. --- tools/singularity/ubuntu18.04_gpu.def | 92 +++++++++++++++++++++++++++ 1 file changed, 92 insertions(+) create mode 100644 tools/singularity/ubuntu18.04_gpu.def diff --git a/tools/singularity/ubuntu18.04_gpu.def b/tools/singularity/ubuntu18.04_gpu.def new file mode 100644 index 0000000000..127cf65412 --- /dev/null +++ b/tools/singularity/ubuntu18.04_gpu.def @@ -0,0 +1,92 @@ +BootStrap: docker +From: rocm/dev-ubuntu-18.04 + +%environment + export PATH=/usr/local/nvidia/bin:/usr/local/cuda/bin:${PATH}:/opt/rocm/bin:/opt/rocm/profiler/bin:/opt/rocm/opencl/bin/x86_64 + export CUDADIR=/usr/local/cuda + export CUDA_PATH=/usr/local/cuda + export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/nvidia/lib:/usr/local/nvidia/lib64 + export LIBRARY_PATH=/usr/local/cuda/lib64/stubs +%post + export DEBIAN_FRONTEND=noninteractive + wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/cuda-ubuntu1804.pin + mv cuda-ubuntu1804.pin /etc/apt/preferences.d/cuda-repository-pin-600 + apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/7fa2af80.pub + add-apt-repository "deb http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/ /" + apt-get update + apt-get upgrade --no-install-recommends -y + apt-get install --no-install-recommends -y software-properties-common + apt-get install --no-install-recommends -y \ + bc \ + build-essential \ + ccache \ + clang \ + cmake \ + cmake-curses-gui \ + cuda \ + cuda-compiler-10-2 \ + curl \ + doxygen \ + enchant \ + g++ \ + gcc \ + gfortran \ + git \ + hdf5-tools \ + kmod \ + less \ + libblas-dev \ + libeigen3-dev \ + libenchant-dev \ + libfftw3-dev \ + libgsl-dev \ + libhdf5-serial-dev \ + libhwloc-dev \ + libjpeg-dev \ + liblapack-dev \ + libomp-dev \ + libopenblas-dev \ + libnuma-dev \ + libpng-dev \ + libproj-dev \ + libvtk6-dev \ + make \ + mpi-default-bin \ + mpi-default-dev \ + ninja-build \ + python-dev \ + python-pip \ + python-pygments \ + python-virtualenv \ + python3-dev \ + python3-pip \ + python3-pkg-resources \ + python3-setuptools \ + python3-virtualenv \ + rocm-libs \ + rsync \ + ssh \ + vim-nox \ + virtualenv \ + voro++-dev \ + wget \ + xxd + + export PATH=$PATH:/opt/rocm/bin:/opt/rocm/profiler/bin:/opt/rocm/opencl/bin/x86_64 + git clone -b master-rocm-3.3 https://github.com/ROCmSoftwarePlatform/hipCUB.git + mkdir hipCUB/build + cd hipCUB/build + CXX=hcc cmake -D BUILD_TEST=off .. + make -j4 + make package + make install + + echo "/usr/local/nvidia/lib" >> /etc/ld.so.conf.d/nvidia.conf + echo "/usr/local/nvidia/lib64" >> /etc/ld.so.conf.d/nvidia.conf + +%environment + LC_ALL=C + export LC_ALL + +%labels + Author rbberger From 7b79b3101892888772542440a20b8a56fd3b68a8 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Mon, 27 Apr 2020 15:17:45 -0400 Subject: [PATCH 11/24] remove latex support from accelerator image definitions --- tools/singularity/README.md | 2 +- tools/singularity/ubuntu18.04_amd_rocm.def | 6 ------ tools/singularity/ubuntu18.04_intel_opencl.def | 6 ------ tools/singularity/ubuntu18.04_nvidia.def | 6 ------ 4 files changed, 1 insertion(+), 19 deletions(-) diff --git a/tools/singularity/README.md b/tools/singularity/README.md index a01b1688b8..abef8b2886 100644 --- a/tools/singularity/README.md +++ b/tools/singularity/README.md @@ -53,7 +53,7 @@ make | ubuntu16.04.def | Ubuntu 16.04LTS with MPI == OpenMPI, no LaTeX | | ubuntu18.04.def | Ubuntu 18.04LTS with MPI == OpenMPI | | ubuntu18.04_amd_rocm.def | Ubuntu 18.04LTS with AMD ROCm toolkit | -| ubuntu18.04_amd_rocm_cuda.def | Ubuntu 18.04LTS with -"- plus Nvidia CUDA 10.2 | +| ubuntu18.04_gpu.def | Ubuntu 18.04LTS with -"- plus Nvidia CUDA 10.2 | | ubuntu18.04_nvidia.def | Ubuntu 18.04LTS with Nvidia CUDA 10.2 toolkit | | ubuntu18.04_intel_opencl.def | Ubuntu 18.04LTS with Intel OpenCL runtime | | ubuntu20.04.def | Ubuntu 20.04LTS with MPI == OpenMPI | diff --git a/tools/singularity/ubuntu18.04_amd_rocm.def b/tools/singularity/ubuntu18.04_amd_rocm.def index 0338ff3c45..ffb609a5c4 100644 --- a/tools/singularity/ubuntu18.04_amd_rocm.def +++ b/tools/singularity/ubuntu18.04_amd_rocm.def @@ -57,12 +57,6 @@ From: rocm/dev-ubuntu-18.04 rocm-libs \ rsync \ ssh \ - texlive \ - texlive-latex-recommended \ - texlive-pictures \ - texlive-publishers \ - texlive-science \ - dvipng \ vim-nox \ virtualenv \ voro++-dev \ diff --git a/tools/singularity/ubuntu18.04_intel_opencl.def b/tools/singularity/ubuntu18.04_intel_opencl.def index 6dabb94cb1..7f24fb0782 100644 --- a/tools/singularity/ubuntu18.04_intel_opencl.def +++ b/tools/singularity/ubuntu18.04_intel_opencl.def @@ -55,12 +55,6 @@ From: ubuntu:18.04 python3-virtualenv \ rsync \ ssh \ - texlive \ - texlive-latex-recommended \ - texlive-pictures \ - texlive-publishers \ - texlive-science \ - dvipng \ vim-nox \ virtualenv \ voro++-dev \ diff --git a/tools/singularity/ubuntu18.04_nvidia.def b/tools/singularity/ubuntu18.04_nvidia.def index bec17adf7f..6c24fb6d9c 100644 --- a/tools/singularity/ubuntu18.04_nvidia.def +++ b/tools/singularity/ubuntu18.04_nvidia.def @@ -55,12 +55,6 @@ From: nvidia/cuda:10.2-devel-ubuntu18.04 python3-virtualenv \ rsync \ ssh \ - texlive \ - texlive-latex-recommended \ - texlive-pictures \ - texlive-publishers \ - texlive-science \ - dvipng \ vim-nox \ virtualenv \ voro++-dev \ From 76d7699abe144738345dc2237ccaab20c42aaf0f Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Mon, 27 Apr 2020 16:58:43 -0400 Subject: [PATCH 12/24] remove trailing whitespace --- src/KOKKOS/compute_orientorder_atom_kokkos.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/KOKKOS/compute_orientorder_atom_kokkos.cpp b/src/KOKKOS/compute_orientorder_atom_kokkos.cpp index b9722f9e2a..d00dc3e238 100644 --- a/src/KOKKOS/compute_orientorder_atom_kokkos.cpp +++ b/src/KOKKOS/compute_orientorder_atom_kokkos.cpp @@ -161,7 +161,7 @@ void ComputeOrientOrderAtomKokkos::compute_peratom() d_distsq = t_sna_2d_lr("orientorder/atom:distsq",chunk_size,maxneigh); d_nearest = t_sna_2i_lr("orientorder/atom:nearest",chunk_size,maxneigh); d_rlist = t_sna_3d_lr("orientorder/atom:rlist",chunk_size,maxneigh,3); - + d_distsq_um = d_distsq; d_rlist_um = d_rlist; d_nearest_um = d_nearest; @@ -194,11 +194,11 @@ void ComputeOrientOrderAtomKokkos::compute_peratom() typename Kokkos::TeamPolicy policy_neigh(chunk_size,team_size,vector_length); Kokkos::parallel_for("ComputeOrientOrderAtomNeigh",policy_neigh,*this); } - + //Select3 typename Kokkos::RangePolicy policy_select3(0,chunk_size); Kokkos::parallel_for("ComputeOrientOrderAtomSelect3",policy_select3,*this); - + //BOOP1 { int vector_length = vector_length_default; @@ -207,7 +207,7 @@ void ComputeOrientOrderAtomKokkos::compute_peratom() typename Kokkos::TeamPolicy policy_boop1(((chunk_size+team_size-1)/team_size)*maxneigh,team_size,vector_length); Kokkos::parallel_for("ComputeOrientOrderAtomBOOP1",policy_boop1,*this); } - + //BOOP2 typename Kokkos::RangePolicy policy_boop2(0,chunk_size); Kokkos::parallel_for("ComputeOrientOrderAtomBOOP2",policy_boop2,*this); From edd708dbcef0416bf17b7b11866f31e4984e10e9 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Mon, 27 Apr 2020 17:17:33 -0400 Subject: [PATCH 13/24] fix command ordering issues with gpu image build --- tools/singularity/ubuntu18.04_gpu.def | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/tools/singularity/ubuntu18.04_gpu.def b/tools/singularity/ubuntu18.04_gpu.def index 127cf65412..999b69522d 100644 --- a/tools/singularity/ubuntu18.04_gpu.def +++ b/tools/singularity/ubuntu18.04_gpu.def @@ -9,10 +9,6 @@ From: rocm/dev-ubuntu-18.04 export LIBRARY_PATH=/usr/local/cuda/lib64/stubs %post export DEBIAN_FRONTEND=noninteractive - wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/cuda-ubuntu1804.pin - mv cuda-ubuntu1804.pin /etc/apt/preferences.d/cuda-repository-pin-600 - apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/7fa2af80.pub - add-apt-repository "deb http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/ /" apt-get update apt-get upgrade --no-install-recommends -y apt-get install --no-install-recommends -y software-properties-common @@ -23,8 +19,6 @@ From: rocm/dev-ubuntu-18.04 clang \ cmake \ cmake-curses-gui \ - cuda \ - cuda-compiler-10-2 \ curl \ doxygen \ enchant \ @@ -71,6 +65,14 @@ From: rocm/dev-ubuntu-18.04 voro++-dev \ wget \ xxd + wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/cuda-ubuntu1804.pin + mv cuda-ubuntu1804.pin /etc/apt/preferences.d/cuda-repository-pin-600 + apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/7fa2af80.pub + add-apt-repository "deb http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/ /" + apt-get update + apt-get install --no-install-recommends -y \ + cuda \ + cuda-compiler-10-2 \ export PATH=$PATH:/opt/rocm/bin:/opt/rocm/profiler/bin:/opt/rocm/opencl/bin/x86_64 git clone -b master-rocm-3.3 https://github.com/ROCmSoftwarePlatform/hipCUB.git From 29d667721ae70b24fb5644fabd84f01696ba4c9a Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Mon, 27 Apr 2020 22:29:41 -0400 Subject: [PATCH 14/24] tweak GPU.cmake so that hip_get_devices compiles and links --- cmake/Modules/Packages/GPU.cmake | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/cmake/Modules/Packages/GPU.cmake b/cmake/Modules/Packages/GPU.cmake index 574be941f7..c59b350b56 100644 --- a/cmake/Modules/Packages/GPU.cmake +++ b/cmake/Modules/Packages/GPU.cmake @@ -338,6 +338,10 @@ elseif(GPU_API STREQUAL "HIP") target_include_directories(hip_get_devices PRIVATE ${HIP_ROOT_DIR}/include) target_include_directories(hip_get_devices PRIVATE ${CUDA_INCLUDE_DIRS}) target_link_libraries(hip_get_devices PRIVATE ${CUDA_LIBRARIES} ${CUDA_CUDA_LIBRARY}) + elseif(HIP_PLATFORM STREQUAL "hcc") + target_compile_definitions(hip_get_devices PRIVATE -D__HIP_PLATFORM_HCC__) + target_include_directories(hip_get_devices PRIVATE ${HIP_ROOT_DIR}/include) + target_include_directories(hip_get_devices PRIVATE ${HIP_ROOT_DIR}/../hsa/include) endif() target_link_libraries(lammps PRIVATE gpu) From dd5ebb0a81196bc90a4de902b5491bd2424ac0ef Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Mon, 27 Apr 2020 22:30:17 -0400 Subject: [PATCH 15/24] add preset to compile with hcc --- cmake/presets/hip.cmake | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 cmake/presets/hip.cmake diff --git a/cmake/presets/hip.cmake b/cmake/presets/hip.cmake new file mode 100644 index 0000000000..9bfea33b54 --- /dev/null +++ b/cmake/presets/hip.cmake @@ -0,0 +1,14 @@ +# preset that will enable hcc plus gcc with support for MPI and OpenMP (on Linux boxes) + +set(CMAKE_CXX_COMPILER "hcc" CACHE STRING "" FORCE) +set(CMAKE_C_COMPILER "gcc" CACHE STRING "" FORCE) +set(CMAKE_CXX_FLAGS "-Wall -Wextra -g -O2 -DNDEBG" CACHE STRING "" FORCE) +set(MPI_CXX "hcc" CACHE STRING "" FORCE) +set(MPI_CXX_COMPILER "mpicxx" CACHE STRING "" FORCE) +unset(HAVE_OMP_H_INCLUDE CACHE) + +set(OpenMP_CXX "hcc" CACHE STRING "" FORCE) +set(OpenMP_CXX_FLAGS "-fopenmp" CACHE STRING "" FORCE) +set(OpenMP_CXX_LIB_NAMES "omp" CACHE STRING "" FORCE) +set(OpenMP_omp_LIBRARY "libomp.so" CACHE PATH "" FORCE) + From b362a06ca32f745eddbd0fb252bf044118758650 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Mon, 27 Apr 2020 23:17:43 -0400 Subject: [PATCH 16/24] (temporarily) disable CMAKE_TUNE_FLAGS verification script code --- cmake/CMakeLists.txt | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index 9f29220d4f..0e408ae25b 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -326,16 +326,17 @@ foreach(PKG_WITH_INCL KSPACE PYTHON VORONOI USER-COLVARS USER-MOLFILE USER-NETCD endforeach() set(CMAKE_TUNE_FLAGS "${CMAKE_TUNE_DEFAULT}" CACHE STRING "Compiler specific optimization or instrumentation") -separate_arguments(CMAKE_TUNE_FLAGS) -include(CheckCXXCompilerFlag) -foreach(_FLAG ${CMAKE_TUNE_FLAGS}) - check_cxx_compiler_flag("${_FLAG}" COMPILER_SUPPORTS${_FLAG}) - if(COMPILER_SUPPORTS${_FLAG}) - target_compile_options(lammps PRIVATE ${_FLAG}) - else() - message(WARNING "${_FLAG} found in CMAKE_TUNE_FLAGS, but not supported by the compiler, skipping") - endif() -endforeach() +# this is broken for many flags and compilers +#separate_arguments(CMAKE_TUNE_FLAGS) +#include(CheckCXXCompilerFlag) +#foreach(_FLAG ${CMAKE_TUNE_FLAGS}) +# check_cxx_compiler_flag("${_FLAG}" COMPILER_SUPPORTS${_FLAG}) +# if(COMPILER_SUPPORTS${_FLAG}) +# target_compile_options(lammps PRIVATE ${_FLAG}) +# else() +# message(WARNING "${_FLAG} found in CMAKE_TUNE_FLAGS, but not supported by the compiler, skipping") +# endif() +#endforeach() ######################################################################## # Basic system tests (standard libraries, headers, functions, types) # ######################################################################## From 25d1ad7714db6d600df9f2ba70c22494b32d9295 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Mon, 27 Apr 2020 23:18:25 -0400 Subject: [PATCH 17/24] update HIP compilation makefile for updated legacy build --- src/MAKE/OPTIONS/Makefile.hip | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/src/MAKE/OPTIONS/Makefile.hip b/src/MAKE/OPTIONS/Makefile.hip index 76affc796c..062b92fb6d 100644 --- a/src/MAKE/OPTIONS/Makefile.hip +++ b/src/MAKE/OPTIONS/Makefile.hip @@ -27,12 +27,12 @@ SHLIBFLAGS = -shared # if you change any -D setting, do full re-compile after "make clean" # LAMMPS ifdef settings -# see possible settings in Section 2.2 (step 4) of manual +# see possible settings in Section 3.5 of the manual LMP_INC = -DLAMMPS_GZIP -DLAMMPS_MEMALIGN=64 # MPI library -# see discussion in Section 2.2 (step 5) of manual +# see discussion in Section 3.4 of the manual # MPI wrapper compiler/linker can provide this info # can point to dummy MPI library in src/STUBS as in Makefile.serial # use -D MPICH and OMPI settings in INC to avoid C++ lib conflicts @@ -45,7 +45,7 @@ MPI_PATH = MPI_LIB = # FFT library -# see discussion in Section 2.2 (step 6) of manual +# see discussion in Section 3.5.2 of manual # can be left blank to use provided KISS FFT library # INC = -DFFT setting, e.g. -DFFT_FFTW, FFT compiler settings # PATH = path for FFT library @@ -56,7 +56,7 @@ FFT_PATH = FFT_LIB = # JPEG and/or PNG library -# see discussion in Section 2.2 (step 7) of manual +# see discussion in Section 3.5.4 of manual # only needed if -DLAMMPS_JPEG or -DLAMMPS_PNG listed with LMP_INC # INC = path(s) for jpeglib.h and/or png.h # PATH = path(s) for JPEG library and/or PNG library @@ -91,18 +91,22 @@ vpath %.h .. # Link target -$(EXE): $(OBJ) $(EXTRA_LINK_DEPENDS) - $(LINK) $(LINKFLAGS) $(EXTRA_PATH) $(OBJ) $(EXTRA_LIB) $(LIB) -o $(EXE) - $(SIZE) $(EXE) +$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) + $(LINK) $(LINKFLAGS) main.o $(EXTRA_PATH) $(LMPLINK) $(EXTRA_LIB) $(LIB) -o $@ + $(SIZE) $@ # Library targets -lib: $(OBJ) $(EXTRA_LINK_DEPENDS) - $(ARCHIVE) $(ARFLAGS) $(EXE) $(OBJ) +$(ARLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + $(ARCHIVE) $(ARFLAGS) ../$(ARLIB) $(OBJ) + @rm -f $(ARLIB) + @ln -s ../$(ARLIB) $(ARLIB) -shlib: $(OBJ) $(EXTRA_LINK_DEPENDS) - $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o $(EXE) \ - $(OBJ) $(EXTRA_LIB) $(LIB) +$(SHLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o ../$(SHLIB) \ + $(OBJ) $(EXTRA_LIB) $(LIB) + @rm -f $(SHLIB) + @ln -s ../$(SHLIB) $(SHLIB) # Compilation rules From d3017744a946cd445112a3521dea4daedc75f5ce Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Mon, 27 Apr 2020 23:55:41 -0400 Subject: [PATCH 18/24] updates for building with hip --- cmake/Modules/Packages/GPU.cmake | 10 ++++++---- cmake/presets/hip.cmake | 8 ++++---- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/cmake/Modules/Packages/GPU.cmake b/cmake/Modules/Packages/GPU.cmake index c59b350b56..a6d5c77ad2 100644 --- a/cmake/Modules/Packages/GPU.cmake +++ b/cmake/Modules/Packages/GPU.cmake @@ -278,7 +278,7 @@ elseif(GPU_API STREQUAL "HIP") set_directory_properties(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES "${LAMMPS_LIB_BINARY_DIR}/gpu/*_cubin.h ${LAMMPS_LIB_BINARY_DIR}/gpu/*.cu.cpp") - hip_add_library(gpu STATIC ${GPU_LIB_SOURCES}) + add_library(gpu STATIC ${GPU_LIB_SOURCES}) target_include_directories(gpu PRIVATE ${LAMMPS_LIB_BINARY_DIR}/gpu) target_compile_definitions(gpu PRIVATE -D_${GPU_PREC_SETTING} -DMPI_GERYON -DUCL_NO_EXIT) target_compile_definitions(gpu PRIVATE -DUSE_HIP) @@ -330,7 +330,7 @@ elseif(GPU_API STREQUAL "HIP") if(HIP_PLATFORM STREQUAL "nvcc") target_compile_definitions(gpu PRIVATE -D__HIP_PLATFORM_NVCC__) - target_include_directories(gpu PRIVATE ${HIP_ROOT_DIR}/include) + target_include_directories(gpu PRIVATE ${HIP_ROOT_DIR}/../include) target_include_directories(gpu PRIVATE ${CUDA_INCLUDE_DIRS}) target_link_libraries(gpu PRIVATE ${CUDA_LIBRARIES} ${CUDA_CUDA_LIBRARY}) @@ -339,9 +339,11 @@ elseif(GPU_API STREQUAL "HIP") target_include_directories(hip_get_devices PRIVATE ${CUDA_INCLUDE_DIRS}) target_link_libraries(hip_get_devices PRIVATE ${CUDA_LIBRARIES} ${CUDA_CUDA_LIBRARY}) elseif(HIP_PLATFORM STREQUAL "hcc") + target_compile_definitions(gpu PRIVATE -D__HIP_PLATFORM_HCC__) + target_include_directories(gpu PRIVATE ${HIP_ROOT_DIR}/../include) + target_compile_definitions(hip_get_devices PRIVATE -D__HIP_PLATFORM_HCC__) - target_include_directories(hip_get_devices PRIVATE ${HIP_ROOT_DIR}/include) - target_include_directories(hip_get_devices PRIVATE ${HIP_ROOT_DIR}/../hsa/include) + target_include_directories(hip_get_devices PRIVATE ${HIP_ROOT_DIR}/../include) endif() target_link_libraries(lammps PRIVATE gpu) diff --git a/cmake/presets/hip.cmake b/cmake/presets/hip.cmake index 9bfea33b54..765fcecf5e 100644 --- a/cmake/presets/hip.cmake +++ b/cmake/presets/hip.cmake @@ -1,13 +1,13 @@ -# preset that will enable hcc plus gcc with support for MPI and OpenMP (on Linux boxes) +# preset that will enable hipcc plus gcc with support for MPI and OpenMP (on Linux boxes) -set(CMAKE_CXX_COMPILER "hcc" CACHE STRING "" FORCE) +set(CMAKE_CXX_COMPILER "hipcc" CACHE STRING "" FORCE) set(CMAKE_C_COMPILER "gcc" CACHE STRING "" FORCE) set(CMAKE_CXX_FLAGS "-Wall -Wextra -g -O2 -DNDEBG" CACHE STRING "" FORCE) -set(MPI_CXX "hcc" CACHE STRING "" FORCE) +set(MPI_CXX "hipcc" CACHE STRING "" FORCE) set(MPI_CXX_COMPILER "mpicxx" CACHE STRING "" FORCE) unset(HAVE_OMP_H_INCLUDE CACHE) -set(OpenMP_CXX "hcc" CACHE STRING "" FORCE) +set(OpenMP_CXX "hipcc" CACHE STRING "" FORCE) set(OpenMP_CXX_FLAGS "-fopenmp" CACHE STRING "" FORCE) set(OpenMP_CXX_LIB_NAMES "omp" CACHE STRING "" FORCE) set(OpenMP_omp_LIBRARY "libomp.so" CACHE PATH "" FORCE) From d931365e4e1030d32d4e7b27a9cdac42cd60ed7f Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Tue, 28 Apr 2020 01:11:54 -0400 Subject: [PATCH 19/24] fix typos --- cmake/presets/clang.cmake | 2 +- cmake/presets/hip.cmake | 4 +--- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/cmake/presets/clang.cmake b/cmake/presets/clang.cmake index e2b1e02cc9..bfc355669d 100644 --- a/cmake/presets/clang.cmake +++ b/cmake/presets/clang.cmake @@ -2,7 +2,7 @@ set(CMAKE_CXX_COMPILER "clang++" CACHE STRING "" FORCE) set(CMAKE_C_COMPILER "clang" CACHE STRING "" FORCE) -set(CMAKE_CXX_FLAGS "-Wall -Wextra -g -O2 -DNDEBG" CACHE STRING "" FORCE) +set(CMAKE_CXX_FLAGS "-Wall -Wextra -g -O2 -DNDEBUG" CACHE STRING "" FORCE) set(MPI_CXX "clang++" CACHE STRING "" FORCE) set(MPI_CXX_COMPILER "mpicxx" CACHE STRING "" FORCE) unset(HAVE_OMP_H_INCLUDE CACHE) diff --git a/cmake/presets/hip.cmake b/cmake/presets/hip.cmake index 765fcecf5e..047c8e8eb0 100644 --- a/cmake/presets/hip.cmake +++ b/cmake/presets/hip.cmake @@ -2,9 +2,7 @@ set(CMAKE_CXX_COMPILER "hipcc" CACHE STRING "" FORCE) set(CMAKE_C_COMPILER "gcc" CACHE STRING "" FORCE) -set(CMAKE_CXX_FLAGS "-Wall -Wextra -g -O2 -DNDEBG" CACHE STRING "" FORCE) -set(MPI_CXX "hipcc" CACHE STRING "" FORCE) -set(MPI_CXX_COMPILER "mpicxx" CACHE STRING "" FORCE) +set(CMAKE_CXX_FLAGS "-Wall -Wextra -g -O2 -DNDEBUG" CACHE STRING "" FORCE) unset(HAVE_OMP_H_INCLUDE CACHE) set(OpenMP_CXX "hipcc" CACHE STRING "" FORCE) From 867088dbd8f48821b3ef76c940e97a5e8d0dffdb Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Tue, 28 Apr 2020 01:12:31 -0400 Subject: [PATCH 20/24] add packages to also allow a regular build not just cross-compilation --- tools/singularity/fedora30_mingw.def | 10 ++++++---- tools/singularity/fedora32_mingw.def | 2 ++ 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/tools/singularity/fedora30_mingw.def b/tools/singularity/fedora30_mingw.def index ef83d8f0a7..ab9ea7b738 100644 --- a/tools/singularity/fedora30_mingw.def +++ b/tools/singularity/fedora30_mingw.def @@ -3,9 +3,11 @@ From: fedora:30 %post dnf -y update - dnf -y install vim-enhanced git file make cmake patch which file \ - dos2unix findutils rsync \ - ccache gcc-c++ gdb valgrind eigen3-devel \ + dnf -y install vim-enhanced git file make cmake patch which file Lmod \ + ninja-build clang libomp-devel libubsan libasan libtsan \ + dos2unix findutils rsync python-devel libjpeg-devel libpng-devel \ + ccache gcc-c++ gcc-gfortran gdb valgrind eigen3-devel openblas-devel \ + openmpi-devel mpich-devel fftw-devel voro++-devel gsl-devel \ mingw-filesystem-base mingw32-nsis mingw-binutils-generic \ mingw32-filesystem mingw32-pkg-config \ mingw64-filesystem mingw64-pkg-config \ @@ -39,7 +41,7 @@ From: fedora:30 # we need to reset any module variables # inherited from the host. unset LOADEDMODULES - source /etc/profile.d/modules.sh + . /etc/profile.d/modules.sh module purge module load mpi diff --git a/tools/singularity/fedora32_mingw.def b/tools/singularity/fedora32_mingw.def index 43d5659a19..3f4ded6298 100644 --- a/tools/singularity/fedora32_mingw.def +++ b/tools/singularity/fedora32_mingw.def @@ -38,6 +38,8 @@ From: fedora:32 %environment LC_ALL=C export LC_ALL + # we need to reset any module variables + # inherited from the host. unset LOADEDMODULES . /etc/profile.d/modules.sh module purge From 705c10ef473add065107d7d15010f26752c0d943 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Tue, 28 Apr 2020 01:12:49 -0400 Subject: [PATCH 21/24] restore original command --- cmake/Modules/Packages/GPU.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/Modules/Packages/GPU.cmake b/cmake/Modules/Packages/GPU.cmake index a6d5c77ad2..16b492cbe0 100644 --- a/cmake/Modules/Packages/GPU.cmake +++ b/cmake/Modules/Packages/GPU.cmake @@ -278,7 +278,7 @@ elseif(GPU_API STREQUAL "HIP") set_directory_properties(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES "${LAMMPS_LIB_BINARY_DIR}/gpu/*_cubin.h ${LAMMPS_LIB_BINARY_DIR}/gpu/*.cu.cpp") - add_library(gpu STATIC ${GPU_LIB_SOURCES}) + hip_add_library(gpu STATIC ${GPU_LIB_SOURCES}) target_include_directories(gpu PRIVATE ${LAMMPS_LIB_BINARY_DIR}/gpu) target_compile_definitions(gpu PRIVATE -D_${GPU_PREC_SETTING} -DMPI_GERYON -DUCL_NO_EXIT) target_compile_definitions(gpu PRIVATE -DUSE_HIP) From 6be36196da03a407f0f93176d12317ce8b78636e Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Tue, 28 Apr 2020 01:36:21 -0400 Subject: [PATCH 22/24] explicitly include STUBS MPI headers for serial compile since we seem to pick up the OpenMP ones otherwise --- cmake/Modules/Packages/GPU.cmake | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/cmake/Modules/Packages/GPU.cmake b/cmake/Modules/Packages/GPU.cmake index 16b492cbe0..8c1b4d25e4 100644 --- a/cmake/Modules/Packages/GPU.cmake +++ b/cmake/Modules/Packages/GPU.cmake @@ -99,6 +99,9 @@ if(GPU_API STREQUAL "CUDA") add_library(gpu STATIC ${GPU_LIB_SOURCES} ${GPU_LIB_CUDPP_SOURCES} ${GPU_OBJS}) target_link_libraries(gpu PRIVATE ${CUDA_LIBRARIES} ${CUDA_CUDA_LIBRARY}) target_include_directories(gpu PRIVATE ${LAMMPS_LIB_BINARY_DIR}/gpu ${CUDA_INCLUDE_DIRS}) + if(NOT BUILD_MPI) + target_include_directories(gpu PRIVATE ${LAMMPS_SOURCE_DIR}/STUBS) + endif() target_compile_definitions(gpu PRIVATE -D_${GPU_PREC_SETTING} -DMPI_GERYON -DUCL_NO_EXIT ${GPU_CUDA_MPS_FLAGS}) if(CUDPP_OPT) target_include_directories(gpu PRIVATE ${LAMMPS_LIB_SOURCE_DIR}/gpu/cudpp_mini) @@ -177,6 +180,9 @@ elseif(GPU_API STREQUAL "OPENCL") add_library(gpu STATIC ${GPU_LIB_SOURCES}) target_link_libraries(gpu PRIVATE OpenCL::OpenCL) target_include_directories(gpu PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/gpu) + if(NOT BUILD_MPI) + target_include_directories(gpu PRIVATE ${LAMMPS_SOURCE_DIR}/STUBS) + endif() target_compile_definitions(gpu PRIVATE -D_${GPU_PREC_SETTING} -D${OCL_TUNE}_OCL -DMPI_GERYON -DUCL_NO_EXIT) target_compile_definitions(gpu PRIVATE -DUSE_OPENCL) @@ -280,6 +286,9 @@ elseif(GPU_API STREQUAL "HIP") hip_add_library(gpu STATIC ${GPU_LIB_SOURCES}) target_include_directories(gpu PRIVATE ${LAMMPS_LIB_BINARY_DIR}/gpu) + if(NOT BUILD_MPI) + target_include_directories(gpu PRIVATE ${LAMMPS_SOURCE_DIR}/STUBS) + endif() target_compile_definitions(gpu PRIVATE -D_${GPU_PREC_SETTING} -DMPI_GERYON -DUCL_NO_EXIT) target_compile_definitions(gpu PRIVATE -DUSE_HIP) From 24fe5bc1876f17b84676ad0c0c029b199c8d7c09 Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Tue, 28 Apr 2020 06:03:34 -0600 Subject: [PATCH 23/24] cmake: reenable CMAKE_TUNE_FLAGS check --- cmake/CMakeLists.txt | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index 0e408ae25b..d9c82678eb 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -326,17 +326,17 @@ foreach(PKG_WITH_INCL KSPACE PYTHON VORONOI USER-COLVARS USER-MOLFILE USER-NETCD endforeach() set(CMAKE_TUNE_FLAGS "${CMAKE_TUNE_DEFAULT}" CACHE STRING "Compiler specific optimization or instrumentation") -# this is broken for many flags and compilers -#separate_arguments(CMAKE_TUNE_FLAGS) -#include(CheckCXXCompilerFlag) -#foreach(_FLAG ${CMAKE_TUNE_FLAGS}) -# check_cxx_compiler_flag("${_FLAG}" COMPILER_SUPPORTS${_FLAG}) -# if(COMPILER_SUPPORTS${_FLAG}) -# target_compile_options(lammps PRIVATE ${_FLAG}) -# else() -# message(WARNING "${_FLAG} found in CMAKE_TUNE_FLAGS, but not supported by the compiler, skipping") -# endif() -#endforeach() +separate_arguments(CMAKE_TUNE_FLAGS) +include(CheckCXXCompilerFlag) +foreach(_FLAG ${CMAKE_TUNE_FLAGS}) + string(REGEX REPLACE "[=\"]" "" _FLAGX ${_FLAG}) + check_cxx_compiler_flag("${_FLAG}" COMPILER_SUPPORTS${_FLAGX}) + if(COMPILER_SUPPORTS${_FLAGX}) + target_compile_options(lammps PRIVATE ${_FLAG}) + else() + message(WARNING "${_FLAG} found in CMAKE_TUNE_FLAGS, but not supported by the compiler, skipping") + endif() +endforeach() ######################################################################## # Basic system tests (standard libraries, headers, functions, types) # ######################################################################## From ef3e071067f5e5fa5ee6caaeadc15529fef57661 Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Tue, 28 Apr 2020 07:43:31 -0600 Subject: [PATCH 24/24] GPU.cmake: localize hackery --- cmake/Modules/Packages/GPU.cmake | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/cmake/Modules/Packages/GPU.cmake b/cmake/Modules/Packages/GPU.cmake index 8c1b4d25e4..9299914b9b 100644 --- a/cmake/Modules/Packages/GPU.cmake +++ b/cmake/Modules/Packages/GPU.cmake @@ -99,9 +99,6 @@ if(GPU_API STREQUAL "CUDA") add_library(gpu STATIC ${GPU_LIB_SOURCES} ${GPU_LIB_CUDPP_SOURCES} ${GPU_OBJS}) target_link_libraries(gpu PRIVATE ${CUDA_LIBRARIES} ${CUDA_CUDA_LIBRARY}) target_include_directories(gpu PRIVATE ${LAMMPS_LIB_BINARY_DIR}/gpu ${CUDA_INCLUDE_DIRS}) - if(NOT BUILD_MPI) - target_include_directories(gpu PRIVATE ${LAMMPS_SOURCE_DIR}/STUBS) - endif() target_compile_definitions(gpu PRIVATE -D_${GPU_PREC_SETTING} -DMPI_GERYON -DUCL_NO_EXIT ${GPU_CUDA_MPS_FLAGS}) if(CUDPP_OPT) target_include_directories(gpu PRIVATE ${LAMMPS_LIB_SOURCE_DIR}/gpu/cudpp_mini) @@ -180,9 +177,6 @@ elseif(GPU_API STREQUAL "OPENCL") add_library(gpu STATIC ${GPU_LIB_SOURCES}) target_link_libraries(gpu PRIVATE OpenCL::OpenCL) target_include_directories(gpu PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/gpu) - if(NOT BUILD_MPI) - target_include_directories(gpu PRIVATE ${LAMMPS_SOURCE_DIR}/STUBS) - endif() target_compile_definitions(gpu PRIVATE -D_${GPU_PREC_SETTING} -D${OCL_TUNE}_OCL -DMPI_GERYON -DUCL_NO_EXIT) target_compile_definitions(gpu PRIVATE -DUSE_OPENCL) @@ -286,9 +280,6 @@ elseif(GPU_API STREQUAL "HIP") hip_add_library(gpu STATIC ${GPU_LIB_SOURCES}) target_include_directories(gpu PRIVATE ${LAMMPS_LIB_BINARY_DIR}/gpu) - if(NOT BUILD_MPI) - target_include_directories(gpu PRIVATE ${LAMMPS_SOURCE_DIR}/STUBS) - endif() target_compile_definitions(gpu PRIVATE -D_${GPU_PREC_SETTING} -DMPI_GERYON -DUCL_NO_EXIT) target_compile_definitions(gpu PRIVATE -DUSE_HIP) @@ -368,7 +359,12 @@ RegisterStylesExt(${GPU_SOURCES_DIR} gpu GPU_SOURCES) get_property(GPU_SOURCES GLOBAL PROPERTY GPU_SOURCES) -target_link_libraries(gpu PRIVATE MPI::MPI_CXX) +if(NOT BUILD_MPI) + # mpistubs is aliased to MPI::MPI_CXX, but older versions of cmake won't work forward the include path + target_link_libraries(gpu PRIVATE mpi_stubs) +else() + target_link_libraries(gpu PRIVATE MPI::MPI_CXX) +endif() if(NOT BUILD_SHARED_LIBS) install(TARGETS gpu EXPORT LAMMPS_Targets LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) endif()