환경설정
source /opt/AMD/aocc-compiler-5.0.0/setenv_AOCC.sh
컴파일러 위치 확인, mpicc, mpicxx, mpifort는 wrapping되어 있다.
$ which clang
/opt/AMD/aocc-compiler-5.0.0/bin/clang
$ which clang++
/opt/AMD/aocc-compiler-5.0.0/bin/clang++
$ which flang
/opt/AMD/aocc-compiler-5.0.0/bin/flang
$ which mpicc
/usr/local/bin/mpicc
$ which mpicxx
/usr/local/bin/mpicxx
$ which mpifort
/usr/local/bin/mpifort
$ mpicxx --version
AMD clang version 17.0.6 (CLANG: AOCC_5.0.0-Build#1377 2024_09_24)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /opt/AMD/aocc-compiler-5.0.0/bin
$ mpicc --version
AMD clang version 17.0.6 (CLANG: AOCC_5.0.0-Build#1377 2024_09_24)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /opt/AMD/aocc-compiler-5.0.0/bin
$ mpifort --version
AMD clang version 17.0.6 (CLANG: AOCC_5.0.0-Build#1377 2024_09_24)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /opt/AMD/aocc-compiler-5.0.0/bin
이제 LAMMPS의 소스코드를 다운 받는다.
git clone https://github.com/lammps/lammps.git
:~/Downloads/lammps$ mkdir build
:~/Downloads/lammps$ cd build
:~/Downloads/lammps/build$
Update 를 하는 경우,
git fetch --tags
remote: Enumerating objects: 17553, done.
remote: Counting objects: 100% (11913/11913), done.
remote: Compressing objects: 100% (286/286), done.
remote: Total 17553 (delta 11825), reused 11635 (delta 11627), pack-reused 5640 (from 4)
Receiving objects: 100% (17553/17553), 20.18 MiB | 10.97 MiB/s, done.
Resolving deltas: 100% (14265/14265), completed with 1918 local objects.
From https://github.com/lammps/lammps
165f34bc12..f4287f562c develop -> origin/develop
* [new branch] copilot/fix-bug-issue-4712 -> origin/copilot/fix-bug-issue-4712
* [new branch] copilot/fix-bug-reported-4706 -> origin/copilot/fix-bug-reported-4706
* [new branch] doc-page-mc-only-hint -> origin/doc-page-mc-only-hint
* [new branch] fix-store-state-enhance -> origin/fix-store-state-enhance
1f617ad2d0..1fd05b77fe granular-triangles -> origin/granular-triangles
29aba1d068..2b377f2304 maintenance -> origin/maintenance
7b4c33630d..9792f6a9a3 release -> origin/release
0435e156ba..a334498684 stable -> origin/stable
* [new tag] patch_10Sep2025 -> patch_10Sep2025
* [new tag] patch_12Jun2025 -> patch_12Jun2025
* [new tag] patch_22Jul2025 -> patch_22Jul2025
* [new tag] stable_22Jul2025 -> stable_22Jul2025
* [new tag] stable_22Jul2025_update1 -> stable_22Jul2025_update1
* [new tag] stable_22Jul2025_update2 -> stable_22Jul2025_update2
* [new tag] stable_29Aug2024_update3 -> stable_29Aug2024_update3
* [new tag] stable_29Aug2024_update4 -> stable_29Aug2024_update4
stable 버전에 newtag가 있다. "*"를 확인
git checkout stable
branch 'stable' set up to track 'origin/stable'.
Switched to a new branch 'stable'
git pull origin stable
From https://github.com/lammps/lammps
* branch stable -> FETCH_HEAD
Already up to date.
$ git describe --tags
stable_22Jul2025_update2
버전 최종 확인
$git branch --show-current
stable
$ git describe --tags --abbrev=0
stable_22Jul2025_update2
컴파일러 링크 확인
$ which mpirun
/usr/local/bin/mpirun
$ stat /usr/local/bin/mpicc
File: /usr/local/bin/mpicc -> opal_wrapper
Size: 12 Blocks: 0 IO Block: 4096 symbolic link
Device: 252,0 Inode: 1087929 Links: 1
Access: (0777/lrwxrwxrwx) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2025-05-02 17:42:51.936496280 +0900
Modify: 2025-05-01 23:43:42.191198262 +0900
Change: 2025-05-01 23:43:42.191198262 +0900
Birth: 2025-05-01 23:43:42.191198262 +0900
$ stat /usr/local/bin/mpicxx
File: /usr/local/bin/mpicxx -> opal_wrapper
Size: 12 Blocks: 0 IO Block: 4096 symbolic link
Device: 252,0 Inode: 1087931 Links: 1
Access: (0777/lrwxrwxrwx) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2025-05-02 17:46:14.649499549 +0900
Modify: 2025-05-01 23:43:42.196198262 +0900
Change: 2025-05-01 23:43:42.196198262 +0900
Birth: 2025-05-01 23:43:42.196198262 +0900
$ stat /usr/local/bin/mpifort
File: /usr/local/bin/mpifort -> opal_wrapper
Size: 12 Blocks: 0 IO Block: 4096 symbolic link
Device: 252,0 Inode: 1087932 Links: 1
Access: (0777/lrwxrwxrwx) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2025-05-02 17:46:14.649499549 +0900
Modify: 2025-05-01 23:43:42.199198261 +0900
Change: 2025-05-01 23:43:42.199198261 +0900
Birth: 2025-05-01 23:43:42.199198261 +0900
AOCL 링크 확인
dpkg -L aocl-linux-aocc-5.0.0
Python3-dev 설치
sudo apt install python3-dev
cmake
cmake ../cmake \
-G Ninja \
-D CMAKE_C_COMPILER=/usr/local/bin/mpicc \
-D CMAKE_CXX_COMPILER=/usr/local/bin/mpicxx \
-D CMAKE_Fortran_COMPILER=/usr/local/bin/mpifort \
-D CMAKE_C_FLAGS="-Ofast -march=native" \
-D CMAKE_CXX_FLAGS="-Ofast -march=native" \
-D CMAKE_Fortran_FLAGS="-Ofast -march=native" \
-D BUILD_OMP=yes \
-D PKG_OPENMP=yes \
-D PKG_GRANULAR=yes \
-D PKG_VTK=yes \
-D PKG_RIGID=yes \
-D PKG_MOLECULE=yes \
-D PKG_PYTHON=yes \
-D PKG_EXTRA-FIX=yes \
-D Python_EXECUTABLE=/usr/bin/python3 \
-D BUILD_SHARED_LIBS=yes \
-D CMAKE_INSTALL_PREFIX=$HOME/LAMMPS \
-D CMAKE_INSTALL_RPATH=$HOME/LAMMPS/lib \
-D LAMMPS_SIZES=bigbig \
-D LAMMPS_BLAS_LIB="-L/opt/AMD/aocl/aocl-linux-aocc-5.0.0/aocc/lib_LP64 -lblis-mt -lpthread -lm" \
-D LAMMPS_LAPACK_LIB="-L/opt/AMD/aocl/aocl-linux-aocc-5.0.0/aocc/lib_LP64 -lflame -lpthread -lm"
KOKKOS - OMP
cmake ../cmake \
-G Ninja \
-D CMAKE_C_COMPILER=/usr/local/bin/mpicc \
-D CMAKE_CXX_COMPILER=/usr/local/bin/mpicxx \
-D CMAKE_Fortran_COMPILER=/usr/local/bin/mpifort \
-D CMAKE_C_FLAGS="-Ofast -march=native" \
-D CMAKE_CXX_FLAGS="-Ofast -march=native" \
-D CMAKE_Fortran_FLAGS="-Ofast -march=native" \
-D PKG_GRANULAR=yes \
-D PKG_VTK=yes \
-D PKG_RIGID=yes \
-D PKG_MOLECULE=yes \
-D PKG_PYTHON=yes \
-D PKG_EXTRA-FIX=yes \
-D PKG_KOKKOS=yes \
-D Kokkos_ARCH_ZEN3=yes \ # For AMD 5995WX
-D Kokkos_ENABLE_OPENMP=yes \
-D Python_EXECUTABLE=/usr/bin/python3 \
-D BUILD_SHARED_LIBS=yes \
-D CMAKE_INSTALL_PREFIX=$HOME/LAMMPS_KOKKOS_OMP \
-D CMAKE_INSTALL_RPATH=$HOME/LAMMPS_KOKKOS_OMP/lib \
-D LAMMPS_BLAS_LIB="-L/opt/AMD/aocl/aocl-linux-aocc-5.0.0/aocc/lib_LP64 -lblis-mt -lpthread -lm" \
-D LAMMPS_LAPACK_LIB="-L/opt/AMD/aocl/aocl-linux-aocc-5.0.0/aocc/lib_LP64 -lflame -lpthread -lm"
# -D PKG_OPENMP=yes \
# -D Kokkos_ARCH_ZEN4=yes \ $ For AMD 7995WX Pro
export PATH="$HOME/LAMMPS_KOKKOS_OMP/bin:$PATH"
export LD_LIBRARY_PATH="$HOME/LAMMPS_KOKKOS_OMP/lib:$LD_LIBRARY_PATH"
KOKKOS - GPU
ERROR: Cannot yet use fix pour with the KOKKOS package (src/GRANULAR/fix_pour.cpp:59)
GPU
cuda binary파일을 c코드로 변환 하기위해서 bin2c 가 필요한데, cuda를 설치하면 보통 아래의 디렉토리에 존재한다. 확인해 보자.
/usr/local/cuda-12.4/bin/bin2c
cmake 옵션에 위의 path를 명기
cmake ../cmake \
-G Ninja \
-D CMAKE_C_COMPILER=/usr/local/bin/mpicc \
-D CMAKE_CXX_COMPILER=/usr/local/bin/mpicxx \
-D CMAKE_Fortran_COMPILER=/usr/local/bin/mpifort \
-D CMAKE_C_FLAGS="-Ofast -march=native" \
-D CMAKE_CXX_FLAGS="-Ofast -march=native" \
-D CMAKE_Fortran_FLAGS="-Ofast -march=native" \
-D PKG_GPU=yes \
-D GPU_API=cuda \
-D GPU_ARCH=sm_90 \
-D BIN2C=/usr/local/cuda-12.4/bin/bin2c \
-D PKG_GRANULAR=yes \
-D PKG_VTK=yes \
-D PKG_RIGID=yes \
-D PKG_MOLECULE=yes \
-D PKG_PYTHON=yes \
-D PKG_EXTRA-FIX=yes \
-D Python_EXECUTABLE=/usr/bin/python3 \
-D BUILD_SHARED_LIBS=yes \
-D CMAKE_INSTALL_PREFIX=$HOME/LAMMPS_GPU \
-D CMAKE_INSTALL_RPATH=$HOME/LAMMPS_GPU/lib \
-D LAMMPS_BLAS_LIB="-L/opt/AMD/aocl/aocl-linux-aocc-5.0.0/aocc/lib_LP64 -lblis-mt -lpthread -lm" \
-D LAMMPS_LAPACK_LIB="-L/opt/AMD/aocl/aocl-linux-aocc-5.0.0/aocc/lib_LP64 -lflame -lpthread -lm"
export PATH="$HOME/LAMMPS_GPU/bin:$PATH"
export LD_LIBRARY_PATH="$HOME/LAMMPS_GPU/lib:$LD_LIBRARY_PATH"
-D LAMMPS_MEMALIGN=value # 0, 8, 16, 32, 64 (default)
빌드
ninja -j 4
sudo ninja install
파이썬 설치
sudo apt install python3.12-venv
python3 -m venv ~/my_lammps_venv
source ~/my_lammps_venv/bin/activate
ninja install-python
파이썬 가상환경에서 설치해야 할 것
pip install mpi4py
패스 잡아주기
export PATH="$HOME/LAMMPS/bin:$PATH"
export LD_LIBRARY_PATH="$HOME/LAMMPS/lib:$LD_LIBRARY_PATH"
'LAMMPS' 카테고리의 다른 글
| Performance Optimization (0) | 2025.12.17 |
|---|---|
| Possible Acclerations (0) | 2025.05.16 |
| MPI+OMP in AOCC (0) | 2025.04.14 |
| IntelOneAPI command line options for NUMA (0) | 2025.04.03 |
| LAMMPS IntelOneAPI build (2025.5.14) (0) | 2025.03.04 |