Unverified Commit 66271448 authored by Axel Kohlmeyer's avatar Axel Kohlmeyer Committed by GitHub
Browse files

Merge pull request #2167 from Vsevak/master

Update GPU CMake and Makefile scripts for ROCm v3.5
parents 3c19a496 f9a20228
Loading
Loading
Loading
Loading
+11 −4
Original line number Original line Diff line number Diff line
@@ -268,10 +268,17 @@ elseif(GPU_API STREQUAL "HIP")
    if(HIP_PLATFORM STREQUAL "hcc")
    if(HIP_PLATFORM STREQUAL "hcc")
        configure_file(${CU_FILE} ${CU_CPP_FILE} COPYONLY)
        configure_file(${CU_FILE} ${CU_CPP_FILE} COPYONLY)


        if(HIP_COMPILER STREQUAL "clang")
          add_custom_command(OUTPUT ${CUBIN_FILE}
            VERBATIM COMMAND ${HIP_HIPCC_EXECUTABLE} --genco --offload-arch=${HIP_ARCH} -O3 -ffast-math -DUSE_HIP -D_${GPU_PREC_SETTING} -I${LAMMPS_LIB_SOURCE_DIR}/gpu -o ${CUBIN_FILE} ${CU_CPP_FILE}
            DEPENDS ${CU_CPP_FILE}
            COMMENT "Generating ${CU_NAME}.cubin")
        else()
          add_custom_command(OUTPUT ${CUBIN_FILE}
          add_custom_command(OUTPUT ${CUBIN_FILE}
            VERBATIM COMMAND ${HIP_HIPCC_EXECUTABLE} --genco -t="${HIP_ARCH}" -f=\"-O3 -ffast-math -DUSE_HIP -D_${GPU_PREC_SETTING} -I${LAMMPS_LIB_SOURCE_DIR}/gpu\" -o ${CUBIN_FILE} ${CU_CPP_FILE}
            VERBATIM COMMAND ${HIP_HIPCC_EXECUTABLE} --genco -t="${HIP_ARCH}" -f=\"-O3 -ffast-math -DUSE_HIP -D_${GPU_PREC_SETTING} -I${LAMMPS_LIB_SOURCE_DIR}/gpu\" -o ${CUBIN_FILE} ${CU_CPP_FILE}
            DEPENDS ${CU_CPP_FILE}
            DEPENDS ${CU_CPP_FILE}
            COMMENT "Generating ${CU_NAME}.cubin")
            COMMENT "Generating ${CU_NAME}.cubin")
        endif()
    elseif(HIP_PLATFORM STREQUAL "nvcc")
    elseif(HIP_PLATFORM STREQUAL "nvcc")
        add_custom_command(OUTPUT ${CUBIN_FILE}
        add_custom_command(OUTPUT ${CUBIN_FILE}
          VERBATIM COMMAND ${HIP_HIPCC_EXECUTABLE} --fatbin --use_fast_math -DUSE_HIP -D_${GPU_PREC_SETTING} ${HIP_CUDA_GENCODE} -I${LAMMPS_LIB_SOURCE_DIR}/gpu -o ${CUBIN_FILE} ${CU_FILE}
          VERBATIM COMMAND ${HIP_HIPCC_EXECUTABLE} --fatbin --use_fast_math -DUSE_HIP -D_${GPU_PREC_SETTING} ${HIP_CUDA_GENCODE} -I${LAMMPS_LIB_SOURCE_DIR}/gpu -o ${CUBIN_FILE} ${CU_FILE}
+1 −1
Original line number Original line Diff line number Diff line
@@ -88,7 +88,7 @@ GPUs/node to 1.


Using the "-pk" switch explicitly allows for setting of the number of
Using the "-pk" switch explicitly allows for setting of the number of
GPUs/node to use and additional options.  Its syntax is the same as
GPUs/node to use and additional options.  Its syntax is the same as
same as the "package gpu" command.  See the :doc:`package <package>`
the "package gpu" command.  See the :doc:`package <package>`
command doc page for details, including the default values used for
command doc page for details, including the default values used for
all its options if it is not specified.
all its options if it is not specified.


+11 −5
Original line number Original line Diff line number Diff line
@@ -33,10 +33,10 @@ HIP_HOST_OPTS += -DMPI_GERYON -DUCL_NO_EXIT
# this settings should match LAMMPS Makefile
# this settings should match LAMMPS Makefile
MPI_COMP_OPTS = $(shell mpicxx --showme:compile)
MPI_COMP_OPTS = $(shell mpicxx --showme:compile)
MPI_LINK_OPTS = $(shell mpicxx --showme:link)
MPI_LINK_OPTS = $(shell mpicxx --showme:link)
#MPI_COMP_OPTS += -I/usr/include/mpi  -DMPICH_IGNORE_CXX_SEEK -DOMPI_SKIP_MPICXX=1


HIP_PATH ?= $(wildcard /opt/rocm/hip)
HIP_PATH ?= $(wildcard /opt/rocm/hip)
HIP_PLATFORM=$(shell $(HIP_PATH)/bin/hipconfig --compiler)
HIP_PLATFORM=$(shell $(HIP_PATH)/bin/hipconfig --platform)
HIP_COMPILER=$(shell $(HIP_PATH)/bin/hipconfig --compiler)


ifeq (hcc,$(HIP_PLATFORM))
ifeq (hcc,$(HIP_PLATFORM))
	HIP_OPTS  += -ffast-math
	HIP_OPTS  += -ffast-math
@@ -48,8 +48,6 @@ else ifeq (nvcc,$(HIP_PLATFORM))
		    -gencode arch=compute_50,code=[sm_50,compute_50] -gencode arch=compute_52,code=[sm_52,compute_52] -gencode arch=compute_53,code=[sm_53,compute_53]\
		    -gencode arch=compute_50,code=[sm_50,compute_50] -gencode arch=compute_52,code=[sm_52,compute_52] -gencode arch=compute_53,code=[sm_53,compute_53]\
			-gencode arch=compute_60,code=[sm_60,compute_60] -gencode arch=compute_61,code=[sm_61,compute_61] -gencode arch=compute_62,code=[sm_62,compute_62]\
			-gencode arch=compute_60,code=[sm_60,compute_60] -gencode arch=compute_61,code=[sm_61,compute_61] -gencode arch=compute_62,code=[sm_62,compute_62]\
			-gencode arch=compute_70,code=[sm_70,compute_70] -gencode arch=compute_72,code=[sm_72,compute_72] -gencode arch=compute_75,code=[sm_75,compute_75]
			-gencode arch=compute_70,code=[sm_70,compute_70] -gencode arch=compute_72,code=[sm_72,compute_72] -gencode arch=compute_75,code=[sm_75,compute_75]
else
	$(error Specify HIP platform using 'export HIP_PLATFORM=(hcc,nvcc)')
endif
endif


BIN_DIR = .
BIN_DIR = .
@@ -66,7 +64,15 @@ BSH = /bin/sh
HIP_OPTS += -DUSE_HIP $(HIP_PRECISION)
HIP_OPTS += -DUSE_HIP $(HIP_PRECISION)
HIP_GPU_OPTS += $(HIP_OPTS) -I./
HIP_GPU_OPTS += $(HIP_OPTS) -I./


ifeq (hcc,$(HIP_PLATFORM))
ifeq (clang,$(HIP_COMPILER))
	HIP_HOST_OPTS += -fPIC
	HIP_GPU_CC  = $(HIP_PATH)/bin/hipcc --genco
	HIP_GPU_OPTS_S = --offload-arch=$(HIP_ARCH)
	HIP_GPU_OPTS_E =
	HIP_KERNEL_SUFFIX = .cpp
	HIP_LIBS_TARGET = export HCC_AMDGPU_TARGET := $(HIP_ARCH)
	export HCC_AMDGPU_TARGET := $(HIP_ARCH)
else ifeq (hcc,$(HIP_COMPILER))
	HIP_HOST_OPTS += -fPIC
	HIP_HOST_OPTS += -fPIC
	HIP_GPU_CC  = $(HIP_PATH)/bin/hipcc --genco
	HIP_GPU_CC  = $(HIP_PATH)/bin/hipcc --genco
	HIP_GPU_OPTS_S = -t="$(HIP_ARCH)" -f=\"
	HIP_GPU_OPTS_S = -t="$(HIP_ARCH)" -f=\"
+9 −9
Original line number Original line Diff line number Diff line
@@ -250,22 +250,22 @@ void LJTIP4PLongT::copy_relations_data(int n, tagint *tag, int *map_array,
  if (ago == 0) {
  if (ago == 0) {
    hneight.zero();
    hneight.zero();



    {
    {
      UCL_H_Vec<tagint> host_tag_write(nall,*(this->ucl_device),UCL_WRITE_ONLY);
      UCL_H_Vec<tagint> host_tag_write;
      host_tag_write.view(tag, nall, *(this->ucl_device));
      this->tag.resize_ib(nall);
      this->tag.resize_ib(nall);
      for(int i=0; i<nall; ++i) host_tag_write[i] = tag[i];
      ucl_copy(this->tag, host_tag_write, false);
      ucl_copy(this->tag, host_tag_write, nall, false);
    }
    }


    UCL_H_Vec<int> host_write(max_same,*(this->ucl_device),UCL_WRITE_ONLY);
    UCL_H_Vec<int> host_write;
    host_write.view(sametag, max_same, *(this->ucl_device));
    this->atom_sametag.resize_ib(max_same);
    this->atom_sametag.resize_ib(max_same);
    for(int i=0; i<max_same; ++i) host_write[i] = sametag[i];
    ucl_copy(this->atom_sametag, host_write, false);
    ucl_copy(this->atom_sametag, host_write, max_same, false);


    host_write.resize_ib(map_size);
    this->map_array.resize_ib(map_size);
    this->map_array.resize_ib(map_size);
    for(int i=0; i<map_size; ++i) host_write[i] = map_array[i];
    host_write.view(map_array, map_size, *(this->ucl_device));
    ucl_copy(this->map_array, host_write, map_size, false);
    ucl_copy(this->map_array, host_write, false);
  }
  }
}
}


+21 −4
Original line number Original line Diff line number Diff line
BootStrap: docker
BootStrap: docker
From: rocm/dev-ubuntu-18.04
From: ubuntu:18.04


%environment
%environment
    export PATH=$PATH:/opt/rocm/bin:/opt/rocm/profiler/bin:/opt/rocm/opencl/bin/x86_64
    export PATH=$PATH:/opt/rocm/bin:/opt/rocm/profiler/bin:/opt/rocm/opencl/bin/x86_64
@@ -8,7 +8,24 @@ From: rocm/dev-ubuntu-18.04
    export DEBIAN_FRONTEND=noninteractive
    export DEBIAN_FRONTEND=noninteractive
    apt-get update
    apt-get update
    apt-get upgrade --no-install-recommends -y
    apt-get upgrade --no-install-recommends -y

    apt-get install -y --no-install-recommends curl libnuma-dev gnupg

    curl -sL http://repo.radeon.com/rocm/apt/debian/rocm.gpg.key | apt-key add -
    printf "deb [arch=amd64] http://repo.radeon.com/rocm/apt/debian/ xenial main" > /etc/apt/sources.list.d/rocm.list

    apt-get update
    apt-get install --no-install-recommends -y \
        kmod \
        file \
        sudo \
        libelf1 \
        rocm-dev \
        rocm-libs \
        build-essential

    apt-get install --no-install-recommends -y software-properties-common
    apt-get install --no-install-recommends -y software-properties-common

    apt-get install --no-install-recommends -y \
    apt-get install --no-install-recommends -y \
        bc \
        bc \
        build-essential \
        build-essential \
@@ -54,7 +71,6 @@ From: rocm/dev-ubuntu-18.04
        python3-pkg-resources \
        python3-pkg-resources \
        python3-setuptools \
        python3-setuptools \
        python3-virtualenv \
        python3-virtualenv \
        rocm-libs \
        rsync \
        rsync \
        ssh \
        ssh \
        vim-nox \
        vim-nox \
@@ -65,11 +81,12 @@ From: rocm/dev-ubuntu-18.04
        valgrind \
        valgrind \
        gdb
        gdb



    export PATH=$PATH:/opt/rocm/bin:/opt/rocm/profiler/bin:/opt/rocm/opencl/bin/x86_64
    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
    git clone -b master-rocm-3.5 https://github.com/ROCmSoftwarePlatform/hipCUB.git
    mkdir hipCUB/build
    mkdir hipCUB/build
    cd hipCUB/build
    cd hipCUB/build
    CXX=hcc cmake -D BUILD_TEST=off ..
    CXX=hipcc cmake -D BUILD_TEST=off ..
    make -j4
    make -j4
    make package
    make package
    make install
    make install