module purge module load intel openmpi4 cmake tar xvfj AmberTools24.tar.bz2 tar xvfj Amber24.tar.bz2 cd amber24_src vi update_amber # reemplazo python por python3, TODO: usar sed ./update_amber --help ./update_amber --check-updates --proxy=$http_proxy # cuidado si ambermd.org está caído ./update_amber --update --proxy=$http_proxy cd build vi run_cmake # edito y cambio a -DCOMPILER=GNU a -DCOMPILER=INTELLLVM https://ambermd.org/InstIntelOneAPI.php y agrego -DMINICONDA_VERSION=py312_25.5.1-1 ./run_cmake make install source /data/shared/apps/amber/24/amber24/amber.sh cd $AMBERHOME make test.serial cd ../amber24_src/build/ vim run_cmake # MPI = TRUE
Me hinché y repetí los pasos con gnu13 openmpi5, funciona mejor que con Intel 2023.
Es clave correr make install en lugar de make -j o make, aparentemente evita problemas de paralelización.
Si la instalación de miniconda no anda por ToS:
cd /data/shared/apps/amber/24/amber24_src/build/CMakeFiles/miniconda/install/bin/ ./conda tos accept --override-channels --channel https://repo.anaconda.com/pkgs/main ./conda tos accept --override-channels --channel https://repo.anaconda.com/pkgs/r cd - ./run_cmake
Si no están instalados numpy scipy matplotlib en realidad es que no esta el symlink de libstdc++.so.6
cd /data/shared/apps/amber/24/amber24_src/build/CMakeFiles/miniconda/install/lib ln -s libstdc++.so.6.0.34 libstdc++.so.6 export LD_LIBRARY_PATH=/data/shared/apps/amber/24/amber24_src/build/CMakeFiles/miniconda/install/lib:$LD_LIBRARY_PATH cd - ./run_cmake
Si MPI no es reconocido, hay que meter un module purge y cargar de nuevo los módulos.
Hay una versión experimental para SYCL documentada en https://ambermd.org/GPUSupport.php El link al patch está en esta misma página.
tar zxvf amber20_src.tgz cp Amber20_SYCL_patch_2024-02-05.tar.bz2 amber20_src cd amber20_src tar xvf Amber20_SYCL_patch_2024-02-05.tar.bz2 cd build ml intel/2024.2.1 mkl/2024.2 mpi cmake dpct/2024.2.0 ./run_cmake make install
Si falla por flags de C++17, hay que editar los archivos
CXX_FLAGS = -O0 -fsycl -std=c++17 -O0 -fsycl -std=c++17 -std=gnu++11
por
CXX_FLAGS = -O0 -fsycl -std=c++17 -O0 -fsycl -std=c++17
Adicionalmente, es necesario cambiar extern size_t read y extern size_t write por ssize_t en ambos casos, para los headers nuevos de C++ (post upgrade). El mismo error indica dónde.
Por último, OneAPI toma la libstdc++ del sistema por dynamic linking. Como GCC11 soporta hasta GLIBCXX3.24.29 y este usa features de GLIBCXX3.24.32, es necesario agregar /opt/ohpc/pub/compiler/gcc/13.2.0/lib64/ al LD_LIBRARY_PATH.