From 31e6cf96fcf6a6ff98f86ee45389df86da3fe4df Mon Sep 17 00:00:00 2001
From: Sandipan Mohanty <s.mohanty@fz-juelich.de>
Date: Sun, 29 Jan 2023 00:42:58 +0100
Subject: [PATCH] AMBER 20 for stage 2023 using gpsmkl

This was previously not possible because mpi4py was not available
with gpsmkl. However, after my fixes concerning Python 3.10 API
changes, the bundled mpi4py is able to compile as well. So, we
can provide AMBER also for gpsmkl. The additional benefit is that
we can provide PLUMED support, as some AMBER users on our computers
have requested it before. PLUMED is installed for gpsmkl, but
not currently for foss.
---
 Golden_Repo/a/AMBER/AMBER-20-gpsmkl-2023.eb | 122 ++++++++++++++++++++
 1 file changed, 122 insertions(+)
 create mode 100644 Golden_Repo/a/AMBER/AMBER-20-gpsmkl-2023.eb

diff --git a/Golden_Repo/a/AMBER/AMBER-20-gpsmkl-2023.eb b/Golden_Repo/a/AMBER/AMBER-20-gpsmkl-2023.eb
new file mode 100644
index 000000000..69a30d503
--- /dev/null
+++ b/Golden_Repo/a/AMBER/AMBER-20-gpsmkl-2023.eb
@@ -0,0 +1,122 @@
+easyblock = 'CMakeMake'
+
+name = 'AMBER'
+version = '20'
+versionsuffix = '-AmberTools-21-plumed'
+
+homepage = 'http://ambermd.org'
+description = """
+AMBER: 'Assisted Model Building with Energy Refinement' is a set of molecular
+mechanics force fields and a package of molecular simulation programs.
+
+Citation:
+D.A. Case, K. Belfon, I.Y. Ben-Shalom, S.R. Brozell, D.S. Cerutti,
+T.E. Cheatham, III, V.W.D. Cruzeiro, T.A. Darden, R.E. Duke, G. Giambasu,
+M.K. Gilson, H. Gohlke, A.W. Goetz, R. Harris, S. Izadi, S.A. Izmailov,
+K. Kasavajhala, A. Kovalenko, R. Krasny, T. Kurtzman, T.S. Lee, S. LeGrand,
+P. Li, C. Lin, J. Liu, T. Luchko, R. Luo, V. Man, K.M. Merz, Y. Miao,
+O. Mikhailovskii, G. Monard, H. Nguyen, A. Onufriev, F.Pan, S. Pantano,
+R. Qi, D.R. Roe, A. Roitberg, C. Sagui, S. Schott-Verdugo, J. Shen,
+C. Simmerling, N.R.Skrynnikov, J. Smith, J. Swails, R.C. Walker, J. Wang,
+L. Wilson, R.M. Wolf, X. Wu, Y. Xiong, Y. Xue, D.M. York
+and P.A. Kollman (2020),
+AMBER 2020, University of California, San Francisco.
+"""
+
+toolchain = {'name': 'gpsmkl', 'version': '2022a'}
+toolchainopts = {'pic': True}
+toolchainopts = {'openmp': True, 'usempi': True}
+
+builddependencies = [
+    ('CMake', '3.23.1'),
+    ('binutils', '2.38'),
+]
+dependencies = [
+    #    ('FFTW.MPI', '3.3.10'),
+    ('Boost', '1.79.0'),
+    ('flex', '2.6.4'),
+    ('NCCL', 'default', '-CUDA-11.7'),
+    ('netCDF', '4.9.0'),
+    ('netCDF-Fortran', '4.6.0'),
+    ('PnetCDF', '1.12.3'),
+    ('Python', '3.10.4'),
+    ('matplotlib', '3.5.2', '', ('gcccoremkl', '11.3.0-2022.1.0')),
+    #    ('mpi4py', '3.1.4', '', ('gompi', '2022a'))
+    ('PLUMED', '2.8.1'),
+]
+
+sources = [
+    'AmberTools21.tar.bz2',
+    'Amber20.tar.bz2',
+]
+patches = [
+    'fix_nmrat_error.patch',
+    'adapt_to_python_3_10_api_changes.patch',
+    'AmberTools-21_CMake-FlexiBLAS.patch',
+    'AmberTools-21_fix_more_blas_argument_problems.patch',
+    'AmberTools-21_fix_rism_argument_mismatch.patch',
+    'AmberTools-21_fix_xray_fftpack_arg_mismatch.patch',
+    'Fix_FFTW_find_error_due_to_MPI_components.patch',
+    'Fix_netcdf_find_error_due_to_missed_F77_F90_interfaces.patch',
+]
+
+checksums = [
+    'f55fa930598d5a8e9749e8a22d1f25cab7fcf911d98570e35365dd7f262aaafd',
+    'a4c53639441c8cc85adee397933d07856cc4a723c82c6bea585cd76c197ead75',
+    '00394f987105f047cbacf5f002170a11720f0decbd399a59db6b3b6c8e950677',
+    'f5e7ff2fb5e782f5b64a70e750d1ccc6566fd600663dd339f1769ceca60f64d6',
+    '9543812c24c4b7842f64f1f8abaf2c92b5c4c0fadcdbd9811e76b81a778f0d36',
+    'c6279b57752239184b942d37f760749494ae0eff95236f3368c76ac0d2726a7c',
+    '14255e5739cec39303df570f06820c7532f7395e1b73b1e4104377984e2c9fc1',
+    '99c954e693659efc2a1d121f91510f56408006f0751d91595f45a34b03364e2f',
+    '468acfd764e8e3787f8f855e724a16ae11e92d36576994297eec26e6e0b41dd0',
+    '4f409c139ff49f61b1f617a34202b61223c2d8ae474ac9de62313aaad2284afd',
+]
+
+separate_build_dir = True
+local_build_mpi_parts = "TRUE"
+local_build_cuda_parts = "TRUE"
+local_build_cuda_nccl = "TRUE"
+
+preconfigopts = "CC=gcc && CXX=g++ && COMPILER=GNU "
+preconfigopts += " && cd %(builddir)s/amber20_src && "
+preconfigopts += " ./update_amber --update && cd ../easybuild_obj && "
+
+configopts = "-DCOMPILER=GNU -DCHECK_UPDATES=OFF -DAPPLY_UPDATES=OFF -DBUILD_GUI=FALSE "
+configopts += " -DINSTALL_TESTS=TRUE -DOPENMP=TRUE -DMPI=%s " % local_build_mpi_parts
+configopts += " -DDOWNLOAD_MINICONDA=FALSE -DTRUST_SYSTEM_LIBS=TRUE "
+configopts += " -DCUDA=%s " % local_build_cuda_parts
+configopts += " -DNCCL=%s " % local_build_cuda_nccl
+configopts += " -DBLA_VENDOR=FlexiBLAS "
+configopts += " -DFORCE_EXTERNAL_LIBS='boost;netcdf;netcdf-fortran;pnetcdf' "
+configopts += " -DUSE_FFT=TRUE "
+buildopts = 'NVCC_GENCODE="-gencode=arch=compute_70,code=sm_70 \
+                           -gencode=arch=compute_75,code=sm_75 \
+                           -gencode=arch=compute_80,code=sm_80"'
+
+modextravars = {
+    'AMBERHOME': '%(installdir)s/',
+}
+modextrapaths = {'PYTHONPATH': ['lib/python%(pyshortver)s/site-packages']}
+
+modluafooter = '''
+add_property("arch","gpu")
+'''
+
+group = "amber"
+
+modloadmsg = '''
+
+Info: (1) Check the loaded modules to see if loading the AMBER module
+succeeded. If it did, ignore the rest of this message. (2) If AMBER
+didn't load, one possible reason is that "amber" is not currently
+your primary group. You can temporarily change your primary group by
+typing "newgrp amber". (3) If that didn't work, you are probably
+not a member of the group "amber", you have to first add yourself
+to that group. Visit "https://judoor.fz-juelich.de/", follow the
+link "Request access to restricted software", enable "amber" for
+your account, wait 15-20 minutes and then try "newgrp amber" again.
+
+'''
+
+moduleclass = 'bio'
-- 
GitLab