-
Notifications
You must be signed in to change notification settings - Fork 705
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add support for LAMMPS using CMakeMake #6917
Add support for LAMMPS using CMakeMake #6917
Conversation
Alternate approach to easybuilders/easybuild-easyblocks#594 using |
We currently have 2 CUDA versions in |
There is room for an easyblock here so you can seamlessly handle the currently excluded build options and other specifics but at least this is an initial version. |
I don't have access to the toolchain used here (I successfully built the original easyconfig in the JSC custom env with slightly different deps), if someone else could upload a test report that would be great. |
I've commented out the CUDA support (although it does work with CUDA 10) because you need to provide specifics about the particular hardware you have |
@ocaisa Test reports coming in (just for proof of concept sake). This is way too complex for an easyconfig-only approach, but using the CMake build procedure should make a custom easyblock for |
Test report by @boegel |
Test report by @boegel |
Test report by @vanzod |
Ok, this has basically everything you need to create the easyblock. The included packages need to cross-referenced with https://lammps.sandia.gov/doc/Build_extras.html#kokkos |
# Initialise configopts so we can comment out at will below | ||
configopts = "" | ||
|
||
parallelisation_packages = ['BUILD_MPI', 'BUILD_OMP', 'PKG_KOKKOS', 'PKG_OPT', 'PKG_USER-OMP', 'PKG_USER-INTEL', 'PKG_GPU'] |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks like you can't have PKG_GPU and Kokkos at the same time
# Need to use the Kokkos wrapper if we are using CUDA | ||
configopts += ' -DCMAKE_CXX_COMPILER="%(builddir)s/%(namelower)s-%(version)s/lib/kokkos/bin/nvcc_wrapper" ' | ||
# and tell the wrapper which c++ compiler to use | ||
configopts += ' -DCMAKE_CXX_FLAGS="-ccbin $CXX $CXXFLAGS" ' |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This seems to cause problems with some packages (which seem to be using the CXX_FLAGS
with the C compiler)
('gzip', '1.9'), | ||
('HDF5', '1.10.2'), | ||
('tbb', '2018_U5'), | ||
#('CUDA', '10.0.130', '', True), |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It would seem that CUDA+kokkos support only works with GCC, the wrapper causes problems in other modules using (CUDA supported) Intel compilers.
Personally, I've successfully built this with |
"@boegel won't like this but" I'm sure he absolutely abhors it but I absolutely love it. "We don't need no stinkin' easyblocks". I never knew that easyconfigs had if: else: clauses.... that's cool. I'm going to play with this. |
LAMMPS-20180316-intel-2017b-Python-3.6.3-CUDA-9.1.85-mpi.eb.txt (Our latest build.... local users need VORO++ also) |
OK... bad example... it uses the lammps.py easyblock PR. But still, anything that can be pushed into the easyconfig should be. Don't make packagers have to jump through hoops to update easyblocks just to build the latest version. |
@ocaisa , @JackPerdue : I have also found unnatural that you need to choose about what goes into an easyconfig and what goes into an easyblock; perhaps, I'd rather have a long yaml file configuration format on which python code can be embedded:
|
closing due to easybuilders/easybuild-easyblocks#1964 |
(created using
eb --new-pr
)