본문 바로가기

LAMMPS

Intel Compiler를 사용한 LAMMPS의 Build

LAMMPS의 Source Code를 받아보면, 아래 디렉토리에 preset이 있다.

/mylammps/cmake/presets$ ls
all_off.cmake  download.cmake  hip.cmake          kokkos-openmp.cmake    mingw-cross.cmake  oneapi.cmake    windows-intel-classic.cmake
all_on.cmake   gcc.cmake       intel.cmake        kokkos-serial.cmake    most.cmake         pedantic.cmake  windows-intel-llvm.cmake
basic.cmake    gpu-cuda.cmake  kokkos-cuda.cmake  kokkos-sycl.cmake      nolib.cmake        pgi.cmake
clang.cmake    hip_amd.cmake   kokkos-hip.cmake   macos-multiarch.cmake  nvhpc.cmake        windows.cmake

 

intel.cmake를 cmake preset option으로 부르면 된다. 아래와 같이.

cmake ../cmake \
  -D LAMMPS_MACHINE=intelOneAPI \
  -C ../cmake/presets/intel.cmake

 

그런데, LAMMPS의 intel.cmake 프리셋이 Out of date하다.

다음과 같이 바꾸어 준다.

# preset that will enable the classic Intel compilers with support for MPI and OpenMP (on Linux boxes)

set(CMAKE_CXX_COMPILER "icpx" CACHE STRING "" FORCE)
set(CMAKE_C_COMPILER "icx" CACHE STRING "" FORCE)
set(CMAKE_Fortran_COMPILER "ifx" CACHE STRING "" FORCE)
set(CMAKE_CXX_FLAGS_DEBUG "-Wall -Wextra -g" CACHE STRING "" FORCE)
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-Wall -Wextra -g -O2 -DNDEBUG" CACHE STRING "" FORCE)
set(CMAKE_CXX_FLAGS_RELEASE "-O3 -DNDEBUG" CACHE STRING "" FORCE)
set(CMAKE_Fortran_FLAGS_DEBUG "-Wall -Wextra -g" CACHE STRING "" FORCE)
set(CMAKE_Fortran_FLAGS_RELWITHDEBINFO "-Wall -Wextra -g -O2 -DNDEBUG" CACHE STRING "" FORCE)
set(CMAKE_Fortran_FLAGS_RELEASE "-O3 -DNDEBUG" CACHE STRING "" FORCE)
set(CMAKE_C_FLAGS_DEBUG "-Wall -Wextra -g" CACHE STRING "" FORCE)
set(CMAKE_C_FLAGS_RELWITHDEBINFO "-Wall -Wextra -g -O2 -DNDEBUG" CACHE STRING "" FORCE)
set(CMAKE_C_FLAGS_RELEASE "-O3 -DNDEBUG" CACHE STRING "" FORCE)

set(MPI_CXX "icpx" CACHE STRING "" FORCE)
set(MPI_CXX_COMPILER "mpiicx" CACHE STRING "" FORCE)

unset(HAVE_OMP_H_INCLUDE CACHE)
set(OpenMP_C "icc" CACHE STRING "" FORCE)
set(OpenMP_C_FLAGS "-qopenmp -qopenmp-simd" CACHE STRING "" FORCE)
set(OpenMP_C_LIB_NAMES "omp" CACHE STRING "" FORCE)
set(OpenMP_CXX "icpc" CACHE STRING "" FORCE)
set(OpenMP_CXX_FLAGS "-qopenmp -qopenmp-simd" CACHE STRING "" FORCE)
set(OpenMP_CXX_LIB_NAMES "omp" CACHE STRING "" FORCE)
set(OpenMP_Fortran_FLAGS "-qopenmp -qopenmp-simd" CACHE STRING "" FORCE)
set(OpenMP_omp_LIBRARY "libiomp5.so" CACHE PATH "" FORCE)

 

참조한 곳은

https://docs.lammps.org/Build_basics.html

 

3.4. Basic build options — LAMMPS documentation

cmake -D CMAKE_INSTALL_PREFIX=path [options ...] ../cmake make # perform make after CMake command make install # perform the installation into prefix During the installation process CMake will by default remove any runtime path settings for loading shared

docs.lammps.org

 

컴파일전에 컴파일러 환경변수 세팅하고

source /opt/intel/oneapi/setvars.sh
source /opt/intel/oneapi/mpi/latest/env/vars.sh

 

확인하려면,

which icpx
which icx
which ifx
which icpx
which mpiicx

 

컴파일

make -j 4
make install

 

Default 디렉토리에 인스톨 되니까.

/.local/bin$ ls
lmp  lmp_lmp_intelOneAPI  lmp_test.in  log.lammps  open_box.stl

 

$PATH로 인스톨 디렉토리가 지정된지 확인 하고.

 

Uninstall 하고 싶으면, build 디렉토리에서,

xargs rm < install_manifest.txt

'LAMMPS' 카테고리의 다른 글

컴파일된 LAMMPS의 확인  (0) 2024.12.24
Granular Package 설치  (0) 2024.12.24
Intel Package Compile  (1) 2024.12.21
VTK library compile w/ intel oneAPI  (0) 2024.12.12
INTEL and NVIDIA compile option (using CMAKE)  (1) 2024.12.03