Merge branch 'master' into multi-comm-tiled
This commit is contained in:
3
.gitattributes
vendored
Normal file
3
.gitattributes
vendored
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
.gitattributes export-ignore
|
||||||
|
.gitignore export-ignore
|
||||||
|
.github export-ignore
|
||||||
16
.github/CODEOWNERS
vendored
16
.github/CODEOWNERS
vendored
@ -10,6 +10,7 @@ lib/molfile/* @akohlmey
|
|||||||
lib/qmmm/* @akohlmey
|
lib/qmmm/* @akohlmey
|
||||||
lib/vtk/* @rbberger
|
lib/vtk/* @rbberger
|
||||||
lib/kim/* @ellio167
|
lib/kim/* @ellio167
|
||||||
|
lib/mesont/* @iafoss
|
||||||
|
|
||||||
# whole packages
|
# whole packages
|
||||||
src/COMPRESS/* @akohlmey
|
src/COMPRESS/* @akohlmey
|
||||||
@ -22,10 +23,10 @@ src/SPIN/* @julient31
|
|||||||
src/USER-CGDNA/* @ohenrich
|
src/USER-CGDNA/* @ohenrich
|
||||||
src/USER-CGSDK/* @akohlmey
|
src/USER-CGSDK/* @akohlmey
|
||||||
src/USER-COLVARS/* @giacomofiorin
|
src/USER-COLVARS/* @giacomofiorin
|
||||||
src/USER-DPD/* @timattox
|
|
||||||
src/USER-INTEL/* @wmbrownintel
|
src/USER-INTEL/* @wmbrownintel
|
||||||
src/USER-MANIFOLD/* @Pakketeretet2
|
src/USER-MANIFOLD/* @Pakketeretet2
|
||||||
src/USER-MEAMC/* @martok
|
src/USER-MEAMC/* @martok
|
||||||
|
src/USER-MESONT/* @iafoss
|
||||||
src/USER-MOFFF/* @hheenen
|
src/USER-MOFFF/* @hheenen
|
||||||
src/USER-MOLFILE/* @akohlmey
|
src/USER-MOLFILE/* @akohlmey
|
||||||
src/USER-NETCDF/* @pastewka
|
src/USER-NETCDF/* @pastewka
|
||||||
@ -46,7 +47,7 @@ src/GPU/pair_vashishta_gpu.* @andeplane
|
|||||||
src/KOKKOS/pair_vashishta_kokkos.* @andeplane
|
src/KOKKOS/pair_vashishta_kokkos.* @andeplane
|
||||||
src/MANYBODY/pair_vashishta_table.* @andeplane
|
src/MANYBODY/pair_vashishta_table.* @andeplane
|
||||||
src/MANYBODY/pair_atm.* @sergeylishchuk
|
src/MANYBODY/pair_atm.* @sergeylishchuk
|
||||||
src/USER-MISC/fix_bond_react.* @jrgissing
|
src/USER-REACTION/fix_bond_react.* @jrgissing
|
||||||
src/USER-MISC/*_grem.* @dstelter92
|
src/USER-MISC/*_grem.* @dstelter92
|
||||||
src/USER-MISC/compute_stress_mop*.* @RomainVermorel
|
src/USER-MISC/compute_stress_mop*.* @RomainVermorel
|
||||||
|
|
||||||
@ -111,13 +112,24 @@ src/exceptions.h @rbberger
|
|||||||
src/fix_nh.* @athomps
|
src/fix_nh.* @athomps
|
||||||
src/info.* @akohlmey @rbberger
|
src/info.* @akohlmey @rbberger
|
||||||
src/timer.* @akohlmey
|
src/timer.* @akohlmey
|
||||||
|
src/min* @sjplimp @stanmoore1
|
||||||
|
src/utils.* @akohlmey @rbberger
|
||||||
|
|
||||||
# tools
|
# tools
|
||||||
tools/msi2lmp/* @akohlmey
|
tools/msi2lmp/* @akohlmey
|
||||||
tools/emacs/* @HaoZeke
|
tools/emacs/* @HaoZeke
|
||||||
|
tools/singularity/* @akohlmey @rbberger
|
||||||
|
tools/code_standard/* @rbberger
|
||||||
|
tools/valgrind/* @akohlmey
|
||||||
|
|
||||||
|
# tests
|
||||||
|
unittest/* @akohlmey @rbberger
|
||||||
|
|
||||||
# cmake
|
# cmake
|
||||||
cmake/* @junghans @rbberger
|
cmake/* @junghans @rbberger
|
||||||
|
cmake/Modules/Packages/USER-COLVARS.cmake @junghans @rbberger @giacomofiorin
|
||||||
|
cmake/Modules/Packages/KIM.cmake @junghans @rbberger @ellio167
|
||||||
|
cmake/presets/*.cmake @junghans @rbberger @akohlmey
|
||||||
|
|
||||||
# python
|
# python
|
||||||
python/* @rbberger
|
python/* @rbberger
|
||||||
|
|||||||
10
.github/CONTRIBUTING.md
vendored
10
.github/CONTRIBUTING.md
vendored
@ -68,14 +68,16 @@ How quickly your contribution will be integrated depends largely on how much eff
|
|||||||
Here is a checklist of steps you need to follow to submit a single file or user package for our consideration. Following these steps will save both you and us time. See existing files in packages in the source directory for examples. If you are uncertain, please ask on the lammps-users mailing list.
|
Here is a checklist of steps you need to follow to submit a single file or user package for our consideration. Following these steps will save both you and us time. See existing files in packages in the source directory for examples. If you are uncertain, please ask on the lammps-users mailing list.
|
||||||
|
|
||||||
* All source files you provide must compile with the most current version of LAMMPS with multiple configurations. In particular you need to test compiling LAMMPS from scratch with `-DLAMMPS_BIGBIG` set in addition to the default `-DLAMMPS_SMALLBIG` setting. Your code will need to work correctly in serial and in parallel using MPI.
|
* All source files you provide must compile with the most current version of LAMMPS with multiple configurations. In particular you need to test compiling LAMMPS from scratch with `-DLAMMPS_BIGBIG` set in addition to the default `-DLAMMPS_SMALLBIG` setting. Your code will need to work correctly in serial and in parallel using MPI.
|
||||||
* For consistency with the rest of LAMMPS and especially, if you want your contribution(s) to be added to main LAMMPS code or one of its standard packages, it needs to be written in a style compatible with other LAMMPS source files. This means: 2-character indentation per level, no tabs, no lines over 80 characters. I/O is done via the C-style stdio library, style class header files should not import any system headers, STL containers should be avoided in headers, and forward declarations used where possible or needed. All added code should be placed into the LAMMPS_NS namespace or a sub-namespace; global or static variables should be avoided, as they conflict with the modular nature of LAMMPS and the C++ class structure. There MUST NOT be any "using namespace XXX;" statements in headers. In the implementation file (<name>.cpp) system includes should be placed in angular brackets (<>) and for c-library functions the C++ style header files should be included (<cstdio> instead of <stdio.h>, or <cstring> instead of <string.h>). This all is so the developers can more easily understand, integrate, and maintain your contribution and reduce conflicts with other parts of LAMMPS. This basically means that the code accesses data structures, performs its operations, and is formatted similar to other LAMMPS source files, including the use of the error class for error and warning messages.
|
* For consistency with the rest of LAMMPS and especially, if you want your contribution(s) to be added to main LAMMPS code or one of its standard packages, it needs to be written in a style compatible with other LAMMPS source files. This means: 2-character indentation per level, no tabs, no trailing whitespace, no lines over 80 characters. I/O is done via the C-style stdio library, style class header files should not import any system headers, STL containers should be avoided in headers, and forward declarations used where possible or needed. All added code should be placed into the LAMMPS_NS namespace or a sub-namespace; global or static variables should be avoided, as they conflict with the modular nature of LAMMPS and the C++ class structure. There MUST NOT be any "using namespace XXX;" statements in headers. In the implementation file (<name>.cpp) system includes should be placed in angular brackets (<>) and for c-library functions the C++ style header files should be included (<cstdio> instead of <stdio.h>, or <cstring> instead of <string.h>). This all is so the developers can more easily understand, integrate, and maintain your contribution and reduce conflicts with other parts of LAMMPS. This basically means that the code accesses data structures, performs its operations, and is formatted similar to other LAMMPS source files, including the use of the error class for error and warning messages.
|
||||||
* Source, style name, and documentation file should follow the following naming convention: style names should be lowercase and words separated by a forward slash; for a new fix style 'foo/bar', the class should be named FixFooBar, the name of the source files should be 'fix_foo_bar.h' and 'fix_foo_bar.cpp' and the corresponding documentation should be in a file 'fix_foo_bar.txt'.
|
* Source, style name, and documentation file should follow the following naming convention: style names should be lowercase and words separated by a forward slash; for a new fix style 'foo/bar', the class should be named FixFooBar, the name of the source files should be 'fix_foo_bar.h' and 'fix_foo_bar.cpp' and the corresponding documentation should be in a file 'fix_foo_bar.rst'.
|
||||||
* If you want your contribution to be added as a user-contributed feature, and it is a single file (actually a `<name>.cpp` and `<name>.h` file) it can be rapidly added to the USER-MISC directory. Include the one-line entry to add to the USER-MISC/README file in that directory, along with the 2 source files. You can do this multiple times if you wish to contribute several individual features.
|
* If you want your contribution to be added as a user-contributed feature, and it is a single file (actually a `<name>.cpp` and `<name>.h` file) it can be rapidly added to the USER-MISC directory. Include the one-line entry to add to the USER-MISC/README file in that directory, along with the 2 source files. You can do this multiple times if you wish to contribute several individual features.
|
||||||
* If you want your contribution to be added as a user-contribution and it is several related features, it is probably best to make it a user package directory with a name like USER-FOO. In addition to your new files, the directory should contain a README text file. The README should contain your name and contact information and a brief description of what your new package does. If your files depend on other LAMMPS style files also being installed (e.g. because your file is a derived class from the other LAMMPS class), then an Install.sh file is also needed to check for those dependencies. See other README and Install.sh files in other USER directories as examples. Send us a tarball of this USER-FOO directory.
|
* If you want your contribution to be added as a user-contribution and it is several related features, it is probably best to make it a user package directory with a name like USER-FOO. In addition to your new files, the directory should contain a README text file. The README should contain your name and contact information and a brief description of what your new package does. If your files depend on other LAMMPS style files also being installed (e.g. because your file is a derived class from the other LAMMPS class), then an Install.sh file is also needed to check for those dependencies. See other README and Install.sh files in other USER directories as examples. Send us a tarball of this USER-FOO directory.
|
||||||
* Your new source files need to have the LAMMPS copyright, GPL notice, and your name and email address at the top, like other user-contributed LAMMPS source files. They need to create a class that is inside the LAMMPS namespace. If the file is for one of the USER packages, including USER-MISC, then we are not as picky about the coding style (see above). I.e. the files do not need to be in the same stylistic format and syntax as other LAMMPS files, though that would be nice for developers as well as users who try to read your code.
|
* Your new source files need to have the LAMMPS copyright, GPL notice, and your name and email address at the top, like other user-contributed LAMMPS source files. They need to create a class that is inside the LAMMPS namespace. If the file is for one of the USER packages, including USER-MISC, then we are not as picky about the coding style (see above). I.e. the files do not need to be in the same stylistic format and syntax as other LAMMPS files, though that would be nice for developers as well as users who try to read your code.
|
||||||
* You **must** also create or extend a documentation file for each new command or style you are adding to LAMMPS. For simplicity and convenience, the documentation of groups of closely related commands or styles may be combined into a single file. This will be one file for a single-file feature. For a package, it might be several files. These are simple text files with a specific markup language, that are then auto-converted to HTML and PDF. The tools for this conversion are included in the source distribution, and the translation can be as simple as doing "make html pdf" in the doc folder. Thus the documentation source files must be in the same format and style as other `<name>.txt` files in the lammps/doc/src directory for similar commands and styles; use one or more of them as a starting point. A description of the markup can also be found in `lammps/doc/utils/txt2html/README.html` As appropriate, the text files can include links to equations (see doc/Eqs/*.tex for examples, we auto-create the associated JPG files), or figures (see doc/JPG for examples), or even additional PDF files with further details (see doc/PDF for examples). The doc page should also include literature citations as appropriate; see the bottom of doc/fix_nh.txt for examples and the earlier part of the same file for how to format the cite itself. The "Restrictions" section of the doc page should indicate that your command is only available if LAMMPS is built with the appropriate USER-MISC or USER-FOO package. See other user package doc files for examples of how to do this. The prerequisite for building the HTML format files are Python 3.x and virtualenv, the requirement for generating the PDF format manual is the htmldoc software. Please run at least "make html" and carefully inspect and proofread the resulting HTML format doc page before submitting your code.
|
* You **must** also create or extend a documentation file for each new command or style you are adding to LAMMPS. For simplicity and convenience, the documentation of groups of closely related commands or styles may be combined into a single file. This will be one file for a single-file feature. For a package, it might be several files. These are files in the [reStructuredText](https://docutils.sourceforge.io/rst.html) markup language, that are then converted to HTML and PDF. The tools for this conversion are included in the source distribution, and the translation can be as simple as doing "make html pdf" in the doc folder. Thus the documentation source files must be in the same format and style as other `<name>.rst` files in the lammps/doc/src directory for similar commands and styles; use one or more of them as a starting point. An introduction to reStructuredText can be found at [https://docutils.sourceforge.io/docs/user/rst/quickstart.html](https://docutils.sourceforge.io/docs/user/rst/quickstart.html). The text files can include mathematical expressions and symbol in ".. math::" sections or ":math:" expressions or figures (see doc/JPG for examples), or even additional PDF files with further details (see doc/PDF for examples). The doc page should also include literature citations as appropriate; see the bottom of doc/fix_nh.rst for examples and the earlier part of the same file for how to format the cite itself. The "Restrictions" section of the doc page should indicate that your command is only available if LAMMPS is built with the appropriate USER-MISC or USER-FOO package. See other user package doc files for examples of how to do this. The prerequisite for building the HTML format files are Python 3.x and virtualenv. Please run at least `make html`, `make pdf` and `make spelling` and carefully inspect and proofread the resulting HTML format doc page as well as the output produced to the screen. Make sure that all spelling errors are fixed or the necessary false positives are added to the `doc/utils/sphinx-config/false_positives.txt` file. For new styles, those usually also need to be added to lists on the respective overview pages. This can be checked for also with `make style_check`.
|
||||||
* For a new package (or even a single command) you should include one or more example scripts demonstrating its use. These should run in no more than a couple minutes, even on a single processor, and not require large data files as input. See directories under examples/USER for examples of input scripts other users provided for their packages. These example inputs are also required for validating memory accesses and testing for memory leaks with valgrind
|
* For a new package (or even a single command) you should include one or more example scripts demonstrating its use. These should run in no more than a couple minutes, even on a single processor, and not require large data files as input. See directories under examples/USER for examples of input scripts other users provided for their packages. These example inputs are also required for validating memory accesses and testing for memory leaks with valgrind
|
||||||
* If there is a paper of yours describing your feature (either the algorithm/science behind the feature itself, or its initial usage, or its implementation in LAMMPS), you can add the citation to the *.cpp source file. See src/USER-EFF/atom_vec_electron.cpp for an example. A LaTeX citation is stored in a variable at the top of the file and a single line of code that references the variable is added to the constructor of the class. Whenever a user invokes your feature from their input script, this will cause LAMMPS to output the citation to a log.cite file and prompt the user to examine the file. Note that you should only use this for a paper you or your group authored. E.g. adding a cite in the code for a paper by Nose and Hoover if you write a fix that implements their integrator is not the intended usage. That kind of citation should just be in the doc page you provide.
|
* For new utility functions or class (i.e. anything that does not depend on a LAMMPS object), new unit tests should be added to the unittest tree.
|
||||||
|
* When adding a new LAMMPS style, a .yaml file with a test configuration and reference data should be added for the styles where a suitable tester program already exists (e.g. pair styles, bond styles, etc.).
|
||||||
|
* If there is a paper of yours describing your feature (either the algorithm/science behind the feature itself, or its initial usage, or its implementation in LAMMPS), you can add the citation to the <name>.cpp source file. See src/USER-EFF/atom_vec_electron.cpp for an example. A LaTeX citation is stored in a variable at the top of the file and a single line of code that references the variable is added to the constructor of the class. Whenever a user invokes your feature from their input script, this will cause LAMMPS to output the citation to a log.cite file and prompt the user to examine the file. Note that you should only use this for a paper you or your group authored. E.g. adding a cite in the code for a paper by Nose and Hoover if you write a fix that implements their integrator is not the intended usage. That kind of citation should just be in the doc page you provide.
|
||||||
|
|
||||||
Finally, as a general rule-of-thumb, the more clear and self-explanatory you make your documentation and README files, and the easier you make it for people to get started, e.g. by providing example scripts, the more likely it is that users will try out your new feature.
|
Finally, as a general rule-of-thumb, the more clear and self-explanatory you make your documentation and README files, and the easier you make it for people to get started, e.g. by providing example scripts, the more likely it is that users will try out your new feature.
|
||||||
|
|
||||||
|
|||||||
12
.github/ISSUE_TEMPLATE/bug_report.md
vendored
12
.github/ISSUE_TEMPLATE/bug_report.md
vendored
@ -9,24 +9,24 @@ assignees: ''
|
|||||||
|
|
||||||
**Summary**
|
**Summary**
|
||||||
|
|
||||||
_Please provide a clear and concise description of what the bug is._
|
<!--Please provide a clear and concise description of what the bug is.-->
|
||||||
|
|
||||||
**LAMMPS Version and Platform**
|
**LAMMPS Version and Platform**
|
||||||
|
|
||||||
_Please specify precisely which LAMMPS version this issue was detected with (the first line of the output) and what platform (operating system and its version, hardware) you are running on. If possible, test with the most recent LAMMPS patch version_
|
<!--Please specify precisely which LAMMPS version this issue was detected with (the first line of the output) and what platform (operating system and its version, hardware) you are running on. If possible, test with the most recent LAMMPS patch version-->
|
||||||
|
|
||||||
**Expected Behavior**
|
**Expected Behavior**
|
||||||
|
|
||||||
_Describe the expected behavior. Quote from the LAMMPS manual where needed, or explain why the expected behavior is meaningful, especially when it differs from the manual_
|
<!--Describe the expected behavior. Quote from the LAMMPS manual where needed, or explain why the expected behavior is meaningful, especially when it differs from the manual-->
|
||||||
|
|
||||||
**Actual Behavior**
|
**Actual Behavior**
|
||||||
|
|
||||||
_Describe the actual behavior, how it differs from the expected behavior, and how this can be observed. Try to be specific and do **not** use vague terms like "doesn't work" or "wrong result". Do not assume that the person reading this has any experience with or knowledge of your specific area of research._
|
<!--Describe the actual behavior, how it differs from the expected behavior, and how this can be observed. Try to be specific and do **not** use vague terms like "doesn't work" or "wrong result". Do not assume that the person reading this has any experience with or knowledge of your specific area of research.-->
|
||||||
|
|
||||||
**Steps to Reproduce**
|
**Steps to Reproduce**
|
||||||
|
|
||||||
_Describe the steps required to (quickly) reproduce the issue. You can attach (small) files to the section below or add URLs where to download an archive with all necessary files. Please try to create an input set that is as minimal and small as possible and reproduces the bug as quickly as possible. **NOTE:** the less effort and time it takes to reproduce your reported bug, the more likely it becomes, that somebody will look into it and fix the problem._
|
<!--Describe the steps required to (quickly) reproduce the issue. You can attach (small) files to the section below or add URLs where to download an archive with all necessary files. Please try to create an input set that is as minimal and small as possible and reproduces the bug as quickly as possible. **NOTE:** the less effort and time it takes to reproduce your reported bug, the more likely it becomes, that somebody will look into it and fix the problem.-->
|
||||||
|
|
||||||
**Further Information, Files, and Links**
|
**Further Information, Files, and Links**
|
||||||
|
|
||||||
_Put any additional information here, attach relevant text or image files and URLs to external sites, e.g. relevant publications_
|
<!--Put any additional information here, attach relevant text or image files and URLs to external sites, e.g. relevant publications-->
|
||||||
|
|||||||
6
.github/ISSUE_TEMPLATE/feature_request.md
vendored
6
.github/ISSUE_TEMPLATE/feature_request.md
vendored
@ -9,12 +9,12 @@ assignees: ''
|
|||||||
|
|
||||||
**Summary**
|
**Summary**
|
||||||
|
|
||||||
_Please provide a brief and concise description of the suggested feature or change_
|
<!--Please provide a brief and concise description of the suggested feature or change-->
|
||||||
|
|
||||||
**Detailed Description**
|
**Detailed Description**
|
||||||
|
|
||||||
_Please explain how you would like to see LAMMPS enhanced, what feature(s) you are looking for, what specific problems this will solve. If possible, provide references to relevant background information like publications or web pages, and whether you are planning to implement the enhancement yourself or would like to participate in the implementation. If applicable add a reference to an existing bug report or issue that this will address._
|
<!--Please explain how you would like to see LAMMPS enhanced, what feature(s) you are looking for, what specific problems this will solve. If possible, provide references to relevant background information like publications or web pages, and whether you are planning to implement the enhancement yourself or would like to participate in the implementation. If applicable add a reference to an existing bug report or issue that this will address.-->
|
||||||
|
|
||||||
**Further Information, Files, and Links**
|
**Further Information, Files, and Links**
|
||||||
|
|
||||||
_Put any additional information here, attach relevant text or image files and URLs to external sites, e.g. relevant publications_
|
<!--Put any additional information here, attach relevant text or image files and URLs to external sites, e.g. relevant publications-->
|
||||||
|
|||||||
6
.github/ISSUE_TEMPLATE/generic.md
vendored
6
.github/ISSUE_TEMPLATE/generic.md
vendored
@ -9,13 +9,13 @@ assignees: ''
|
|||||||
|
|
||||||
**Summary**
|
**Summary**
|
||||||
|
|
||||||
_Please provide a clear and concise description of what this issue report is about._
|
<!--Please provide a clear and concise description of what this issue report is about.-->
|
||||||
|
|
||||||
**LAMMPS Version and Platform**
|
**LAMMPS Version and Platform**
|
||||||
|
|
||||||
_Please specify precisely which LAMMPS version this issue was detected with (the first line of the output) and what platform (operating system and its version, hardware) you are running on. If possible, test with the most recent LAMMPS patch version_
|
<!--Please specify precisely which LAMMPS version this issue was detected with (the first line of the output) and what platform (operating system and its version, hardware) you are running on. If possible, test with the most recent LAMMPS patch version-->
|
||||||
|
|
||||||
**Details**
|
**Details**
|
||||||
|
|
||||||
_Please explain the issue in detail here_
|
<!--Please explain the issue in detail here-->
|
||||||
|
|
||||||
|
|||||||
15
.github/PULL_REQUEST_TEMPLATE.md
vendored
15
.github/PULL_REQUEST_TEMPLATE.md
vendored
@ -1,14 +1,14 @@
|
|||||||
**Summary**
|
**Summary**
|
||||||
|
|
||||||
_Briefly describe the new feature(s), enhancement(s), or bugfix(es) included in this pull request._
|
<!--Briefly describe the new feature(s), enhancement(s), or bugfix(es) included in this pull request.-->
|
||||||
|
|
||||||
**Related Issues**
|
**Related Issues**
|
||||||
|
|
||||||
_If this addresses an open GitHub issue for this project, please mention the issue number here, and describe the relation. Use the phrases `fixes #221` or `closes #135`, when you want an issue to be automatically closed when the pull request is merged_
|
<!--If this addresses an open GitHub issue for this project, please mention the issue number here, and describe the relation. Use the phrases `fixes #221` or `closes #135`, when you want an issue to be automatically closed when the pull request is merged-->
|
||||||
|
|
||||||
**Author(s)**
|
**Author(s)**
|
||||||
|
|
||||||
_Please state name and affiliation of the author or authors that should be credited with the changes in this pull request. If this pull request adds new files to the distribution, please also provide a suitable "long-lived" e-mail address (ideally something that can outlive your institution's e-mail, in case you change jobs) for the *corresponding* author, i.e. the person the LAMMPS developers can contact directly with questions and requests related to maintenance and support of this contributed code._
|
<!--Please state name and affiliation of the author or authors that should be credited with the changes in this pull request. If this pull request adds new files to the distribution, please also provide a suitable "long-lived" e-mail address (ideally something that can outlive your institution's e-mail, in case you change jobs) for the *corresponding* author, i.e. the person the LAMMPS developers can contact directly with questions and requests related to maintenance and support of this contributed code.-->
|
||||||
|
|
||||||
**Licensing**
|
**Licensing**
|
||||||
|
|
||||||
@ -16,15 +16,15 @@ By submitting this pull request, I agree, that my contribution will be included
|
|||||||
|
|
||||||
**Backward Compatibility**
|
**Backward Compatibility**
|
||||||
|
|
||||||
_Please state whether any changes in the pull request will break backward compatibility for inputs, and - if yes - explain what has been changed and why_
|
<!--Please state whether any changes in the pull request will break backward compatibility for inputs, and - if yes - explain what has been changed and why-->
|
||||||
|
|
||||||
**Implementation Notes**
|
**Implementation Notes**
|
||||||
|
|
||||||
_Provide any relevant details about how the changes are implemented, how correctness was verified, how other features - if any - in LAMMPS are affected_
|
<!--Provide any relevant details about how the changes are implemented, how correctness was verified, how other features - if any - in LAMMPS are affected-->
|
||||||
|
|
||||||
**Post Submission Checklist**
|
**Post Submission Checklist**
|
||||||
|
|
||||||
_Please check the fields below as they are completed **after** the pull request has been submitted. Delete lines that don't apply_
|
<!--Please check the fields below as they are completed **after** the pull request has been submitted. Delete lines that don't apply-->
|
||||||
|
|
||||||
- [ ] The feature or features in this pull request is complete
|
- [ ] The feature or features in this pull request is complete
|
||||||
- [ ] Licensing information is complete
|
- [ ] Licensing information is complete
|
||||||
@ -34,11 +34,12 @@ _Please check the fields below as they are completed **after** the pull request
|
|||||||
- [ ] The added/updated documentation is integrated and tested with the documentation build system
|
- [ ] The added/updated documentation is integrated and tested with the documentation build system
|
||||||
- [ ] The feature has been verified to work with the conventional build system
|
- [ ] The feature has been verified to work with the conventional build system
|
||||||
- [ ] The feature has been verified to work with the CMake based build system
|
- [ ] The feature has been verified to work with the CMake based build system
|
||||||
|
- [ ] Suitable tests have been added to the unittest tree.
|
||||||
- [ ] A package specific README file has been included or updated
|
- [ ] A package specific README file has been included or updated
|
||||||
- [ ] One or more example input decks are included
|
- [ ] One or more example input decks are included
|
||||||
|
|
||||||
**Further Information, Files, and Links**
|
**Further Information, Files, and Links**
|
||||||
|
|
||||||
_Put any additional information here, attach relevant text or image files, and URLs to external sites (e.g. DOIs or webpages)_
|
<!--Put any additional information here, attach relevant text or image files, and URLs to external sites (e.g. DOIs or webpages)-->
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
14
.github/PULL_REQUEST_TEMPLATE/bug_fix.md
vendored
14
.github/PULL_REQUEST_TEMPLATE/bug_fix.md
vendored
@ -9,15 +9,15 @@ assignees: ''
|
|||||||
|
|
||||||
**Summary**
|
**Summary**
|
||||||
|
|
||||||
_Briefly describe the bug or bugs, that are eliminated by this pull request._
|
<!--Briefly describe the bug or bugs, that are eliminated by this pull request.-->
|
||||||
|
|
||||||
**Related Issue(s)**
|
**Related Issue(s)**
|
||||||
|
|
||||||
_If this request addresses or is related to an existing (open) GitHub issue, e.g. a bug report, mention the issue number number here following a pound sign (aka hashmark), e.g.`#222`._
|
<!--If this request addresses or is related to an existing (open) GitHub issue, e.g. a bug report, mention the issue number number here following a pound sign (aka hashmark), e.g.`#222`.-->
|
||||||
|
|
||||||
**Author(s)**
|
**Author(s)**
|
||||||
|
|
||||||
_Please state name and affiliation of the author or authors that should be credited with the changes in this pull request_
|
<!--Please state name and affiliation of the author or authors that should be credited with the changes in this pull request-->
|
||||||
|
|
||||||
**Licensing**
|
**Licensing**
|
||||||
|
|
||||||
@ -25,18 +25,18 @@ By submitting this pull request I implicitly accept, that my submission is subje
|
|||||||
|
|
||||||
**Backward Compatibility**
|
**Backward Compatibility**
|
||||||
|
|
||||||
_Please state whether any changes in the pull request break backward compatibility for inputs, and - if yes - explain what has been changed and why_
|
<!--Please state whether any changes in the pull request break backward compatibility for inputs, and - if yes - explain what has been changed and why-->
|
||||||
|
|
||||||
**Detailed Description**
|
**Detailed Description**
|
||||||
|
|
||||||
_Provide any relevant details about how the fixed bug can be reproduced, how the changes are implemented, how correctness was verified, how other features - if any - in LAMMPS are affected_
|
<!--Provide any relevant details about how the fixed bug can be reproduced, how the changes are implemented, how correctness was verified, how other features - if any - in LAMMPS are affected-->
|
||||||
|
|
||||||
## Post Submission Checklist
|
## Post Submission Checklist
|
||||||
|
|
||||||
_Please check the fields below as they are completed *after* the pull request is submitted_
|
<!--Please check the fields below as they are completed *after* the pull request is submitted-->
|
||||||
- [ ] The code in this pull request is complete
|
- [ ] The code in this pull request is complete
|
||||||
- [ ] The source code follows the LAMMPS formatting guidelines
|
- [ ] The source code follows the LAMMPS formatting guidelines
|
||||||
|
|
||||||
## Further Information, Files, and Links
|
## Further Information, Files, and Links
|
||||||
|
|
||||||
_Put any additional information here, attach relevant text or image files, and URLs to external sites (e.g. to download input decks for testing)_
|
<!--Put any additional information here, attach relevant text or image files, and URLs to external sites (e.g. to download input decks for testing)-->
|
||||||
|
|||||||
@ -9,15 +9,15 @@ assignees: ''
|
|||||||
|
|
||||||
**Summary**
|
**Summary**
|
||||||
|
|
||||||
_Briefly describe the included changes._
|
<!--Briefly describe the included changes.-->
|
||||||
|
|
||||||
**Related Issue(s)**
|
**Related Issue(s)**
|
||||||
|
|
||||||
_If this request addresses or is related to an existing (open) GitHub issue, e.g. a bug report, mention the issue number number here following a pound sign (aka hashmark), e.g.`#222`.
|
<!--If this request addresses or is related to an existing (open) GitHub issue, e.g. a bug report, mention the issue number number here following a pound sign (aka hashmark), e.g.`#222`.
|
||||||
|
|
||||||
**Author(s)**
|
**Author(s)**
|
||||||
|
|
||||||
_Please state name and affiliation of the author or authors that should be credited with the changes in this pull request_
|
<!--Please state name and affiliation of the author or authors that should be credited with the changes in this pull request-->
|
||||||
|
|
||||||
**Licensing**
|
**Licensing**
|
||||||
|
|
||||||
@ -25,11 +25,11 @@ By submitting this pull request I implicitly accept, that my submission is subje
|
|||||||
|
|
||||||
**Detailed Description**
|
**Detailed Description**
|
||||||
|
|
||||||
_Provide any relevant details about the included changes._
|
<!--Provide any relevant details about the included changes.-->
|
||||||
|
|
||||||
## Post Submission Checklist
|
## Post Submission Checklist
|
||||||
|
|
||||||
_Please check the fields below as they are completed *after* the pull request is submitted_
|
<!--Please check the fields below as they are completed *after* the pull request is submitted-->
|
||||||
- [ ] The pull request is complete
|
- [ ] The pull request is complete
|
||||||
- [ ] The source code follows the LAMMPS formatting guidelines
|
- [ ] The source code follows the LAMMPS formatting guidelines
|
||||||
|
|
||||||
|
|||||||
16
.github/PULL_REQUEST_TEMPLATE/new_feature.md
vendored
16
.github/PULL_REQUEST_TEMPLATE/new_feature.md
vendored
@ -9,34 +9,34 @@ assignees: ''
|
|||||||
|
|
||||||
**Summary**
|
**Summary**
|
||||||
|
|
||||||
_Briefly describe the new feature(s) included in this pull request._
|
<!--Briefly describe the new feature(s) included in this pull request.-->
|
||||||
|
|
||||||
**Related Issues**
|
**Related Issues**
|
||||||
|
|
||||||
_If this addresses an existing (open) GitHub issue, e.g. a feature request, mention the issue number here following a pound sign (aka hashmark), e.g. `#331`._
|
<!--If this addresses an existing (open) GitHub issue, e.g. a feature request, mention the issue number here following a pound sign (aka hashmark), e.g. `#331`.-->
|
||||||
|
|
||||||
**Author(s)**
|
**Author(s)**
|
||||||
|
|
||||||
_Please state name and affiliation of the author or authors that should be credited with the features added in this pull request. Please provide a suitable "long-lived" e-mail address (e.g. from gmail, yahoo, outlook, etc.) for the *corresponding* author, i.e. the person the LAMMPS developers can contact directly with questions and requests related to maintenance and support of this code. now and in the future_
|
<!--Please state name and affiliation of the author or authors that should be credited with the features added in this pull request. Please provide a suitable "long-lived" e-mail address (e.g. from gmail, yahoo, outlook, etc.) for the *corresponding* author, i.e. the person the LAMMPS developers can contact directly with questions and requests related to maintenance and support of this code. now and in the future-->
|
||||||
|
|
||||||
**Licensing**
|
**Licensing**
|
||||||
|
|
||||||
_Please add *yes* or *no* to the following two statements (please contact @lammps/core if you have questions about this)_
|
<!--Please add *yes* or *no* to the following two statements (please contact @lammps/core if you have questions about this)-->
|
||||||
|
|
||||||
My contribution may be licensed as GPL v2 (default LAMMPS license):
|
My contribution may be licensed as GPL v2 (default LAMMPS license):
|
||||||
My contribution may be licensed as LGPL (for use as a library with proprietary software):
|
My contribution may be licensed as LGPL (for use as a library with proprietary software):
|
||||||
|
|
||||||
**Backward Compatibility**
|
**Backward Compatibility**
|
||||||
|
|
||||||
_Please state if any of the changes in this pull request will affect backward compatibility for inputs, and - if yes - explain what has been changed and why_
|
<!--Please state if any of the changes in this pull request will affect backward compatibility for inputs, and - if yes - explain what has been changed and why-->
|
||||||
|
|
||||||
**Implementation Notes**
|
**Implementation Notes**
|
||||||
|
|
||||||
_Provide any relevant details about how the new features are implemented, how correctness was verified, what platforms (OS, compiler, MPI, hardware, number of processors, accelerator(s)) it was tested on_
|
<!--Provide any relevant details about how the new features are implemented, how correctness was verified, what platforms (OS, compiler, MPI, hardware, number of processors, accelerator(s)) it was tested on-->
|
||||||
|
|
||||||
## Post Submission Checklist
|
## Post Submission Checklist
|
||||||
|
|
||||||
_Please check the fields below as they are completed *after* the pull request has been submitted_
|
<!--Please check the fields below as they are completed *after* the pull request has been submitted-->
|
||||||
|
|
||||||
- [ ] The feature or features in this pull request is complete
|
- [ ] The feature or features in this pull request is complete
|
||||||
- [ ] Licensing information is complete
|
- [ ] Licensing information is complete
|
||||||
@ -51,6 +51,6 @@ _Please check the fields below as they are completed *after* the pull request ha
|
|||||||
|
|
||||||
## Further Information, Files, and Links
|
## Further Information, Files, and Links
|
||||||
|
|
||||||
_Put any additional information here, attach relevant text or image files, and URLs to external sites (e.g. DOIs or webpages)_
|
<!--Put any additional information here, attach relevant text or image files, and URLs to external sites (e.g. DOIs or webpages)-->
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -9,11 +9,11 @@ assignees: ''
|
|||||||
|
|
||||||
**Summary**
|
**Summary**
|
||||||
|
|
||||||
_Briefly describe what kind of updates or enhancements for a package or feature are included. If you are not the original author of the package or feature, please mention, whether your contribution was created independently or in collaboration/cooperation with the original author._
|
<!--Briefly describe what kind of updates or enhancements for a package or feature are included. If you are not the original author of the package or feature, please mention, whether your contribution was created independently or in collaboration/cooperation with the original author.-->
|
||||||
|
|
||||||
**Author(s)**
|
**Author(s)**
|
||||||
|
|
||||||
_Please state name and affiliation of the author or authors that should be credited with the changes in this pull request_
|
<!--Please state name and affiliation of the author or authors that should be credited with the changes in this pull request-->
|
||||||
|
|
||||||
**Licensing**
|
**Licensing**
|
||||||
|
|
||||||
@ -21,15 +21,15 @@ By submitting this pull request I implicitly accept, that my submission is subje
|
|||||||
|
|
||||||
**Backward Compatibility**
|
**Backward Compatibility**
|
||||||
|
|
||||||
_Please state whether any changes in the pull request break backward compatibility for inputs, and - if yes - explain what has been changed and why_
|
<!--Please state whether any changes in the pull request break backward compatibility for inputs, and - if yes - explain what has been changed and why-->
|
||||||
|
|
||||||
**Implementation Notes**
|
**Implementation Notes**
|
||||||
|
|
||||||
_Provide any relevant details about how the changes are implemented, how correctness was verified, how other features - if any - in LAMMPS are affected_
|
<!--Provide any relevant details about how the changes are implemented, how correctness was verified, how other features - if any - in LAMMPS are affected-->
|
||||||
|
|
||||||
**Post Submission Checklist**
|
**Post Submission Checklist**
|
||||||
|
|
||||||
_Please check the fields below as they are completed_
|
<!--Please check the fields below as they are completed-->
|
||||||
- [ ] The feature or features in this pull request is complete
|
- [ ] The feature or features in this pull request is complete
|
||||||
- [ ] Suitable updates to the existing docs are included
|
- [ ] Suitable updates to the existing docs are included
|
||||||
- [ ] One or more example input decks are included
|
- [ ] One or more example input decks are included
|
||||||
@ -37,6 +37,6 @@ _Please check the fields below as they are completed_
|
|||||||
|
|
||||||
**Further Information, Files, and Links**
|
**Further Information, Files, and Links**
|
||||||
|
|
||||||
_Put any additional information here, attach relevant text or image files, and URLs to external sites (e.g. DOIs or webpages)_
|
<!--Put any additional information here, attach relevant text or image files, and URLs to external sites (e.g. DOIs or webpages)-->
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
2
.gitignore
vendored
2
.gitignore
vendored
@ -9,6 +9,7 @@
|
|||||||
*.d
|
*.d
|
||||||
*.x
|
*.x
|
||||||
*.exe
|
*.exe
|
||||||
|
*.sif
|
||||||
*.dll
|
*.dll
|
||||||
*.pyc
|
*.pyc
|
||||||
__pycache__
|
__pycache__
|
||||||
@ -26,6 +27,7 @@ vgcore.*
|
|||||||
.vagrant
|
.vagrant
|
||||||
\#*#
|
\#*#
|
||||||
.#*
|
.#*
|
||||||
|
.vscode
|
||||||
|
|
||||||
.DS_Store
|
.DS_Store
|
||||||
.DS_Store?
|
.DS_Store?
|
||||||
|
|||||||
@ -1,51 +0,0 @@
|
|||||||
These are input scripts used to run versions of several of the
|
|
||||||
benchmarks in the top-level bench directory using the GPU accelerator
|
|
||||||
package. The results of running these scripts on two different machines
|
|
||||||
(a desktop with 2 Tesla GPUs and the ORNL Titan supercomputer) are shown
|
|
||||||
on the "GPU (Fermi)" section of the Benchmark page of the LAMMPS WWW
|
|
||||||
site: lammps.sandia.gov/bench.
|
|
||||||
|
|
||||||
Examples are shown below of how to run these scripts. This assumes
|
|
||||||
you have built 3 executables with the GPU package
|
|
||||||
installed, e.g.
|
|
||||||
|
|
||||||
lmp_linux_single
|
|
||||||
lmp_linux_mixed
|
|
||||||
lmp_linux_double
|
|
||||||
|
|
||||||
------------------------------------------------------------------------
|
|
||||||
|
|
||||||
To run on just CPUs (without using the GPU styles),
|
|
||||||
do something like the following:
|
|
||||||
|
|
||||||
mpirun -np 1 lmp_linux_double -v x 8 -v y 8 -v z 8 -v t 100 < in.lj
|
|
||||||
mpirun -np 12 lmp_linux_double -v x 16 -v y 16 -v z 16 -v t 100 < in.eam
|
|
||||||
|
|
||||||
The "xyz" settings determine the problem size. The "t" setting
|
|
||||||
determines the number of timesteps.
|
|
||||||
|
|
||||||
These mpirun commands run on a single node. To run on multiple
|
|
||||||
nodes, scale up the "-np" setting.
|
|
||||||
|
|
||||||
------------------------------------------------------------------------
|
|
||||||
|
|
||||||
To run with the GPU package, do something like the following:
|
|
||||||
|
|
||||||
mpirun -np 12 lmp_linux_single -sf gpu -v x 32 -v y 32 -v z 64 -v t 100 < in.lj
|
|
||||||
mpirun -np 8 lmp_linux_mixed -sf gpu -pk gpu 2 -v x 32 -v y 32 -v z 64 -v t 100 < in.eam
|
|
||||||
|
|
||||||
The "xyz" settings determine the problem size. The "t" setting
|
|
||||||
determines the number of timesteps. The "np" setting determines how
|
|
||||||
many MPI tasks (per node) the problem will run on. The numeric
|
|
||||||
argument to the "-pk" setting is the number of GPUs (per node); 1 GPU
|
|
||||||
is the default. Note that you can use more MPI tasks than GPUs (per
|
|
||||||
node) with the GPU package.
|
|
||||||
|
|
||||||
These mpirun commands run on a single node. To run on multiple nodes,
|
|
||||||
scale up the "-np" setting, and control the number of MPI tasks per
|
|
||||||
node via a "-ppn" setting.
|
|
||||||
|
|
||||||
------------------------------------------------------------------------
|
|
||||||
|
|
||||||
If the script has "titan" in its name, it was run on the Titan
|
|
||||||
supercomputer at ORNL.
|
|
||||||
@ -1,24 +0,0 @@
|
|||||||
# bulk Cu lattice
|
|
||||||
|
|
||||||
units metal
|
|
||||||
atom_style atomic
|
|
||||||
|
|
||||||
lattice fcc 3.615
|
|
||||||
region box block 0 $x 0 $y 0 $z
|
|
||||||
create_box 1 box
|
|
||||||
create_atoms 1 box
|
|
||||||
|
|
||||||
pair_style eam
|
|
||||||
pair_coeff 1 1 Cu_u3.eam
|
|
||||||
|
|
||||||
velocity all create 1600.0 376847 loop geom
|
|
||||||
|
|
||||||
neighbor 1.0 bin
|
|
||||||
neigh_modify every 1 delay 5 check yes
|
|
||||||
|
|
||||||
fix 1 all nve
|
|
||||||
|
|
||||||
timestep 0.005
|
|
||||||
thermo 50
|
|
||||||
|
|
||||||
run $t
|
|
||||||
@ -1,37 +0,0 @@
|
|||||||
# bulk Cu lattice
|
|
||||||
|
|
||||||
newton off
|
|
||||||
package gpu force/neigh 0 0 1
|
|
||||||
processors * * * grid numa
|
|
||||||
|
|
||||||
variable x index 1
|
|
||||||
variable y index 1
|
|
||||||
variable z index 1
|
|
||||||
|
|
||||||
variable xx equal 20*$x
|
|
||||||
variable yy equal 20*$y
|
|
||||||
variable zz equal 20*$z
|
|
||||||
|
|
||||||
units metal
|
|
||||||
atom_style atomic
|
|
||||||
|
|
||||||
lattice fcc 3.615
|
|
||||||
region box block 0 ${xx} 0 ${yy} 0 ${zz}
|
|
||||||
create_box 1 box
|
|
||||||
create_atoms 1 box
|
|
||||||
|
|
||||||
pair_style eam/gpu
|
|
||||||
pair_coeff 1 1 Cu_u3.eam
|
|
||||||
|
|
||||||
velocity all create 1600.0 376847 loop geom
|
|
||||||
|
|
||||||
neighbor 1.0 bin
|
|
||||||
neigh_modify every 1 delay 5 check yes
|
|
||||||
|
|
||||||
fix 1 all nve
|
|
||||||
|
|
||||||
timestep 0.005
|
|
||||||
thermo 50
|
|
||||||
|
|
||||||
run 15
|
|
||||||
run 100
|
|
||||||
@ -1,35 +0,0 @@
|
|||||||
# 3d Lennard-Jones melt
|
|
||||||
|
|
||||||
newton off
|
|
||||||
package gpu force/neigh 0 0 1
|
|
||||||
processors * * * grid numa
|
|
||||||
|
|
||||||
variable x index 1
|
|
||||||
variable y index 1
|
|
||||||
variable z index 1
|
|
||||||
|
|
||||||
variable xx equal 20*$x
|
|
||||||
variable yy equal 20*$y
|
|
||||||
variable zz equal 20*$z
|
|
||||||
|
|
||||||
units lj
|
|
||||||
atom_style atomic
|
|
||||||
|
|
||||||
lattice fcc 0.8442
|
|
||||||
region box block 0 ${xx} 0 ${yy} 0 ${zz}
|
|
||||||
create_box 1 box
|
|
||||||
create_atoms 1 box
|
|
||||||
mass 1 1.0
|
|
||||||
|
|
||||||
velocity all create 1.44 87287 loop geom
|
|
||||||
|
|
||||||
pair_style lj/cut/gpu 2.5
|
|
||||||
pair_coeff 1 1 1.0 1.0 2.5
|
|
||||||
|
|
||||||
neighbor 0.3 bin
|
|
||||||
neigh_modify delay 0 every 20 check no
|
|
||||||
|
|
||||||
fix 1 all nve
|
|
||||||
|
|
||||||
run 15
|
|
||||||
run 100
|
|
||||||
@ -1,30 +0,0 @@
|
|||||||
# Rhodopsin model
|
|
||||||
|
|
||||||
units real
|
|
||||||
neigh_modify delay 5 every 1
|
|
||||||
|
|
||||||
atom_style full
|
|
||||||
atom_modify map hash
|
|
||||||
bond_style harmonic
|
|
||||||
angle_style charmm
|
|
||||||
dihedral_style charmm
|
|
||||||
improper_style harmonic
|
|
||||||
pair_style lj/charmm/coul/long 8.0 10.0
|
|
||||||
pair_modify mix arithmetic
|
|
||||||
kspace_style pppm 1e-4
|
|
||||||
|
|
||||||
read_data data.rhodo
|
|
||||||
|
|
||||||
replicate $x $y $z
|
|
||||||
|
|
||||||
fix 1 all shake 0.0001 5 0 m 1.0 a 232
|
|
||||||
fix 2 all npt temp 300.0 300.0 100.0 &
|
|
||||||
z 0.0 0.0 1000.0 mtk no pchain 0 tchain 1
|
|
||||||
|
|
||||||
special_bonds charmm
|
|
||||||
|
|
||||||
thermo 50
|
|
||||||
thermo_style multi
|
|
||||||
timestep 2.0
|
|
||||||
|
|
||||||
run $t
|
|
||||||
@ -1,39 +0,0 @@
|
|||||||
# Rhodopsin model
|
|
||||||
|
|
||||||
newton off
|
|
||||||
package gpu force/neigh 0 0 1
|
|
||||||
processors * * * grid numa
|
|
||||||
|
|
||||||
variable x index 1
|
|
||||||
variable y index 1
|
|
||||||
variable z index 1
|
|
||||||
|
|
||||||
units real
|
|
||||||
neigh_modify delay 5 every 1
|
|
||||||
|
|
||||||
atom_style full
|
|
||||||
atom_modify map hash
|
|
||||||
bond_style harmonic
|
|
||||||
angle_style charmm
|
|
||||||
dihedral_style charmm
|
|
||||||
improper_style harmonic
|
|
||||||
pair_style lj/charmm/coul/long/gpu 8.0 ${cutoff}
|
|
||||||
pair_modify mix arithmetic
|
|
||||||
kspace_style pppm/gpu 1e-4
|
|
||||||
|
|
||||||
read_data data.rhodo
|
|
||||||
|
|
||||||
replicate $x $y $z
|
|
||||||
|
|
||||||
fix 1 all shake 0.0001 5 0 m 1.0 a 232
|
|
||||||
fix 2 all npt temp 300.0 300.0 100.0 &
|
|
||||||
z 0.0 0.0 1000.0 mtk no pchain 0 tchain 1
|
|
||||||
|
|
||||||
special_bonds charmm
|
|
||||||
|
|
||||||
thermo 50
|
|
||||||
# thermo_style multi
|
|
||||||
timestep 2.0
|
|
||||||
|
|
||||||
run 15
|
|
||||||
run 100
|
|
||||||
@ -1,42 +0,0 @@
|
|||||||
# Rhodopsin model
|
|
||||||
|
|
||||||
newton off
|
|
||||||
package gpu force/neigh 0 0 1
|
|
||||||
partition yes 1 processors * * * grid twolevel ${grid} * * * &
|
|
||||||
part 1 2 multiple
|
|
||||||
partition yes 2 processors * * * part 1 2 multiple
|
|
||||||
|
|
||||||
variable x index 1
|
|
||||||
variable y index 1
|
|
||||||
variable z index 1
|
|
||||||
|
|
||||||
units real
|
|
||||||
neigh_modify delay 5 every 1
|
|
||||||
|
|
||||||
atom_style full
|
|
||||||
atom_modify map hash
|
|
||||||
bond_style harmonic
|
|
||||||
angle_style charmm
|
|
||||||
dihedral_style charmm
|
|
||||||
improper_style harmonic
|
|
||||||
pair_style lj/charmm/coul/long/gpu 8.0 ${cutoff}
|
|
||||||
pair_modify mix arithmetic
|
|
||||||
kspace_style pppm/gpu 1e-4
|
|
||||||
|
|
||||||
read_data data.rhodo
|
|
||||||
|
|
||||||
replicate $x $y $z
|
|
||||||
|
|
||||||
fix 1 all shake 0.0001 5 0 m 1.0 a 232
|
|
||||||
fix 2 all npt temp 300.0 300.0 100.0 &
|
|
||||||
z 0.0 0.0 1000.0 mtk no pchain 0 tchain 1
|
|
||||||
|
|
||||||
special_bonds charmm
|
|
||||||
|
|
||||||
thermo 50
|
|
||||||
# thermo_style multi
|
|
||||||
timestep 2.0
|
|
||||||
|
|
||||||
run_style verlet/split
|
|
||||||
run 15
|
|
||||||
run 100
|
|
||||||
@ -1,2 +0,0 @@
|
|||||||
rc = 4.0
|
|
||||||
delr = 0.1
|
|
||||||
1
bench/POTENTIALS/Ni.meam
Symbolic link
1
bench/POTENTIALS/Ni.meam
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
../../potentials/Ni.meam
|
||||||
@ -1,17 +0,0 @@
|
|||||||
# Stillinger-Weber parameters for various elements and mixtures
|
|
||||||
# multiple entries can be added to this file, LAMMPS reads the ones it needs
|
|
||||||
# these entries are in LAMMPS "metal" units:
|
|
||||||
# epsilon = eV; sigma = Angstroms
|
|
||||||
# other quantities are unitless
|
|
||||||
|
|
||||||
# format of a single entry (one or more lines):
|
|
||||||
# element 1, element 2, element 3,
|
|
||||||
# epsilon, sigma, a, lambda, gamma, costheta0, A, B, p, q, tol
|
|
||||||
|
|
||||||
# Here are the original parameters in metal units, for Silicon from:
|
|
||||||
#
|
|
||||||
# Stillinger and Weber, Phys. Rev. B, v. 31, p. 5262, (1985)
|
|
||||||
#
|
|
||||||
|
|
||||||
Si Si Si 2.1683 2.0951 1.80 21.0 1.20 -0.333333333333
|
|
||||||
7.049556277 0.6022245584 4.0 0.0 0.0
|
|
||||||
1
bench/POTENTIALS/Si.sw
Symbolic link
1
bench/POTENTIALS/Si.sw
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
../../potentials/Si.sw
|
||||||
@ -1,16 +0,0 @@
|
|||||||
# Tersoff parameters for various elements and mixtures
|
|
||||||
# multiple entries can be added to this file, LAMMPS reads the ones it needs
|
|
||||||
# these entries are in LAMMPS "metal" units:
|
|
||||||
# A,B = eV; lambda1,lambda2,lambda3 = 1/Angstroms; R,D = Angstroms
|
|
||||||
# other quantities are unitless
|
|
||||||
|
|
||||||
# This is the Si parameterization from a particular Tersoff paper:
|
|
||||||
# J. Tersoff, PRB, 37, 6991 (1988)
|
|
||||||
# See the SiCGe.tersoff file for different Si variants.
|
|
||||||
|
|
||||||
# format of a single entry (one or more lines):
|
|
||||||
# element 1, element 2, element 3,
|
|
||||||
# m, gamma, lambda3, c, d, costheta0, n, beta, lambda2, B, R, D, lambda1, A
|
|
||||||
|
|
||||||
Si Si Si 3.0 1.0 1.3258 4.8381 2.0417 0.0000 22.956
|
|
||||||
0.33675 1.3258 95.373 3.0 0.2 3.2394 3264.7
|
|
||||||
1
bench/POTENTIALS/Si.tersoff
Symbolic link
1
bench/POTENTIALS/Si.tersoff
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
../../potentials/Si.tersoff
|
||||||
@ -1,24 +0,0 @@
|
|||||||
# bulk Ni in MEAM
|
|
||||||
|
|
||||||
units metal
|
|
||||||
atom_style atomic
|
|
||||||
|
|
||||||
lattice fcc 3.52
|
|
||||||
region box block 0 20 0 20 0 20
|
|
||||||
create_box 1 box
|
|
||||||
create_atoms 1 box
|
|
||||||
|
|
||||||
pair_style meam
|
|
||||||
pair_coeff * * library.meam Ni4 Ni.meam Ni4
|
|
||||||
|
|
||||||
velocity all create 1600.0 376847 loop geom
|
|
||||||
|
|
||||||
neighbor 1.0 bin
|
|
||||||
neigh_modify delay 5 every 1
|
|
||||||
|
|
||||||
fix 1 all nve
|
|
||||||
|
|
||||||
timestep 0.005
|
|
||||||
thermo 50
|
|
||||||
|
|
||||||
run 100
|
|
||||||
@ -1,22 +0,0 @@
|
|||||||
# ReaxFF benchmark: simulation of PETN crystal, replicated unit cell
|
|
||||||
|
|
||||||
units real
|
|
||||||
atom_style charge
|
|
||||||
|
|
||||||
read_data data.reax
|
|
||||||
|
|
||||||
#replicate 7 8 10
|
|
||||||
replicate 7 8 5
|
|
||||||
|
|
||||||
velocity all create 300.0 9999
|
|
||||||
|
|
||||||
pair_style reax
|
|
||||||
pair_coeff * * ffield.reax 1 2 3 4
|
|
||||||
|
|
||||||
timestep 0.1
|
|
||||||
fix 2 all nve
|
|
||||||
|
|
||||||
thermo 10
|
|
||||||
thermo_style custom step temp ke pe pxx pyy pzz etotal
|
|
||||||
|
|
||||||
run 100
|
|
||||||
@ -1,162 +0,0 @@
|
|||||||
# meam data from vax files fcc,bcc,dia 11/4/92
|
|
||||||
# elt lat z ielement atwt
|
|
||||||
# alpha b0 b1 b2 b3 alat esub asub
|
|
||||||
# t0 t1 t2 t3 rozero ibar
|
|
||||||
|
|
||||||
'Sn5' 'dia' 4. 50 118.
|
|
||||||
5.09 5.00 16.0 04.0 5.0 6.483 3.14 1.00
|
|
||||||
1.0 2.00 5.756 -0.30 1. 0
|
|
||||||
'Sn' 'dia' 4. 50 118.
|
|
||||||
5.09 5.42 8.0 5.0 6.0 6.483 3.14 1.12
|
|
||||||
1.0 3.0 5.707 +0.30 1. 0
|
|
||||||
'Cu' 'fcc' 12. 29 63.54
|
|
||||||
5.10570729 3.634 2.20 6 2.20 3.62 3.54 1.07
|
|
||||||
1.0 3.13803254 2.49438711 2.95269237 1. 0
|
|
||||||
'Ag' 'fcc' 12. 47 107.870
|
|
||||||
5.89222008 4.456 2.20 6 2.20 4.08 2.85 1.06
|
|
||||||
1.0 5.54097609 2.45015783 1.28843988 1. 0
|
|
||||||
'Au' 'fcc' 12. 79 196.967
|
|
||||||
6.34090112 5.449 2.20 6 2.20 4.07 3.93 1.04
|
|
||||||
1.0 1.58956328 1.50776392 2.60609758 1. 0
|
|
||||||
'Ni1' 'fcc' 12. 28 58.71
|
|
||||||
4.99 2.45 2.20 6 2.20 3.52 4.45 1.10
|
|
||||||
1.0 3.57 1.60 3.70 1.0 0
|
|
||||||
'Ni2' 'fcc' 12. 28 58.71
|
|
||||||
4.99 2.45 2.20 6 2.20 3.52 4.45 1.10
|
|
||||||
1.0 3.57 1.60 3.70 1.0 3
|
|
||||||
'Ni3' 'fcc' 12. 28 58.71
|
|
||||||
4.99 2.45 1.50 6 1.50 3.52 4.45 1.10
|
|
||||||
1.0 3.57 1.60 3.70 1.0 3
|
|
||||||
'Ni4' 'fcc' 12. 28 58.71
|
|
||||||
4.99 2.45 1.50 6 1.50 3.52 4.45 1.10
|
|
||||||
1.0 3.57 1.60 3.70 1.0 0
|
|
||||||
'Ni' 'fcc' 12. 28 58.71
|
|
||||||
4.99 2.64 1.50 4.50 1.50 3.52 4.45 1.10
|
|
||||||
1.0 1.692 4.987 3.683 1.0 1
|
|
||||||
'Nix' 'fcc' 12. 28 58.71
|
|
||||||
4.99 2.64 1.50 4.50 1.50 3.52 4.45 1.10
|
|
||||||
1.0 0.00 0.000 3.683 1.0 1
|
|
||||||
'Ni' 'fcc' 12. 28 58.71
|
|
||||||
4.99 3.25 0.80 4 1.50 3.52 4.45 1.07
|
|
||||||
1.0 -4.052 13.14 3.786 1.0 1
|
|
||||||
'Pd' 'fcc' 12. 46 106.4
|
|
||||||
6.43230473 4.975 2.20 6 2.20 3.89 3.91 1.01
|
|
||||||
1.0 2.33573516 1.38343023 4.47989049 1. 0
|
|
||||||
'Pt' 'fcc' 12. 78 195.09
|
|
||||||
6.44221724 4.673 2.20 6 2.20 3.92 5.77 1.04
|
|
||||||
1.0 2.73335406 -1.3759593 3.29322278 1. 0
|
|
||||||
'Al' 'fcc' 12. 13 26.9815
|
|
||||||
4.61 2.21 2.20 6.0 2.20 4.05 3.58 1.07
|
|
||||||
1.0 -1.78 -2.21 8.01 0.6 0
|
|
||||||
'Al' 'fcc' 12. 13 26.9815
|
|
||||||
4.69 1.56 4.00 5.5 0.60 4.05 3.36 1.09
|
|
||||||
1.0 -0.251 -3.450 8.298 0.6 1
|
|
||||||
'Al' 'fcc' 12. 13 26.9815
|
|
||||||
4.69 1.58 1.00 6.0 0.60 4.05 3.36 1.09
|
|
||||||
1.0 -0.808 -2.614 8.298 0.6 1
|
|
||||||
'Pb' 'fcc' 12. 82 207.19
|
|
||||||
6.0564428 5.306 2.20 6 2.20 4.95 2.04 1.01
|
|
||||||
1.0 2.74022352 3.06323991 1.2 1. 0
|
|
||||||
'Rh' 'fcc' 12. 45 102.905
|
|
||||||
6.0045385 1.131 1.00 2 1.00 3.8 5.75 1.05
|
|
||||||
1.0 2.9900 4.60231784 4.8 1. 0
|
|
||||||
'Ir' 'fcc' 12. 77 192.2
|
|
||||||
6.52315787 1.13 1.00 2 1.00 3.84 6.93 1.05
|
|
||||||
1.0 1.50000 8.09942666 4.8 1. 0
|
|
||||||
'Li' 'bcc' 8. 3 6.939
|
|
||||||
2.97244804 1.425 1.00 1.00169907 1.00 3.509 1.65 0.87
|
|
||||||
1.0 0.26395017 0.44431129 -0.2 1. 0
|
|
||||||
'Na' 'bcc' 8. 11 22.9898
|
|
||||||
3.64280541 2.313 1.00 1.00173951 1.00 4.291 1.13 0.9
|
|
||||||
1.0 3.55398839 0.68807569 -0.2 1. 0
|
|
||||||
'K' 'bcc' 8. 19 39.102
|
|
||||||
3.90128376 2.687 1.00 1.00186667 1.00 5.344 0.94 0.92
|
|
||||||
1.0 5.09756981 0.69413264 -0.2 1. 0
|
|
||||||
'V' 'bcc' 8. 23 50.942
|
|
||||||
4.83265262 4.113 1.00 1.00095022 1.00 3.04 5.3 1
|
|
||||||
1.0 4.20161301 4.09946561 -1 1. 0
|
|
||||||
'Nb' 'bcc' 8. 41 92.906
|
|
||||||
4.79306197 4.374 1.00 1.00101441 1.00 3.301 7.47 1
|
|
||||||
1.0 3.75762849 3.82514598 -1 1. 0
|
|
||||||
'Ta' 'bcc' 8. 73 180.948
|
|
||||||
4.89528669 3.709 1.00 1.00099783 1.00 3.303 8.09 0.99
|
|
||||||
1.0 6.08617812 3.35255804 -2.9 1. 0
|
|
||||||
'Cr' 'bcc' 8. 24 51.996
|
|
||||||
5.12169218 3.224 1.00 1.00048646 1.00 2.885 4.1 0.94
|
|
||||||
1.0 -0.207535 12.2600006 -1.9 1. 0
|
|
||||||
'Mo' 'bcc' 8. 42 95.94
|
|
||||||
5.84872871 4.481 1.00 1.00065204 1.00 3.15 6.81 0.99
|
|
||||||
1.0 3.47727181 9.48582009 -2.9 1. 0
|
|
||||||
'W' 'bcc' 8. 74 183.85
|
|
||||||
5.62777409 3.978 1.00 1.00065894 1.00 3.165 8.66 0.98
|
|
||||||
1.0 3.16353338 8.24586928 -2.7 1. 0
|
|
||||||
'WL' 'bcc' 8 74 183.85
|
|
||||||
5.6831 6.54 1 1 1 3.1639 8.66 0.4
|
|
||||||
1 -0.6 0.3 -8.7 1 3
|
|
||||||
'Fe' 'bcc' 8. 26 55.847
|
|
||||||
5.07292627 2.935 1.00 1.00080073 1.00 2.866 4.29 0.89
|
|
||||||
1.0 5.13579244 4.12042448 -2.7 1. 0
|
|
||||||
'Si' 'dia' 4. 14 28.086
|
|
||||||
4.87 4.8 4.8 4.8 4.8 5.431 4.63 1.
|
|
||||||
1.0 3.30 5.105 -0.80 1. 1
|
|
||||||
'Si97' 'dia' 4. 14 28.086
|
|
||||||
4.87 4.4 5.5 5.5 5.5 5.431 4.63 1.
|
|
||||||
1.0 3.13 4.47 -1.80 2.05 0
|
|
||||||
'Si92' 'dia' 4. 14 28.086
|
|
||||||
4.87 4.4 5.5 5.5 5.5 5.431 4.63 1.
|
|
||||||
1.0 3.13 4.47 -1.80 2.35 0
|
|
||||||
'Six' 'dia' 4 14 28.086
|
|
||||||
4.87 4.4 5.5 5.5 5.5 5.431 4.63 1.0
|
|
||||||
1.0 2.05 4.47 -1.8 2.05 0
|
|
||||||
'Sixb' 'dia' 4 14 28.086
|
|
||||||
4.87 4.4 5.5 5.5 5.5 5.431 4.63 1.0
|
|
||||||
1.0 2.05 4.47 -1.8 2.5 0
|
|
||||||
'Mg' 'hcp' 12. 12 24.305
|
|
||||||
5.45 2.70 0.0 0.35 3.0 3.20 1.55 1.11
|
|
||||||
1.0 8.00 04.1 -02.0 1.0 0
|
|
||||||
'C' 'dia' 4. 6 12.0111
|
|
||||||
4.38 4.10 4.200 5.00 3.00 3.567 7.37 1.000
|
|
||||||
1.0 5.0 9.34 -1.00 2.25 1
|
|
||||||
'C' 'dia' 4. 6 12.0111
|
|
||||||
4.38 5.20 3.87 4.00 4.50 3.567 7.37 1.278
|
|
||||||
1.0 15. 2.09 -6.00 2.5 1
|
|
||||||
'C' 'dia' 4. 6 12.0111
|
|
||||||
4.38 4.50 4.00 3.50 4.80 3.567 7.37 1.00
|
|
||||||
1.0 10.5 1.54 -8.75 3.2 1
|
|
||||||
'C' 'dia' 4. 6 12.0111
|
|
||||||
4.38 3.30 2.80 1.50 3.20 3.567 7.37 1.00
|
|
||||||
1.0 10.3 1.54 -8.80 2.5 1
|
|
||||||
'C' 'dia' 4. 6 12.0111
|
|
||||||
4.38 4.60 3.45 4.00 4.20 3.567 7.37 1.061
|
|
||||||
1.0 15.0 1.74 -8.00 2.5 1
|
|
||||||
'C' 'dia' 4. 6 12.0111
|
|
||||||
4.38 4.50 4.00 3.50 4.80 3.567 7.37 1.00
|
|
||||||
1.0 10.5 1.54 -8.75 3.2 1
|
|
||||||
'h' 'dim' 1. 1 1.0079
|
|
||||||
2.96 2.70 3.5 3.4 3.4 0.74 2.235 2.27
|
|
||||||
1.0 0.19 0.00 0.00 20.00 0
|
|
||||||
'h' 'dim' 1. 1 1.0079
|
|
||||||
2.96 2.00 4.0 4.0 0.0 0.74 2.235 1.00
|
|
||||||
1.0 -0.60 -0.80 -0.0 01.0 1
|
|
||||||
'H' 'dim' 1. 1 1.0079
|
|
||||||
2.96 2.96 3.0 3.0 3.0 0.74 2.235 2.50
|
|
||||||
1.0 0.20 -0.10 0.0 0.5 0
|
|
||||||
'H' 'dim' 1. 1 1.0079
|
|
||||||
2.96 2.0 3.0 4.0 0.0 0.74 2.225 1.00
|
|
||||||
1.0 -0.5 -1.00 0.0 0.15 1
|
|
||||||
'H' 'dim' 1. 1 1.0079
|
|
||||||
2.96 2.00 2.0 2.0 2.0 0.74 2.235 1.00
|
|
||||||
1.0 -0.60 -0.80 -0.0 01.0 2
|
|
||||||
'Hni' 'dim' 1. 1 1.0079
|
|
||||||
2.96 2.96 3.0 3.0 3.0 0.74 2.235 2.50
|
|
||||||
1.0 0.2 -0.1 0.0 0.5 0
|
|
||||||
'Hni' 'dim' 1. 1 1.0079
|
|
||||||
2.96 2.96 3.0 2.0 3.0 0.74 2.235 36.4
|
|
||||||
1.0 0.2 6.0 0.0 22.8 0
|
|
||||||
'Vac' 'fcc' 12. 1 1.
|
|
||||||
0 0 0.0 0 0.0 1E+08 0 1
|
|
||||||
0 0 0 0 1. 0
|
|
||||||
'zz' 'zzz' 99. 1 1.
|
|
||||||
0 0 0.0 0 0.0 0. 0. 0.
|
|
||||||
0 0 0 0 1. 0
|
|
||||||
|
|
||||||
1
bench/POTENTIALS/library.meam
Symbolic link
1
bench/POTENTIALS/library.meam
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
../../potentials/library.meam
|
||||||
@ -1,84 +0,0 @@
|
|||||||
LAMMPS (16 Mar 2018)
|
|
||||||
OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (../comm.cpp:90)
|
|
||||||
using 1 OpenMP thread(s) per MPI task
|
|
||||||
# bulk Ni in MEAM
|
|
||||||
|
|
||||||
units metal
|
|
||||||
atom_style atomic
|
|
||||||
|
|
||||||
lattice fcc 3.52
|
|
||||||
Lattice spacing in x,y,z = 3.52 3.52 3.52
|
|
||||||
region box block 0 20 0 20 0 20
|
|
||||||
create_box 1 box
|
|
||||||
Created orthogonal box = (0 0 0) to (70.4 70.4 70.4)
|
|
||||||
1 by 1 by 1 MPI processor grid
|
|
||||||
create_atoms 1 box
|
|
||||||
Created 32000 atoms
|
|
||||||
Time spent = 0.00186539 secs
|
|
||||||
|
|
||||||
pair_style meam
|
|
||||||
WARNING: The pair_style meam command is unsupported. Please use pair_style meam/c instead (../pair_meam.cpp:51)
|
|
||||||
pair_coeff * * library.meam Ni4 Ni.meam Ni4
|
|
||||||
|
|
||||||
velocity all create 1600.0 376847 loop geom
|
|
||||||
|
|
||||||
neighbor 1.0 bin
|
|
||||||
neigh_modify delay 5 every 1
|
|
||||||
|
|
||||||
fix 1 all nve
|
|
||||||
|
|
||||||
timestep 0.005
|
|
||||||
thermo 50
|
|
||||||
|
|
||||||
run 100
|
|
||||||
Neighbor list info ...
|
|
||||||
update every 1 steps, delay 5 steps, check yes
|
|
||||||
max neighbors/atom: 2000, page size: 100000
|
|
||||||
master list distance cutoff = 5
|
|
||||||
ghost atom cutoff = 5
|
|
||||||
binsize = 2.5, bins = 29 29 29
|
|
||||||
2 neighbor lists, perpetual/occasional/extra = 2 0 0
|
|
||||||
(1) pair meam, perpetual
|
|
||||||
attributes: full, newton on
|
|
||||||
pair build: full/bin/atomonly
|
|
||||||
stencil: full/bin/3d
|
|
||||||
bin: standard
|
|
||||||
(2) pair meam, perpetual, half/full from (1)
|
|
||||||
attributes: half, newton on
|
|
||||||
pair build: halffull/newton
|
|
||||||
stencil: none
|
|
||||||
bin: none
|
|
||||||
Per MPI rank memory allocation (min/avg/max) = 55.91 | 55.91 | 55.91 Mbytes
|
|
||||||
Step Temp E_pair E_mol TotEng Press
|
|
||||||
0 1600 -142400 0 -135782.09 20259.18
|
|
||||||
50 885.10702 -139411.51 0 -135750.54 32425.433
|
|
||||||
100 895.5097 -139454.3 0 -135750.3 31804.187
|
|
||||||
Loop time of 30.6278 on 1 procs for 100 steps with 32000 atoms
|
|
||||||
|
|
||||||
Performance: 1.410 ns/day, 17.015 hours/ns, 3.265 timesteps/s
|
|
||||||
99.8% CPU use with 1 MPI tasks x 1 OpenMP threads
|
|
||||||
|
|
||||||
MPI task timing breakdown:
|
|
||||||
Section | min time | avg time | max time |%varavg| %total
|
|
||||||
---------------------------------------------------------------
|
|
||||||
Pair | 30.088 | 30.088 | 30.088 | 0.0 | 98.24
|
|
||||||
Neigh | 0.48914 | 0.48914 | 0.48914 | 0.0 | 1.60
|
|
||||||
Comm | 0.015916 | 0.015916 | 0.015916 | 0.0 | 0.05
|
|
||||||
Output | 0.00022554 | 0.00022554 | 0.00022554 | 0.0 | 0.00
|
|
||||||
Modify | 0.025481 | 0.025481 | 0.025481 | 0.0 | 0.08
|
|
||||||
Other | | 0.009055 | | | 0.03
|
|
||||||
|
|
||||||
Nlocal: 32000 ave 32000 max 32000 min
|
|
||||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
|
||||||
Nghost: 13576 ave 13576 max 13576 min
|
|
||||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
|
||||||
Neighs: 780360 ave 780360 max 780360 min
|
|
||||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
|
||||||
FullNghs: 1.56072e+06 ave 1.56072e+06 max 1.56072e+06 min
|
|
||||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
|
||||||
|
|
||||||
Total # of neighbors = 1560720
|
|
||||||
Ave neighs/atom = 48.7725
|
|
||||||
Neighbor list builds = 8
|
|
||||||
Dangerous builds = 0
|
|
||||||
Total wall time: 0:00:30
|
|
||||||
@ -1,84 +0,0 @@
|
|||||||
LAMMPS (16 Mar 2018)
|
|
||||||
OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (../comm.cpp:90)
|
|
||||||
using 1 OpenMP thread(s) per MPI task
|
|
||||||
# bulk Ni in MEAM
|
|
||||||
|
|
||||||
units metal
|
|
||||||
atom_style atomic
|
|
||||||
|
|
||||||
lattice fcc 3.52
|
|
||||||
Lattice spacing in x,y,z = 3.52 3.52 3.52
|
|
||||||
region box block 0 20 0 20 0 20
|
|
||||||
create_box 1 box
|
|
||||||
Created orthogonal box = (0 0 0) to (70.4 70.4 70.4)
|
|
||||||
1 by 2 by 2 MPI processor grid
|
|
||||||
create_atoms 1 box
|
|
||||||
Created 32000 atoms
|
|
||||||
Time spent = 0.000587463 secs
|
|
||||||
|
|
||||||
pair_style meam
|
|
||||||
WARNING: The pair_style meam command is unsupported. Please use pair_style meam/c instead (../pair_meam.cpp:51)
|
|
||||||
pair_coeff * * library.meam Ni4 Ni.meam Ni4
|
|
||||||
|
|
||||||
velocity all create 1600.0 376847 loop geom
|
|
||||||
|
|
||||||
neighbor 1.0 bin
|
|
||||||
neigh_modify delay 5 every 1
|
|
||||||
|
|
||||||
fix 1 all nve
|
|
||||||
|
|
||||||
timestep 0.005
|
|
||||||
thermo 50
|
|
||||||
|
|
||||||
run 100
|
|
||||||
Neighbor list info ...
|
|
||||||
update every 1 steps, delay 5 steps, check yes
|
|
||||||
max neighbors/atom: 2000, page size: 100000
|
|
||||||
master list distance cutoff = 5
|
|
||||||
ghost atom cutoff = 5
|
|
||||||
binsize = 2.5, bins = 29 29 29
|
|
||||||
2 neighbor lists, perpetual/occasional/extra = 2 0 0
|
|
||||||
(1) pair meam, perpetual
|
|
||||||
attributes: full, newton on
|
|
||||||
pair build: full/bin/atomonly
|
|
||||||
stencil: full/bin/3d
|
|
||||||
bin: standard
|
|
||||||
(2) pair meam, perpetual, half/full from (1)
|
|
||||||
attributes: half, newton on
|
|
||||||
pair build: halffull/newton
|
|
||||||
stencil: none
|
|
||||||
bin: none
|
|
||||||
Per MPI rank memory allocation (min/avg/max) = 17.41 | 17.41 | 17.41 Mbytes
|
|
||||||
Step Temp E_pair E_mol TotEng Press
|
|
||||||
0 1600 -142400 0 -135782.09 20259.18
|
|
||||||
50 885.10702 -139411.51 0 -135750.54 32425.433
|
|
||||||
100 895.5097 -139454.3 0 -135750.3 31804.187
|
|
||||||
Loop time of 8.21941 on 4 procs for 100 steps with 32000 atoms
|
|
||||||
|
|
||||||
Performance: 5.256 ns/day, 4.566 hours/ns, 12.166 timesteps/s
|
|
||||||
99.2% CPU use with 4 MPI tasks x 1 OpenMP threads
|
|
||||||
|
|
||||||
MPI task timing breakdown:
|
|
||||||
Section | min time | avg time | max time |%varavg| %total
|
|
||||||
---------------------------------------------------------------
|
|
||||||
Pair | 8.0277 | 8.0384 | 8.0504 | 0.3 | 97.80
|
|
||||||
Neigh | 0.12555 | 0.12645 | 0.12713 | 0.2 | 1.54
|
|
||||||
Comm | 0.024279 | 0.036776 | 0.048389 | 4.5 | 0.45
|
|
||||||
Output | 9.4414e-05 | 0.00011903 | 0.00018597 | 0.0 | 0.00
|
|
||||||
Modify | 0.01252 | 0.012608 | 0.012795 | 0.1 | 0.15
|
|
||||||
Other | | 0.005028 | | | 0.06
|
|
||||||
|
|
||||||
Nlocal: 8000 ave 8045 max 7947 min
|
|
||||||
Histogram: 1 0 0 1 0 0 0 1 0 1
|
|
||||||
Nghost: 6066.75 ave 6120 max 6021 min
|
|
||||||
Histogram: 1 0 1 0 0 0 1 0 0 1
|
|
||||||
Neighs: 195090 ave 196403 max 193697 min
|
|
||||||
Histogram: 1 0 0 1 0 0 0 1 0 1
|
|
||||||
FullNghs: 390180 ave 392616 max 387490 min
|
|
||||||
Histogram: 1 0 0 1 0 0 0 1 0 1
|
|
||||||
|
|
||||||
Total # of neighbors = 1560720
|
|
||||||
Ave neighs/atom = 48.7725
|
|
||||||
Neighbor list builds = 8
|
|
||||||
Dangerous builds = 0
|
|
||||||
Total wall time: 0:00:08
|
|
||||||
@ -1,86 +0,0 @@
|
|||||||
LAMMPS (16 Mar 2018)
|
|
||||||
OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (../comm.cpp:90)
|
|
||||||
using 1 OpenMP thread(s) per MPI task
|
|
||||||
# ReaxFF benchmark: simulation of PETN crystal, replicated unit cell
|
|
||||||
|
|
||||||
units real
|
|
||||||
atom_style charge
|
|
||||||
|
|
||||||
read_data data.reax
|
|
||||||
orthogonal box = (0 0 0) to (9.49107 9.49107 6.99123)
|
|
||||||
1 by 1 by 1 MPI processor grid
|
|
||||||
reading atoms ...
|
|
||||||
58 atoms
|
|
||||||
|
|
||||||
#replicate 7 8 10
|
|
||||||
replicate 7 8 5
|
|
||||||
orthogonal box = (0 0 0) to (66.4375 75.9285 34.9562)
|
|
||||||
1 by 1 by 1 MPI processor grid
|
|
||||||
16240 atoms
|
|
||||||
Time spent = 0.000834942 secs
|
|
||||||
|
|
||||||
velocity all create 300.0 9999
|
|
||||||
|
|
||||||
pair_style reax
|
|
||||||
WARNING: The pair_style reax command is unsupported. Please switch to pair_style reax/c instead (../pair_reax.cpp:49)
|
|
||||||
pair_coeff * * ffield.reax 1 2 3 4
|
|
||||||
|
|
||||||
timestep 0.1
|
|
||||||
fix 2 all nve
|
|
||||||
|
|
||||||
thermo 10
|
|
||||||
thermo_style custom step temp ke pe pxx pyy pzz etotal
|
|
||||||
|
|
||||||
run 100
|
|
||||||
Neighbor list info ...
|
|
||||||
update every 1 steps, delay 10 steps, check yes
|
|
||||||
max neighbors/atom: 2000, page size: 100000
|
|
||||||
master list distance cutoff = 12
|
|
||||||
ghost atom cutoff = 12
|
|
||||||
binsize = 6, bins = 12 13 6
|
|
||||||
1 neighbor lists, perpetual/occasional/extra = 1 0 0
|
|
||||||
(1) pair reax, perpetual
|
|
||||||
attributes: half, newton off
|
|
||||||
pair build: half/bin/newtoff
|
|
||||||
stencil: half/bin/3d/newtoff
|
|
||||||
bin: standard
|
|
||||||
Per MPI rank memory allocation (min/avg/max) = 115.8 | 115.8 | 115.8 Mbytes
|
|
||||||
Step Temp KinEng PotEng Pxx Pyy Pzz TotEng
|
|
||||||
0 300 14521.612 -1616144.2 22296.712 -29858.677 5721.0921 -1601622.5
|
|
||||||
10 298.98728 14472.591 -1616093.9 21955.847 -24067.096 7389.148 -1601621.3
|
|
||||||
20 294.76158 14268.045 -1615890.1 19179.258 -10513.494 10789.925 -1601622
|
|
||||||
30 288.56967 13968.323 -1615591.2 13854.377 5833.02 13949.731 -1601622.9
|
|
||||||
40 282.06725 13653.571 -1615278.2 6259.9845 19406.33 14947.939 -1601624.6
|
|
||||||
50 274.84112 13303.787 -1614931.9 -2009.6832 26964.336 13346.855 -1601628.2
|
|
||||||
60 266.20153 12885.585 -1614519.7 -8441.1641 28485.532 10195.429 -1601634.1
|
|
||||||
70 259.17085 12545.262 -1614184.2 -11426.993 24941.516 6572.2953 -1601638.9
|
|
||||||
80 259.73004 12572.33 -1614216.7 -10867.598 16928.461 3033.9021 -1601644.3
|
|
||||||
90 269.2352 13032.431 -1614679 -7962.3129 4931.5317 -280.22164 -1601646.6
|
|
||||||
100 280.67181 13586.024 -1615234.3 -3606.1519 -8769.8482 -2527.5887 -1601648.3
|
|
||||||
Loop time of 358.104 on 1 procs for 100 steps with 16240 atoms
|
|
||||||
|
|
||||||
Performance: 0.002 ns/day, 9947.338 hours/ns, 0.279 timesteps/s
|
|
||||||
99.8% CPU use with 1 MPI tasks x 1 OpenMP threads
|
|
||||||
|
|
||||||
MPI task timing breakdown:
|
|
||||||
Section | min time | avg time | max time |%varavg| %total
|
|
||||||
---------------------------------------------------------------
|
|
||||||
Pair | 358.07 | 358.07 | 358.07 | 0.0 | 99.99
|
|
||||||
Neigh | 0 | 0 | 0 | 0.0 | 0.00
|
|
||||||
Comm | 0.01623 | 0.01623 | 0.01623 | 0.0 | 0.00
|
|
||||||
Output | 0.0013328 | 0.0013328 | 0.0013328 | 0.0 | 0.00
|
|
||||||
Modify | 0.012679 | 0.012679 | 0.012679 | 0.0 | 0.00
|
|
||||||
Other | | 0.006895 | | | 0.00
|
|
||||||
|
|
||||||
Nlocal: 16240 ave 16240 max 16240 min
|
|
||||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
|
||||||
Nghost: 32428 ave 32428 max 32428 min
|
|
||||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
|
||||||
Neighs: 6.69975e+06 ave 6.69975e+06 max 6.69975e+06 min
|
|
||||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
|
||||||
|
|
||||||
Total # of neighbors = 6699752
|
|
||||||
Ave neighs/atom = 412.546
|
|
||||||
Neighbor list builds = 0
|
|
||||||
Dangerous builds = 0
|
|
||||||
Total wall time: 0:06:02
|
|
||||||
@ -1,86 +0,0 @@
|
|||||||
LAMMPS (16 Mar 2018)
|
|
||||||
OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (../comm.cpp:90)
|
|
||||||
using 1 OpenMP thread(s) per MPI task
|
|
||||||
# ReaxFF benchmark: simulation of PETN crystal, replicated unit cell
|
|
||||||
|
|
||||||
units real
|
|
||||||
atom_style charge
|
|
||||||
|
|
||||||
read_data data.reax
|
|
||||||
orthogonal box = (0 0 0) to (9.49107 9.49107 6.99123)
|
|
||||||
2 by 2 by 1 MPI processor grid
|
|
||||||
reading atoms ...
|
|
||||||
58 atoms
|
|
||||||
|
|
||||||
#replicate 7 8 10
|
|
||||||
replicate 7 8 5
|
|
||||||
orthogonal box = (0 0 0) to (66.4375 75.9285 34.9562)
|
|
||||||
2 by 2 by 1 MPI processor grid
|
|
||||||
16240 atoms
|
|
||||||
Time spent = 0.000491619 secs
|
|
||||||
|
|
||||||
velocity all create 300.0 9999
|
|
||||||
|
|
||||||
pair_style reax
|
|
||||||
WARNING: The pair_style reax command is unsupported. Please switch to pair_style reax/c instead (../pair_reax.cpp:49)
|
|
||||||
pair_coeff * * ffield.reax 1 2 3 4
|
|
||||||
|
|
||||||
timestep 0.1
|
|
||||||
fix 2 all nve
|
|
||||||
|
|
||||||
thermo 10
|
|
||||||
thermo_style custom step temp ke pe pxx pyy pzz etotal
|
|
||||||
|
|
||||||
run 100
|
|
||||||
Neighbor list info ...
|
|
||||||
update every 1 steps, delay 10 steps, check yes
|
|
||||||
max neighbors/atom: 2000, page size: 100000
|
|
||||||
master list distance cutoff = 12
|
|
||||||
ghost atom cutoff = 12
|
|
||||||
binsize = 6, bins = 12 13 6
|
|
||||||
1 neighbor lists, perpetual/occasional/extra = 1 0 0
|
|
||||||
(1) pair reax, perpetual
|
|
||||||
attributes: half, newton off
|
|
||||||
pair build: half/bin/newtoff
|
|
||||||
stencil: half/bin/3d/newtoff
|
|
||||||
bin: standard
|
|
||||||
Per MPI rank memory allocation (min/avg/max) = 35.58 | 35.68 | 35.77 Mbytes
|
|
||||||
Step Temp KinEng PotEng Pxx Pyy Pzz TotEng
|
|
||||||
0 300 14521.612 -1616144.1 22296.712 -29858.677 5721.0922 -1601622.5
|
|
||||||
10 298.98728 14472.591 -1616093.8 21955.847 -24067.094 7389.149 -1601621.3
|
|
||||||
20 294.76158 14268.044 -1615890 19179.258 -10513.494 10789.925 -1601622
|
|
||||||
30 288.56967 13968.323 -1615591.2 13854.38 5833.0219 13949.731 -1601622.9
|
|
||||||
40 282.06725 13653.571 -1615278.2 6259.981 19406.327 14947.938 -1601624.7
|
|
||||||
50 274.84112 13303.787 -1614931.9 -2009.6844 26964.334 13346.855 -1601628.1
|
|
||||||
60 266.20153 12885.585 -1614519.8 -8441.1628 28485.533 10195.428 -1601634.2
|
|
||||||
70 259.17085 12545.262 -1614184.2 -11426.992 24941.517 6572.295 -1601639
|
|
||||||
80 259.73004 12572.33 -1614216.8 -10867.596 16928.464 3033.9024 -1601644.5
|
|
||||||
90 269.2352 13032.431 -1614679 -7962.3097 4931.5336 -280.21988 -1601646.5
|
|
||||||
100 280.67181 13586.024 -1615234.3 -3606.1482 -8769.8463 -2527.5874 -1601648.3
|
|
||||||
Loop time of 97.054 on 4 procs for 100 steps with 16240 atoms
|
|
||||||
|
|
||||||
Performance: 0.009 ns/day, 2695.944 hours/ns, 1.030 timesteps/s
|
|
||||||
99.0% CPU use with 4 MPI tasks x 1 OpenMP threads
|
|
||||||
|
|
||||||
MPI task timing breakdown:
|
|
||||||
Section | min time | avg time | max time |%varavg| %total
|
|
||||||
---------------------------------------------------------------
|
|
||||||
Pair | 94.83 | 95.764 | 96.883 | 9.2 | 98.67
|
|
||||||
Neigh | 0 | 0 | 0 | 0.0 | 0.00
|
|
||||||
Comm | 0.16123 | 1.2801 | 2.2132 | 79.9 | 1.32
|
|
||||||
Output | 0.00056076 | 0.00066662 | 0.00095987 | 0.0 | 0.00
|
|
||||||
Modify | 0.0048354 | 0.0049006 | 0.0049515 | 0.1 | 0.01
|
|
||||||
Other | | 0.004639 | | | 0.00
|
|
||||||
|
|
||||||
Nlocal: 4060 ave 4080 max 4040 min
|
|
||||||
Histogram: 2 0 0 0 0 0 0 0 0 2
|
|
||||||
Nghost: 14972 ave 14992 max 14952 min
|
|
||||||
Histogram: 2 0 0 0 0 0 0 0 0 2
|
|
||||||
Neighs: 1.8135e+06 ave 1.82186e+06 max 1.80514e+06 min
|
|
||||||
Histogram: 2 0 0 0 0 0 0 0 0 2
|
|
||||||
|
|
||||||
Total # of neighbors = 7253988
|
|
||||||
Ave neighs/atom = 446.674
|
|
||||||
Neighbor list builds = 0
|
|
||||||
Dangerous builds = 0
|
|
||||||
Total wall time: 0:01:38
|
|
||||||
@ -1,69 +0,0 @@
|
|||||||
#define PORTABLECOMMENTFLAG
|
|
||||||
#ifndef PORTABLECOMMENTFLAG
|
|
||||||
// This is just a way to have portable comments
|
|
||||||
// for both C++ and FORTRAN preprocessing.
|
|
||||||
/* ///:EOH~ */
|
|
||||||
/* */
|
|
||||||
/* This file contains array dimension parameters for all the main */
|
|
||||||
/* ReaxFF data structures, some of which need to be directly accessed */
|
|
||||||
/* by Grasp C++ functions. If they are set too small, the calculation */
|
|
||||||
/* will run out of allocated memory. If they are set too big, the machine */
|
|
||||||
/* will not be able to allocate enough memory. */
|
|
||||||
/* */
|
|
||||||
|
|
||||||
/* NNEIGHMAXDEF = Max number of neighbors / NATDEF */
|
|
||||||
/* NATDEF = Max number of atoms */
|
|
||||||
/* NATTOTDEF = Max number of global atoms */
|
|
||||||
/* NSORTDEF = Max number of atom types */
|
|
||||||
/* MBONDDEF = Max number of bonds connected to one atom */
|
|
||||||
/* NAVIBDEF = for 2nd derivatives */
|
|
||||||
/* NBOTYMDEF = Max number of bond types */
|
|
||||||
/* NVATYMDEF = Max number of valency angle types */
|
|
||||||
/* NTOTYMDEF = Max number of torsion angle types */
|
|
||||||
/* NHBTYMDEF = Max number of hydrogen bond types */
|
|
||||||
/* NODMTYMDEF = Max number of off-diagonal Morse types */
|
|
||||||
/* NBOALLMAXDEF = Max number of all bonds */
|
|
||||||
/* NBOMAXDEF = Max number of bonds */
|
|
||||||
/* NHBMAXDEF = Max number of hydrogen bonds */
|
|
||||||
/* NVAMAXDEF = Max number of valency angles */
|
|
||||||
/* NOPMAXDEF = Max number of out of plane angles */
|
|
||||||
/* NTOMAXDEF = Max number of torsion angles */
|
|
||||||
/* NPAMAXDEF = Max number of general parameters in force field */
|
|
||||||
/* NMOLMAXDEF = Max number of molecules in system */
|
|
||||||
/* NMOLSETDEF = Max number of molecules in training set */
|
|
||||||
/* MRESTRADEF = Max number of restraints */
|
|
||||||
/* MTREGDEF = Max number of temperature regimes */
|
|
||||||
/* MTZONEDEF = Max number of temperature zones */
|
|
||||||
/* MVREGDEF = Max number of volume regimes */
|
|
||||||
/* MVZONEDEF = Max number of volume zones */
|
|
||||||
/* MEREGDEF = Max number of electric field regimes */
|
|
||||||
/* MEZONEDEF = Max number of electric field zones */
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define NNEIGHMAXDEF 200
|
|
||||||
#define NATDEF 50000
|
|
||||||
#define NATTOTDEF 1
|
|
||||||
#define NSORTDEF 20
|
|
||||||
#define MBONDDEF 20
|
|
||||||
#define NAVIBDEF 50
|
|
||||||
#define NBOTYMDEF 200
|
|
||||||
#define NVATYMDEF 200
|
|
||||||
#define NTOTYMDEF 200
|
|
||||||
#define NHBTYMDEF 200
|
|
||||||
#define NODMTYMDEF 20
|
|
||||||
#define NBOALLMAXDEF 180000
|
|
||||||
#define NBOMAXDEF 90000
|
|
||||||
#define NHBMAXDEF 400000
|
|
||||||
#define NVAMAXDEF 300000
|
|
||||||
#define NOPMAXDEF 00010
|
|
||||||
#define NTOMAXDEF 200000
|
|
||||||
#define NPAMAXDEF 50
|
|
||||||
#define NMOLMAXDEF 2000
|
|
||||||
#define NMOLSETDEF 1500
|
|
||||||
#define MRESTRADEF 100
|
|
||||||
#define MTREGDEF 100
|
|
||||||
#define MTZONEDEF 5
|
|
||||||
#define MVREGDEF 100
|
|
||||||
#define MVZONEDEF 6
|
|
||||||
#define MEREGDEF 100
|
|
||||||
#define MEZONEDEF 3
|
|
||||||
File diff suppressed because it is too large
Load Diff
@ -1,48 +0,0 @@
|
|||||||
# - Find liblammps
|
|
||||||
# Find the native liblammps headers and libraries.
|
|
||||||
#
|
|
||||||
# The following variables will set:
|
|
||||||
# LAMMPS_INCLUDE_DIRS - where to find lammps/library.h, etc.
|
|
||||||
# LAMMPS_LIBRARIES - List of libraries when using lammps.
|
|
||||||
# LAMMPS_API_DEFINES - lammps library api defines
|
|
||||||
# LAMMPS_VERSION - lammps library version
|
|
||||||
# LAMMPS_FOUND - True if liblammps found.
|
|
||||||
#
|
|
||||||
# In addition a LAMMPS::LAMMPS imported target is getting created.
|
|
||||||
#
|
|
||||||
# LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
||||||
# http://lammps.sandia.gov, Sandia National Laboratories
|
|
||||||
# Steve Plimpton, sjplimp@sandia.gov
|
|
||||||
#
|
|
||||||
# Copyright (2003) Sandia Corporation. Under the terms of Contract
|
|
||||||
# DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
|
|
||||||
# certain rights in this software. This software is distributed under
|
|
||||||
# the GNU General Public License.
|
|
||||||
#
|
|
||||||
# See the README file in the top-level LAMMPS directory.
|
|
||||||
#
|
|
||||||
|
|
||||||
find_package(PkgConfig)
|
|
||||||
|
|
||||||
pkg_check_modules(PC_LAMMPS liblammps@LAMMPS_LIB_SUFFIX@)
|
|
||||||
find_path(LAMMPS_INCLUDE_DIR lammps/library.h HINTS ${PC_LAMMPS_INCLUDE_DIRS} @CMAKE_INSTALL_FULL_INCLUDEDIR@)
|
|
||||||
|
|
||||||
set(LAMMPS_VERSION @LAMMPS_VERSION@)
|
|
||||||
set(LAMMPS_API_DEFINES @LAMMPS_API_DEFINES@)
|
|
||||||
|
|
||||||
find_library(LAMMPS_LIBRARY NAMES lammps@LAMMPS_LIB_SUFFIX@ HINTS ${PC_LAMMPS_LIBRARY_DIRS} @CMAKE_INSTALL_FULL_LIBDIR@)
|
|
||||||
|
|
||||||
set(LAMMPS_INCLUDE_DIRS "${LAMMPS_INCLUDE_DIR}")
|
|
||||||
set(LAMMPS_LIBRARIES "${LAMMPS_LIBRARY}")
|
|
||||||
|
|
||||||
include(FindPackageHandleStandardArgs)
|
|
||||||
# handle the QUIETLY and REQUIRED arguments and set LAMMPS_FOUND to TRUE
|
|
||||||
# if all listed variables are TRUE
|
|
||||||
find_package_handle_standard_args(LAMMPS REQUIRED_VARS LAMMPS_LIBRARY LAMMPS_INCLUDE_DIR VERSION_VAR LAMMPS_VERSION)
|
|
||||||
|
|
||||||
mark_as_advanced(LAMMPS_INCLUDE_DIR LAMMPS_LIBRARY)
|
|
||||||
|
|
||||||
if(LAMMPS_FOUND AND NOT TARGET LAMMPS::LAMMPS)
|
|
||||||
add_library(LAMMPS::LAMMPS UNKNOWN IMPORTED)
|
|
||||||
set_target_properties(LAMMPS::LAMMPS PROPERTIES IMPORTED_LOCATION "${LAMMPS_LIBRARY}" INTERFACE_INCLUDE_DIRECTORIES "${LAMMPS_INCLUDE_DIR}" INTERFACE_COMPILE_DEFINITIONS "${LAMMPS_API_DEFINES}")
|
|
||||||
endif()
|
|
||||||
5
cmake/LAMMPSConfig.cmake.in
Normal file
5
cmake/LAMMPSConfig.cmake.in
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
include(CMakeFindDependencyMacro)
|
||||||
|
if(@BUILD_MPI@)
|
||||||
|
find_dependency(MPI REQUIRED CXX)
|
||||||
|
endif()
|
||||||
|
include("${CMAKE_CURRENT_LIST_DIR}/LAMMPS_Targets.cmake")
|
||||||
21
cmake/Modules/CheckGeneratorSupport.cmake
Normal file
21
cmake/Modules/CheckGeneratorSupport.cmake
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
# ninja-build<1.10 does not support fortran.
|
||||||
|
if(CMAKE_GENERATOR STREQUAL "Ninja")
|
||||||
|
set(CMAKE_GENERATOR_SUPPORT_FORTRAN FALSE)
|
||||||
|
execute_process(COMMAND "${CMAKE_MAKE_PROGRAM}" --version
|
||||||
|
OUTPUT_VARIABLE NINJA_VERSION
|
||||||
|
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||||
|
RESULT_VARIABLE _Ninja_version_result
|
||||||
|
)
|
||||||
|
if(_Ninja_version_result)
|
||||||
|
message(WARNING "Unable to determine ninja version: ${_Ninja_version_result}, assuming fortran isn't supported")
|
||||||
|
elseif(NINJA_VERSION VERSION_LESS "1.10")
|
||||||
|
message(WARNING "Ninja build tool too old, to compile Fortran code, please install ninja-1.10 or newer")
|
||||||
|
else()
|
||||||
|
set(CMAKE_GENERATOR_SUPPORT_FORTRAN TRUE)
|
||||||
|
endif()
|
||||||
|
else()
|
||||||
|
set(CMAKE_GENERATOR_SUPPORT_FORTRAN TRUE)
|
||||||
|
if(NOT CMAKE_GENERATOR STREQUAL "Unix Makefiles")
|
||||||
|
message(WARNING "Assuming fortran is supported for ${CMAKE_GENERATOR}")
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
@ -15,14 +15,35 @@ if(ENABLE_COVERAGE)
|
|||||||
gen_coverage_xml
|
gen_coverage_xml
|
||||||
COMMAND ${GCOVR_BINARY} -s -x -r ${ABSOLUTE_LAMMPS_SOURCE_DIR} --object-directory=${CMAKE_BINARY_DIR} -o coverage.xml
|
COMMAND ${GCOVR_BINARY} -s -x -r ${ABSOLUTE_LAMMPS_SOURCE_DIR} --object-directory=${CMAKE_BINARY_DIR} -o coverage.xml
|
||||||
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
|
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
|
||||||
COMMENT "Generating XML Coverage Report..."
|
COMMENT "Generating XML coverage report..."
|
||||||
)
|
)
|
||||||
|
|
||||||
|
set(COVERAGE_HTML_DIR ${CMAKE_BINARY_DIR}/coverage_html)
|
||||||
|
|
||||||
|
add_custom_target(coverage_html_folder
|
||||||
|
COMMAND ${CMAKE_COMMAND} -E make_directory ${COVERAGE_HTML_DIR})
|
||||||
|
|
||||||
add_custom_target(
|
add_custom_target(
|
||||||
gen_coverage_html
|
gen_coverage_html
|
||||||
COMMAND ${GCOVR_BINARY} -s --html --html-details -r ${ABSOLUTE_LAMMPS_SOURCE_DIR} --object-directory=${CMAKE_BINARY_DIR} -o coverage.html
|
COMMAND ${GCOVR_BINARY} -s --html --html-details -r ${ABSOLUTE_LAMMPS_SOURCE_DIR} --object-directory=${CMAKE_BINARY_DIR} -o ${COVERAGE_HTML_DIR}/index.html
|
||||||
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
|
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
|
||||||
COMMENT "Generating HTML Coverage Report..."
|
COMMENT "Generating HTML coverage report..."
|
||||||
)
|
)
|
||||||
|
add_dependencies(gen_coverage_html coverage_html_folder)
|
||||||
|
|
||||||
|
add_custom_target(clean_coverage_html
|
||||||
|
${CMAKE_COMMAND} -E remove_directory ${COVERAGE_HTML_DIR}
|
||||||
|
COMMENT "Deleting HTML coverage report..."
|
||||||
|
)
|
||||||
|
|
||||||
|
add_custom_target(reset_coverage
|
||||||
|
${CMAKE_COMMAND} -E remove -f */*.gcda */*/*.gcda */*/*/*.gcda
|
||||||
|
*/*/*/*/*.gcda */*/*/*/*/*.gcda */*/*/*/*/*/*.gcda
|
||||||
|
*/*/*/*/*/*/*/*.gcda */*/*/*/*/*/*/*/*.gcda
|
||||||
|
*/*/*/*/*/*/*/*/*/*.gcda */*/*/*/*/*/*/*/*/*/*.gcda
|
||||||
|
WORKIND_DIRECTORY ${CMAKE_BINARY_DIR}
|
||||||
|
COMMENT "Deleting coverage data files..."
|
||||||
|
)
|
||||||
|
add_dependencies(reset_coverage clean_coverage_html)
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|||||||
34
cmake/Modules/CodingStandard.cmake
Normal file
34
cmake/Modules/CodingStandard.cmake
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
if(CMAKE_VERSION VERSION_LESS 3.12)
|
||||||
|
find_package(PythonInterp 3.5 QUIET) # Deprecated since version 3.12
|
||||||
|
if(PYTHONINTERP_FOUND)
|
||||||
|
set(Python3_EXECUTABLE ${PYTHON_EXECUTABLE})
|
||||||
|
set(Python3_VERSION ${PYTHON_VERSION_STRING})
|
||||||
|
endif()
|
||||||
|
else()
|
||||||
|
find_package(Python3 COMPONENTS Interpreter QUIET)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if (Python3_EXECUTABLE)
|
||||||
|
if(Python3_VERSION VERSION_GREATER_EQUAL 3.5)
|
||||||
|
add_custom_target(
|
||||||
|
check-whitespace
|
||||||
|
${Python3_EXECUTABLE} ${LAMMPS_TOOLS_DIR}/coding_standard/whitespace.py .
|
||||||
|
WORKING_DIRECTORY ${LAMMPS_DIR}
|
||||||
|
COMMENT "Check for whitespace errors")
|
||||||
|
add_custom_target(
|
||||||
|
check-permissions
|
||||||
|
${Python3_EXECUTABLE} ${LAMMPS_TOOLS_DIR}/coding_standard/permissions.py .
|
||||||
|
WORKING_DIRECTORY ${LAMMPS_DIR}
|
||||||
|
COMMENT "Check for permission errors")
|
||||||
|
add_custom_target(
|
||||||
|
fix-whitespace
|
||||||
|
${Python3_EXECUTABLE} ${LAMMPS_TOOLS_DIR}/coding_standard/whitespace.py -f .
|
||||||
|
WORKING_DIRECTORY ${LAMMPS_DIR}
|
||||||
|
COMMENT "Fix whitespace errors")
|
||||||
|
add_custom_target(
|
||||||
|
fix-permissions
|
||||||
|
${Python3_EXECUTABLE} ${LAMMPS_TOOLS_DIR}/coding_standard/permissions.py -f .
|
||||||
|
WORKING_DIRECTORY ${LAMMPS_DIR}
|
||||||
|
COMMENT "Fix permission errors")
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
@ -1,13 +1,20 @@
|
|||||||
###############################################################################
|
###############################################################################
|
||||||
# Build documentation
|
# Build documentation
|
||||||
###############################################################################
|
###############################################################################
|
||||||
option(BUILD_DOC "Build LAMMPS documentation" OFF)
|
option(BUILD_DOC "Build LAMMPS HTML documentation" OFF)
|
||||||
if(BUILD_DOC)
|
|
||||||
include(ProcessorCount)
|
|
||||||
ProcessorCount(NPROCS)
|
|
||||||
find_package(PythonInterp 3 REQUIRED)
|
|
||||||
|
|
||||||
set(VIRTUALENV ${PYTHON_EXECUTABLE} -m virtualenv)
|
if(BUILD_DOC)
|
||||||
|
# Sphinx 3.x requires at least Python 3.5
|
||||||
|
if(CMAKE_VERSION VERSION_LESS 3.12)
|
||||||
|
find_package(PythonInterp 3.5 REQUIRED)
|
||||||
|
set(VIRTUALENV ${PYTHON_EXECUTABLE} -m virtualenv -p ${PYTHON_EXECUTABLE})
|
||||||
|
else()
|
||||||
|
find_package(Python3 REQUIRED COMPONENTS Interpreter)
|
||||||
|
if(Python3_VERSION VERSION_LESS 3.5)
|
||||||
|
message(FATAL_ERROR "Python 3.5 and up is required to build the HTML documentation")
|
||||||
|
endif()
|
||||||
|
set(VIRTUALENV ${Python3_EXECUTABLE} -m virtualenv -p ${Python3_EXECUTABLE})
|
||||||
|
endif()
|
||||||
|
|
||||||
file(GLOB DOC_SOURCES ${LAMMPS_DOC_DIR}/src/[^.]*.rst)
|
file(GLOB DOC_SOURCES ${LAMMPS_DOC_DIR}/src/[^.]*.rst)
|
||||||
|
|
||||||
@ -26,15 +33,55 @@ if(BUILD_DOC)
|
|||||||
COMMAND ${DOCENV_BINARY_DIR}/pip install --upgrade ${LAMMPS_DOC_DIR}/utils/converters
|
COMMAND ${DOCENV_BINARY_DIR}/pip install --upgrade ${LAMMPS_DOC_DIR}/utils/converters
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# download mathjax distribution and unpack to folder "mathjax"
|
||||||
|
if(NOT EXISTS ${CMAKE_CURRENT_BINARY_DIR}/mathjax/es5)
|
||||||
|
file(DOWNLOAD "https://github.com/mathjax/MathJax/archive/3.0.5.tar.gz"
|
||||||
|
"${CMAKE_CURRENT_BINARY_DIR}/mathjax.tar.gz"
|
||||||
|
EXPECTED_MD5 5d9d3799cce77a1a95eee6be04eb68e7)
|
||||||
|
execute_process(COMMAND ${CMAKE_COMMAND} -E tar xzf mathjax.tar.gz WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
|
||||||
|
file(GLOB MATHJAX_VERSION_DIR ${CMAKE_CURRENT_BINARY_DIR}/MathJax-*)
|
||||||
|
execute_process(COMMAND ${CMAKE_COMMAND} -E rename ${MATHJAX_VERSION_DIR} ${CMAKE_CURRENT_BINARY_DIR}/mathjax)
|
||||||
|
endif()
|
||||||
|
file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/html/_static/mathjax)
|
||||||
|
file(COPY ${CMAKE_CURRENT_BINARY_DIR}/mathjax/es5 DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/html/_static/mathjax/)
|
||||||
|
|
||||||
|
# for increased browser compatibility
|
||||||
|
if(NOT EXISTS ${CMAKE_CURRENT_BINARY_DIR}/html/_static/polyfill.js)
|
||||||
|
file(DOWNLOAD "https://polyfill.io/v3/polyfill.min.js?features=es6"
|
||||||
|
"${CMAKE_CURRENT_BINARY_DIR}/html/_static/polyfill.js")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# note, this may run in parallel with other tasks, so we must not use multiple processes here
|
||||||
add_custom_command(
|
add_custom_command(
|
||||||
OUTPUT html
|
OUTPUT html
|
||||||
DEPENDS ${DOC_SOURCES} docenv requirements.txt
|
DEPENDS ${DOC_SOURCES} docenv requirements.txt
|
||||||
COMMAND ${DOCENV_BINARY_DIR}/sphinx-build -j ${NPROCS} -b html -c ${LAMMPS_DOC_DIR}/utils/sphinx-config -d ${CMAKE_BINARY_DIR}/doctrees ${LAMMPS_DOC_DIR}/src html
|
COMMAND ${DOCENV_BINARY_DIR}/sphinx-build -b html -c ${LAMMPS_DOC_DIR}/utils/sphinx-config -d ${CMAKE_BINARY_DIR}/doctrees ${LAMMPS_DOC_DIR}/src html
|
||||||
|
COMMAND ${CMAKE_COMMAND} -E create_symlink Manual.html ${CMAKE_CURRENT_BINARY_DIR}/html/index.html
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# copy selected image files to html output tree
|
||||||
|
file(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/html/JPG)
|
||||||
|
set(HTML_EXTRA_IMAGES balance_nonuniform.jpg balance_rcb.jpg
|
||||||
|
balance_uniform.jpg bow_tutorial_01.png bow_tutorial_02.png
|
||||||
|
bow_tutorial_03.png bow_tutorial_04.png bow_tutorial_05.png
|
||||||
|
dump1.jpg dump2.jpg examples_mdpd.gif gran_funnel.png gran_mixer.png
|
||||||
|
hop1.jpg hop2.jpg saed_ewald_intersect.jpg saed_mesh.jpg
|
||||||
|
screenshot_atomeye.jpg screenshot_gl.jpg screenshot_pymol.jpg
|
||||||
|
screenshot_vmd.jpg sinusoid.jpg xrd_mesh.jpg)
|
||||||
|
set(HTML_IMAGE_TARGETS "")
|
||||||
|
foreach(_IMG ${HTML_EXTRA_IMAGES})
|
||||||
|
string(PREPEND _IMG JPG/)
|
||||||
|
list(APPEND HTML_IMAGE_TARGETS "${CMAKE_CURRENT_BINARY_DIR}/html/${_IMG}")
|
||||||
|
add_custom_command(
|
||||||
|
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/html/${_IMG}
|
||||||
|
DEPENDS ${LAMMPS_DOC_DIR}/src/${_IMG} ${CMAKE_CURRENT_BINARY_DIR}/html/JPG
|
||||||
|
COMMAND ${CMAKE_COMMAND} -E copy ${LAMMPS_DOC_DIR}/src/${_IMG} ${CMAKE_BINARY_DIR}/html/${_IMG}
|
||||||
|
)
|
||||||
|
endforeach()
|
||||||
|
|
||||||
add_custom_target(
|
add_custom_target(
|
||||||
doc ALL
|
doc ALL
|
||||||
DEPENDS html
|
DEPENDS html ${CMAKE_CURRENT_BINARY_DIR}/html/_static/mathjax/es5 ${HTML_IMAGE_TARGETS}
|
||||||
SOURCES ${LAMMPS_DOC_DIR}/utils/requirements.txt ${DOC_SOURCES}
|
SOURCES ${LAMMPS_DOC_DIR}/utils/requirements.txt ${DOC_SOURCES}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
16
cmake/Modules/FindCUB.cmake
Normal file
16
cmake/Modules/FindCUB.cmake
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
# - Find CUB
|
||||||
|
# Find the CUB header library
|
||||||
|
#
|
||||||
|
# CUB_INCLUDE_DIRS - where to find cub/cub.cuh
|
||||||
|
# CUB_FOUND - True if CUB found.
|
||||||
|
#
|
||||||
|
|
||||||
|
find_path(CUB_INCLUDE_DIR cub.cuh PATH_SUFFIXES cub)
|
||||||
|
|
||||||
|
include(FindPackageHandleStandardArgs)
|
||||||
|
# handle the QUIETLY and REQUIRED arguments and set CUB_FOUND to TRUE
|
||||||
|
# if all listed variables are TRUE
|
||||||
|
|
||||||
|
find_package_handle_standard_args(CUB DEFAULT_MSG CUB_INCLUDE_DIR)
|
||||||
|
|
||||||
|
mark_as_advanced(CUB_INCLUDE_DIR)
|
||||||
46
cmake/Modules/FindClangFormat.cmake
Normal file
46
cmake/Modules/FindClangFormat.cmake
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
# Find clang-format
|
||||||
|
find_program(ClangFormat_EXECUTABLE NAMES clang-format
|
||||||
|
clang-format-10.0
|
||||||
|
clang-format-9.0
|
||||||
|
clang-format-8.0
|
||||||
|
clang-format-7.0
|
||||||
|
clang-format-6.0
|
||||||
|
DOC "clang-format executable")
|
||||||
|
mark_as_advanced(ClangFormat_EXECUTABLE)
|
||||||
|
|
||||||
|
if(ClangFormat_EXECUTABLE)
|
||||||
|
# find version
|
||||||
|
execute_process(COMMAND ${ClangFormat_EXECUTABLE} --version
|
||||||
|
OUTPUT_VARIABLE clang_format_version
|
||||||
|
ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||||
|
|
||||||
|
|
||||||
|
if(clang_format_version MATCHES "^clang-format version .*")
|
||||||
|
# Arch Linux
|
||||||
|
# clang-format version 10.0.0
|
||||||
|
|
||||||
|
# Ubuntu 18.04 LTS Output
|
||||||
|
# clang-format version 6.0.0-1ubuntu2 (tags/RELEASE_600/final)
|
||||||
|
string(REGEX REPLACE "clang-format version ([0-9.]+).*"
|
||||||
|
"\\1"
|
||||||
|
ClangFormat_VERSION
|
||||||
|
"${clang_format_version}")
|
||||||
|
elseif(clang_format_version MATCHES ".*LLVM version .*")
|
||||||
|
# CentOS 7 Output
|
||||||
|
# LLVM (http://llvm.org/):
|
||||||
|
# LLVM version 3.4.2
|
||||||
|
# Optimized build.
|
||||||
|
# Built Nov 1 2018 (15:06:24).
|
||||||
|
# Default target: x86_64-redhat-linux-gnu
|
||||||
|
# Host CPU: x86-64
|
||||||
|
string(REGEX REPLACE ".*LLVM version ([0-9.]+).*"
|
||||||
|
"\\1"
|
||||||
|
ClangFormat_VERSION
|
||||||
|
"${clang_format_version}")
|
||||||
|
else()
|
||||||
|
set(ClangFormat_VERSION "0.0")
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
include(FindPackageHandleStandardArgs)
|
||||||
|
find_package_handle_standard_args(ClangFormat REQUIRED_VARS ClangFormat_EXECUTABLE VERSION_VAR ClangFormat_VERSION)
|
||||||
@ -1,20 +1,18 @@
|
|||||||
# - Find fftw3
|
# - Find fftw3
|
||||||
# Find the native FFTW3 headers and libraries.
|
# Find the native double precision FFTW3 headers and libraries.
|
||||||
#
|
#
|
||||||
# FFTW3_INCLUDE_DIRS - where to find fftw3.h, etc.
|
# FFTW3_INCLUDE_DIRS - where to find fftw3.h, etc.
|
||||||
# FFTW3_LIBRARIES - List of libraries when using fftw3.
|
# FFTW3_LIBRARIES - List of libraries when using fftw3.
|
||||||
# FFTW3_FOUND - True if fftw3 found.
|
# FFTW3_OMP_LIBRARIES - List of libraries when using fftw3.
|
||||||
|
# FFTW3_FOUND - True if fftw3 found.
|
||||||
#
|
#
|
||||||
|
|
||||||
find_package(PkgConfig)
|
find_package(PkgConfig)
|
||||||
|
|
||||||
pkg_check_modules(PC_FFTW3 fftw3)
|
pkg_check_modules(PC_FFTW3 fftw3)
|
||||||
find_path(FFTW3_INCLUDE_DIR fftw3.h HINTS ${PC_FFTW3_INCLUDE_DIRS})
|
find_path(FFTW3_INCLUDE_DIR fftw3.h HINTS ${PC_FFTW3_INCLUDE_DIRS})
|
||||||
|
|
||||||
find_library(FFTW3_LIBRARY NAMES fftw3 HINTS ${PC_FFTW3_LIBRARY_DIRS})
|
find_library(FFTW3_LIBRARY NAMES fftw3 HINTS ${PC_FFTW3_LIBRARY_DIRS})
|
||||||
|
find_library(FFTW3_OMP_LIBRARY NAMES fftw3_omp HINTS ${PC_FFTW3_LIBRARY_DIRS})
|
||||||
set(FFTW3_LIBRARIES ${FFTW3_LIBRARY})
|
|
||||||
set(FFTW3_INCLUDE_DIRS ${FFTW3_INCLUDE_DIR})
|
|
||||||
|
|
||||||
include(FindPackageHandleStandardArgs)
|
include(FindPackageHandleStandardArgs)
|
||||||
# handle the QUIETLY and REQUIRED arguments and set FFTW3_FOUND to TRUE
|
# handle the QUIETLY and REQUIRED arguments and set FFTW3_FOUND to TRUE
|
||||||
@ -22,4 +20,28 @@ include(FindPackageHandleStandardArgs)
|
|||||||
|
|
||||||
find_package_handle_standard_args(FFTW3 DEFAULT_MSG FFTW3_LIBRARY FFTW3_INCLUDE_DIR)
|
find_package_handle_standard_args(FFTW3 DEFAULT_MSG FFTW3_LIBRARY FFTW3_INCLUDE_DIR)
|
||||||
|
|
||||||
mark_as_advanced(FFTW3_INCLUDE_DIR FFTW3_LIBRARY )
|
# Copy the results to the output variables and target.
|
||||||
|
if(FFTW3_FOUND)
|
||||||
|
set(FFTW3_LIBRARIES ${FFTW3_LIBRARY} )
|
||||||
|
set(FFTW3_INCLUDE_DIRS ${FFTW3_INCLUDE_DIR} )
|
||||||
|
|
||||||
|
if(NOT TARGET FFTW3::FFTW3)
|
||||||
|
add_library(FFTW3::FFTW3 UNKNOWN IMPORTED)
|
||||||
|
set_target_properties(FFTW3::FFTW3 PROPERTIES
|
||||||
|
IMPORTED_LINK_INTERFACE_LANGUAGES "C"
|
||||||
|
IMPORTED_LOCATION "${FFTW3_LIBRARY}"
|
||||||
|
INTERFACE_INCLUDE_DIRECTORIES "${FFTW3_INCLUDE_DIRS}")
|
||||||
|
endif()
|
||||||
|
if(FFTW3_OMP_LIBRARY)
|
||||||
|
set(FFTW3_OMP_LIBRARIES ${FFTW3_OMP_LIBRARY})
|
||||||
|
if(NOT TARGET FFTW3::FFTW3_OMP)
|
||||||
|
add_library(FFTW3::FFTW3_OMP UNKNOWN IMPORTED)
|
||||||
|
set_target_properties(FFTW3::FFTW3_OMP PROPERTIES
|
||||||
|
IMPORTED_LINK_INTERFACE_LANGUAGES "C"
|
||||||
|
IMPORTED_LOCATION "${FFTW3_OMP_LIBRARY}"
|
||||||
|
INTERFACE_INCLUDE_DIRECTORIES "${FFTW3_INCLUDE_DIRS}")
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
mark_as_advanced(FFTW3_INCLUDE_DIR FFTW3_LIBRARY FFTW3_OMP_LIBRARY)
|
||||||
|
|||||||
@ -1,8 +1,8 @@
|
|||||||
# - Find fftw3f
|
# Find the native single precision FFTW3 headers and libraries.
|
||||||
# Find the native FFTW3F headers and libraries.
|
|
||||||
#
|
#
|
||||||
# FFTW3F_INCLUDE_DIRS - where to find fftw3f.h, etc.
|
# FFTW3F_INCLUDE_DIRS - where to find fftw3f.h, etc.
|
||||||
# FFTW3F_LIBRARIES - List of libraries when using fftw3f.
|
# FFTW3F_LIBRARIES - List of libraries when using fftw3f.
|
||||||
|
# FFTW3F_OMP_LIBRARIES - List of libraries when using fftw3.
|
||||||
# FFTW3F_FOUND - True if fftw3f found.
|
# FFTW3F_FOUND - True if fftw3f found.
|
||||||
#
|
#
|
||||||
|
|
||||||
@ -10,11 +10,8 @@ find_package(PkgConfig)
|
|||||||
|
|
||||||
pkg_check_modules(PC_FFTW3F fftw3f)
|
pkg_check_modules(PC_FFTW3F fftw3f)
|
||||||
find_path(FFTW3F_INCLUDE_DIR fftw3.h HINTS ${PC_FFTW3F_INCLUDE_DIRS})
|
find_path(FFTW3F_INCLUDE_DIR fftw3.h HINTS ${PC_FFTW3F_INCLUDE_DIRS})
|
||||||
|
|
||||||
find_library(FFTW3F_LIBRARY NAMES fftw3f HINTS ${PC_FFTW3F_LIBRARY_DIRS})
|
find_library(FFTW3F_LIBRARY NAMES fftw3f HINTS ${PC_FFTW3F_LIBRARY_DIRS})
|
||||||
|
find_library(FFTW3F_OMP_LIBRARY NAMES fftw3f_omp HINTS ${PC_FFTW3F_LIBRARY_DIRS})
|
||||||
set(FFTW3F_LIBRARIES ${FFTW3F_LIBRARY})
|
|
||||||
set(FFTW3F_INCLUDE_DIRS ${FFTW3F_INCLUDE_DIR})
|
|
||||||
|
|
||||||
include(FindPackageHandleStandardArgs)
|
include(FindPackageHandleStandardArgs)
|
||||||
# handle the QUIETLY and REQUIRED arguments and set FFTW3F_FOUND to TRUE
|
# handle the QUIETLY and REQUIRED arguments and set FFTW3F_FOUND to TRUE
|
||||||
@ -22,4 +19,28 @@ include(FindPackageHandleStandardArgs)
|
|||||||
|
|
||||||
find_package_handle_standard_args(FFTW3F DEFAULT_MSG FFTW3F_LIBRARY FFTW3F_INCLUDE_DIR)
|
find_package_handle_standard_args(FFTW3F DEFAULT_MSG FFTW3F_LIBRARY FFTW3F_INCLUDE_DIR)
|
||||||
|
|
||||||
mark_as_advanced(FFTW3F_INCLUDE_DIR FFTW3F_LIBRARY )
|
# Copy the results to the output variables and target.
|
||||||
|
if(FFTW3F_FOUND)
|
||||||
|
set(FFTW3F_LIBRARIES ${FFTW3F_LIBRARY} )
|
||||||
|
set(FFTW3F_INCLUDE_DIRS ${FFTW3F_INCLUDE_DIR} )
|
||||||
|
|
||||||
|
if(NOT TARGET FFTW3F::FFTW3F)
|
||||||
|
add_library(FFTW3F::FFTW3F UNKNOWN IMPORTED)
|
||||||
|
set_target_properties(FFTW3F::FFTW3F PROPERTIES
|
||||||
|
IMPORTED_LINK_INTERFACE_LANGUAGES "C"
|
||||||
|
IMPORTED_LOCATION "${FFTW3F_LIBRARY}"
|
||||||
|
INTERFACE_INCLUDE_DIRECTORIES "${FFTW3F_INCLUDE_DIRS}")
|
||||||
|
endif()
|
||||||
|
if(FFTW3F_OMP_LIBRARY)
|
||||||
|
set(FFTW3F_OMP_LIBRARIES ${FFTW3F_OMP_LIBRARY})
|
||||||
|
if(NOT TARGET FFTW3F::FFTW3F_OMP)
|
||||||
|
add_library(FFTW3F::FFTW3F_OMP UNKNOWN IMPORTED)
|
||||||
|
set_target_properties(FFTW3F::FFTW3F_OMP PROPERTIES
|
||||||
|
IMPORTED_LINK_INTERFACE_LANGUAGES "C"
|
||||||
|
IMPORTED_LOCATION "${FFTW3F_OMP_LIBRARY}"
|
||||||
|
INTERFACE_INCLUDE_DIRECTORIES "${FFTW3F_INCLUDE_DIRS}")
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
mark_as_advanced(FFTW3F_INCLUDE_DIR FFTW3F_LIBRARY FFTW3F_OMP_LIBRARY)
|
||||||
|
|||||||
@ -1,85 +0,0 @@
|
|||||||
#
|
|
||||||
# CDDL HEADER START
|
|
||||||
#
|
|
||||||
# The contents of this file are subject to the terms of the Common Development
|
|
||||||
# and Distribution License Version 1.0 (the "License").
|
|
||||||
#
|
|
||||||
# You can obtain a copy of the license at
|
|
||||||
# http://www.opensource.org/licenses/CDDL-1.0. See the License for the
|
|
||||||
# specific language governing permissions and limitations under the License.
|
|
||||||
#
|
|
||||||
# When distributing Covered Code, include this CDDL HEADER in each file and
|
|
||||||
# include the License file in a prominent location with the name LICENSE.CDDL.
|
|
||||||
# If applicable, add the following below this CDDL HEADER, with the fields
|
|
||||||
# enclosed by brackets "[]" replaced with your own identifying information:
|
|
||||||
#
|
|
||||||
# Portions Copyright (c) [yyyy] [name of copyright owner]. All rights reserved.
|
|
||||||
#
|
|
||||||
# CDDL HEADER END
|
|
||||||
#
|
|
||||||
|
|
||||||
#
|
|
||||||
# Copyright (c) 2013--2019, Regents of the University of Minnesota.
|
|
||||||
# All rights reserved.
|
|
||||||
#
|
|
||||||
# Contributors:
|
|
||||||
# Richard Berger
|
|
||||||
# Christoph Junghans
|
|
||||||
# Ryan S. Elliott
|
|
||||||
#
|
|
||||||
|
|
||||||
# - Find KIM-API
|
|
||||||
#
|
|
||||||
# sets standard pkg_check_modules variables plus:
|
|
||||||
#
|
|
||||||
# KIM-API-CMAKE_C_COMPILER
|
|
||||||
# KIM-API-CMAKE_CXX_COMPILER
|
|
||||||
# KIM-API-CMAKE_Fortran_COMPILER
|
|
||||||
#
|
|
||||||
|
|
||||||
function(_KIMAPI_GET_VERSION _OUT_ver _version_hdr)
|
|
||||||
if(NOT EXISTS ${_version_hdr})
|
|
||||||
message(FATAL_ERROR "Header file ${_version_hdr} not found (check value of KIM-API_INCLUDE_DIR)")
|
|
||||||
endif()
|
|
||||||
foreach(_var KIM_VERSION_MAJOR KIM_VERSION_MINOR KIM_VERSION_PATCH)
|
|
||||||
file(STRINGS ${_version_hdr} _contents REGEX "#define ${_var}[ \t]+")
|
|
||||||
if(_contents)
|
|
||||||
string(REGEX REPLACE ".*#define ${_var}[ \t]+([0-9]+).*" "\\1" _${_var} "${_contents}")
|
|
||||||
if(${_${_var}} STREQUAL "")
|
|
||||||
message(FATAL_ERROR "Version parsing failed for ${_var} in ${_version_hdr}, got empty return!")
|
|
||||||
elseif(NOT ${_${_var}} MATCHES "^[0-9]+$")
|
|
||||||
message(FATAL_ERROR "Version parsing failed for ${_var} in ${_version_hdr}, excepted a number but got ${_${_var}}!")
|
|
||||||
endif()
|
|
||||||
else()
|
|
||||||
message(FATAL_ERROR "No ${_var} line found in include file ${_version_hdr}")
|
|
||||||
endif()
|
|
||||||
endforeach()
|
|
||||||
set(${_OUT_ver} ${_KIM_VERSION_MAJOR}.${_KIM_VERSION_MINOR}.${_KIM_VERSION_PATCH} PARENT_SCOPE)
|
|
||||||
endfunction()
|
|
||||||
|
|
||||||
if(KIM-API_FIND_QUIETLY)
|
|
||||||
set(REQ_OR_QUI "QUIET")
|
|
||||||
else()
|
|
||||||
set(REQ_OR_QUI "REQUIRED")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
find_package(PkgConfig ${REQ_OR_QUI})
|
|
||||||
include(FindPackageHandleStandardArgs)
|
|
||||||
|
|
||||||
pkg_check_modules(KIM-API ${REQ_OR_QUI} libkim-api>=2.0)
|
|
||||||
|
|
||||||
if(KIM-API_FOUND)
|
|
||||||
pkg_get_variable(KIM-API-CMAKE_C_COMPILER libkim-api CMAKE_C_COMPILER)
|
|
||||||
pkg_get_variable(KIM-API-CMAKE_CXX_COMPILER libkim-api CMAKE_CXX_COMPILER)
|
|
||||||
pkg_get_variable(KIM-API_CMAKE_Fortran_COMPILER libkim-api CMAKE_Fortran_COMPILER)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(KIM-API_INCLUDEDIR)
|
|
||||||
_KIMAPI_GET_VERSION(KIM-API_VERSION ${KIM-API_INCLUDEDIR}/KIM_Version.h)
|
|
||||||
else()
|
|
||||||
set(KIM-API_VERSION 0)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# handle the QUIETLY and REQUIRED arguments and set KIM-API_FOUND to TRUE
|
|
||||||
# if all listed variables are TRUE
|
|
||||||
find_package_handle_standard_args(KIM-API REQUIRED_VARS KIM-API_LIBRARIES VERSION_VAR KIM-API_VERSION)
|
|
||||||
@ -1,18 +0,0 @@
|
|||||||
# - Find latte
|
|
||||||
# Find the native LATTE libraries.
|
|
||||||
#
|
|
||||||
# LATTE_LIBRARIES - List of libraries when using latte.
|
|
||||||
# LATTE_FOUND - True if latte found.
|
|
||||||
#
|
|
||||||
|
|
||||||
find_library(LATTE_LIBRARY NAMES latte)
|
|
||||||
|
|
||||||
set(LATTE_LIBRARIES ${LATTE_LIBRARY})
|
|
||||||
|
|
||||||
include(FindPackageHandleStandardArgs)
|
|
||||||
# handle the QUIETLY and REQUIRED arguments and set LATTE_FOUND to TRUE
|
|
||||||
# if all listed variables are TRUE
|
|
||||||
|
|
||||||
find_package_handle_standard_args(LATTE DEFAULT_MSG LATTE_LIBRARY)
|
|
||||||
|
|
||||||
mark_as_advanced(LATTE_LIBRARY)
|
|
||||||
@ -10,13 +10,22 @@ find_path(MKL_INCLUDE_DIR mkl_dfti.h HINTS $ENV{MKLROOT}/include)
|
|||||||
|
|
||||||
find_library(MKL_LIBRARY NAMES mkl_rt HINTS $ENV{MKLROOT}/lib $ENV{MKLROOT}/lib/intel64)
|
find_library(MKL_LIBRARY NAMES mkl_rt HINTS $ENV{MKLROOT}/lib $ENV{MKLROOT}/lib/intel64)
|
||||||
|
|
||||||
set(MKL_LIBRARIES ${MKL_LIBRARY})
|
|
||||||
set(MKL_INCLUDE_DIRS ${MKL_INCLUDE_DIR})
|
|
||||||
|
|
||||||
include(FindPackageHandleStandardArgs)
|
include(FindPackageHandleStandardArgs)
|
||||||
# handle the QUIETLY and REQUIRED arguments and set MKL_FOUND to TRUE
|
# handle the QUIETLY and REQUIRED arguments and set MKL_FOUND to TRUE
|
||||||
# if all listed variables are TRUE
|
# if all listed variables are TRUE
|
||||||
|
|
||||||
find_package_handle_standard_args(MKL DEFAULT_MSG MKL_LIBRARY MKL_INCLUDE_DIR)
|
find_package_handle_standard_args(MKL DEFAULT_MSG MKL_LIBRARY MKL_INCLUDE_DIR)
|
||||||
|
|
||||||
|
if(MKL_FOUND)
|
||||||
|
set(MKL_LIBRARIES ${MKL_LIBRARY})
|
||||||
|
set(MKL_INCLUDE_DIRS ${MKL_INCLUDE_DIR})
|
||||||
|
|
||||||
|
if(NOT TARGET MKL::MKL)
|
||||||
|
add_library(MKL::MKL UNKNOWN IMPORTED)
|
||||||
|
set_target_properties(MKL::MKL PROPERTIES
|
||||||
|
IMPORTED_LOCATION "${MKL_LIBRARY}"
|
||||||
|
INTERFACE_INCLUDE_DIRECTORIES "${MKL_INCLUDE_DIR}")
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
mark_as_advanced(MKL_INCLUDE_DIR MKL_LIBRARY )
|
mark_as_advanced(MKL_INCLUDE_DIR MKL_LIBRARY )
|
||||||
|
|||||||
@ -10,13 +10,23 @@ find_path(MSCG_INCLUDE_DIR mscg.h PATH_SUFFIXES mscg)
|
|||||||
|
|
||||||
find_library(MSCG_LIBRARY NAMES mscg)
|
find_library(MSCG_LIBRARY NAMES mscg)
|
||||||
|
|
||||||
set(MSCG_LIBRARIES ${MSCG_LIBRARY})
|
|
||||||
set(MSCG_INCLUDE_DIRS ${MSCG_INCLUDE_DIR})
|
|
||||||
|
|
||||||
include(FindPackageHandleStandardArgs)
|
include(FindPackageHandleStandardArgs)
|
||||||
# handle the QUIETLY and REQUIRED arguments and set MSCG_FOUND to TRUE
|
# handle the QUIETLY and REQUIRED arguments and set MSCG_FOUND to TRUE
|
||||||
# if all listed variables are TRUE
|
# if all listed variables are TRUE
|
||||||
|
|
||||||
find_package_handle_standard_args(MSCG DEFAULT_MSG MSCG_LIBRARY MSCG_INCLUDE_DIR)
|
find_package_handle_standard_args(MSCG DEFAULT_MSG MSCG_LIBRARY MSCG_INCLUDE_DIR)
|
||||||
|
|
||||||
|
# Copy the results to the output variables and target.
|
||||||
|
if(MSCG_FOUND)
|
||||||
|
set(MSCG_LIBRARIES ${MSCG_LIBRARY})
|
||||||
|
set(MSCG_INCLUDE_DIRS ${MSCG_INCLUDE_DIR})
|
||||||
|
|
||||||
|
if(NOT TARGET MSCG::MSCG)
|
||||||
|
add_library(MSCG::MSCG UNKNOWN IMPORTED)
|
||||||
|
set_target_properties(MSCG::MSCG PROPERTIES
|
||||||
|
IMPORTED_LOCATION "${MSCG_LIBRARY}"
|
||||||
|
INTERFACE_INCLUDE_DIRECTORIES "${MSCG_INCLUDE_DIR}")
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
mark_as_advanced(MSCG_INCLUDE_DIR MSCG_LIBRARY )
|
mark_as_advanced(MSCG_INCLUDE_DIR MSCG_LIBRARY )
|
||||||
|
|||||||
@ -46,10 +46,14 @@ endif()
|
|||||||
find_path (NETCDF_INCLUDE_DIR netcdf.h
|
find_path (NETCDF_INCLUDE_DIR netcdf.h
|
||||||
HINTS "${NETCDF_DIR}/include")
|
HINTS "${NETCDF_DIR}/include")
|
||||||
mark_as_advanced (NETCDF_INCLUDE_DIR)
|
mark_as_advanced (NETCDF_INCLUDE_DIR)
|
||||||
|
|
||||||
set (NETCDF_C_INCLUDE_DIRS ${NETCDF_INCLUDE_DIR})
|
set (NETCDF_C_INCLUDE_DIRS ${NETCDF_INCLUDE_DIR})
|
||||||
|
|
||||||
|
string(REGEX REPLACE "/include/?$" ""
|
||||||
|
NETCDF_LIB_HINT ${NETCDF_INCLUDE_DIR})
|
||||||
|
|
||||||
find_library (NETCDF_LIBRARY NAMES netcdf
|
find_library (NETCDF_LIBRARY NAMES netcdf
|
||||||
HINTS "${NETCDF_DIR}/lib")
|
HINTS "${NETCDF_DIR}" "${NETCDF_LIB_HINT}" PATH_SUFFIXES lib lib64)
|
||||||
mark_as_advanced (NETCDF_LIBRARY)
|
mark_as_advanced (NETCDF_LIBRARY)
|
||||||
|
|
||||||
set (NETCDF_C_LIBRARIES ${NETCDF_LIBRARY})
|
set (NETCDF_C_LIBRARIES ${NETCDF_LIBRARY})
|
||||||
@ -116,3 +120,14 @@ set (NETCDF_INCLUDE_DIRS ${NetCDF_includes})
|
|||||||
include (FindPackageHandleStandardArgs)
|
include (FindPackageHandleStandardArgs)
|
||||||
find_package_handle_standard_args (NetCDF
|
find_package_handle_standard_args (NetCDF
|
||||||
DEFAULT_MSG NETCDF_LIBRARIES NETCDF_INCLUDE_DIRS NETCDF_HAS_INTERFACES)
|
DEFAULT_MSG NETCDF_LIBRARIES NETCDF_INCLUDE_DIRS NETCDF_HAS_INTERFACES)
|
||||||
|
|
||||||
|
# Copy the results to the output variables and target.
|
||||||
|
if(NetCDF_FOUND)
|
||||||
|
if(NOT TARGET NetCDF::NetCDF)
|
||||||
|
add_library(NetCDF::NetCDF UNKNOWN IMPORTED)
|
||||||
|
set_target_properties(NetCDF::NetCDF PROPERTIES
|
||||||
|
IMPORTED_LOCATION "${NETCDF_LIBRARY}"
|
||||||
|
INTERFACE_INCLUDE_DIRECTORIES "${NETCDF_INCLUDE_DIRS}"
|
||||||
|
INTERFACE_LINK_LIBRARIES "${NETCDF_LIBRARIES}")
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|||||||
64
cmake/Modules/FindPNetCDF.cmake
Normal file
64
cmake/Modules/FindPNetCDF.cmake
Normal file
@ -0,0 +1,64 @@
|
|||||||
|
# source: https://ftp.space.dtu.dk/pub/Ioana/pism0.6.1-10/CMake/FindPNetCDF.cmake
|
||||||
|
# license: GPL v3 (https://ftp.space.dtu.dk/pub/Ioana/pism0.6.1-10/COPYING)
|
||||||
|
#
|
||||||
|
# - Find PNetCDF
|
||||||
|
# Find the native PNetCDF includes and library
|
||||||
|
#
|
||||||
|
# PNETCDF_INCLUDES - where to find netcdf.h, etc
|
||||||
|
# PNETCDF_LIBRARIES - Link these libraries when using NetCDF
|
||||||
|
# PNETCDF_FOUND - True if PNetCDF was found
|
||||||
|
#
|
||||||
|
# Normal usage would be:
|
||||||
|
# find_package (PNetCDF REQUIRED)
|
||||||
|
# target_link_libraries (uses_pnetcdf ${PNETCDF_LIBRARIES})
|
||||||
|
|
||||||
|
if (PNETCDF_INCLUDES AND PNETCDF_LIBRARIES)
|
||||||
|
# Already in cache, be silent
|
||||||
|
set (PNETCDF_FIND_QUIETLY TRUE)
|
||||||
|
endif (PNETCDF_INCLUDES AND PNETCDF_LIBRARIES)
|
||||||
|
|
||||||
|
find_path (PNETCDF_INCLUDES pnetcdf.h
|
||||||
|
HINTS "${PNETCDF_ROOT}/include" "$ENV{PNETCDF_ROOT}/include")
|
||||||
|
|
||||||
|
string(REGEX REPLACE "/include/?$" ""
|
||||||
|
PNETCDF_LIB_HINT ${PNETCDF_INCLUDES})
|
||||||
|
|
||||||
|
find_library (PNETCDF_LIBRARIES
|
||||||
|
NAMES pnetcdf
|
||||||
|
HINTS ${PNETCDF_LIB_HINT} PATH_SUFFIXES lib lib64)
|
||||||
|
|
||||||
|
if ((NOT PNETCDF_LIBRARIES) OR (NOT PNETCDF_INCLUDES))
|
||||||
|
message(STATUS "Trying to find PNetCDF using LD_LIBRARY_PATH (we're desperate)...")
|
||||||
|
|
||||||
|
file(TO_CMAKE_PATH "$ENV{LD_LIBRARY_PATH}" LD_LIBRARY_PATH)
|
||||||
|
|
||||||
|
find_library(PNETCDF_LIBRARIES
|
||||||
|
NAMES pnetcdf
|
||||||
|
HINTS ${LD_LIBRARY_PATH})
|
||||||
|
|
||||||
|
if (PNETCDF_LIBRARIES)
|
||||||
|
get_filename_component(PNETCDF_LIB_DIR ${PNETCDF_LIBRARIES} PATH)
|
||||||
|
string(REGEX REPLACE "/(lib|lib64)/?$" "/include"
|
||||||
|
PNETCDF_H_HINT ${PNETCDF_LIB_DIR})
|
||||||
|
|
||||||
|
find_path (PNETCDF_INCLUDES pnetcdf.h
|
||||||
|
HINTS ${PNETCDF_H_HINT}
|
||||||
|
DOC "Path to pnetcdf.h")
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# handle the QUIETLY and REQUIRED arguments and set PNETCDF_FOUND to TRUE if
|
||||||
|
# all listed variables are TRUE
|
||||||
|
include (FindPackageHandleStandardArgs)
|
||||||
|
find_package_handle_standard_args (PNetCDF DEFAULT_MSG PNETCDF_LIBRARIES PNETCDF_INCLUDES)
|
||||||
|
|
||||||
|
mark_as_advanced (PNETCDF_LIBRARIES PNETCDF_INCLUDES)
|
||||||
|
|
||||||
|
if(PNetCDF_FOUND)
|
||||||
|
if(NOT TARGET PNetCDF::PNetCDF)
|
||||||
|
add_library(PNetCDF::PNetCDF UNKNOWN IMPORTED)
|
||||||
|
set_target_properties(PNetCDF::PNetCDF PROPERTIES
|
||||||
|
IMPORTED_LOCATION "${PNETCDF_LIBRARIES}"
|
||||||
|
INTERFACE_INCLUDE_DIRECTORIES "${PNETCDF_INCLUDES}")
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
@ -1,29 +0,0 @@
|
|||||||
# - Find quantum-espresso
|
|
||||||
# Find the native QE headers and libraries.
|
|
||||||
#
|
|
||||||
# QE_INCLUDE_DIRS - where to find quantum-espresso.h, etc.
|
|
||||||
# QE_LIBRARIES - List of libraries when using quantum-espresso.
|
|
||||||
# QE_FOUND - True if quantum-espresso found.
|
|
||||||
#
|
|
||||||
|
|
||||||
find_path(QE_INCLUDE_DIR libqecouple.h PATH_SUFFIXES COUPLE/include)
|
|
||||||
|
|
||||||
find_library(QECOUPLE_LIBRARY NAMES qecouple)
|
|
||||||
find_library(PW_LIBRARY NAMES pw)
|
|
||||||
find_library(QEMOD_LIBRARY NAMES qemod)
|
|
||||||
find_library(QEFFT_LIBRARY NAMES qefft)
|
|
||||||
find_library(QELA_LIBRARY NAMES qela)
|
|
||||||
find_library(CLIB_LIBRARY NAMES clib)
|
|
||||||
find_library(IOTK_LIBRARY NAMES iotk)
|
|
||||||
|
|
||||||
|
|
||||||
set(QE_LIBRARIES ${QECOUPLE_LIBRARY} ${PW_LIBRARY} ${QEMOD_LIBRARY} ${QEFFT_LIBRARY} ${QELA_LIBRARY} ${CLIB_LIBRARY} ${IOTK_LIBRARY})
|
|
||||||
set(QE_INCLUDE_DIRS ${QE_INCLUDE_DIR})
|
|
||||||
|
|
||||||
include(FindPackageHandleStandardArgs)
|
|
||||||
# handle the QUIETLY and REQUIRED arguments and set QE_FOUND to TRUE
|
|
||||||
# if all listed variables are TRUE
|
|
||||||
|
|
||||||
find_package_handle_standard_args(QE DEFAULT_MSG QECOUPLE_LIBRARY PW_LIBRARY QEMOD_LIBRARY QEFFT_LIBRARY QELA_LIBRARY CLIB_LIBRARY IOTK_LIBRARY QE_INCLUDE_DIR)
|
|
||||||
|
|
||||||
mark_as_advanced(QE_INCLUDE_DIR QECOUPLE_LIBRARY PW_LIBRARY QEMOD_LIBRARY QEFFT_LIBRARY QELA_LIBRARY CLIB_LIBRARY IOTK_LIBRARY)
|
|
||||||
@ -7,12 +7,21 @@
|
|||||||
|
|
||||||
find_library(QUIP_LIBRARY NAMES quip)
|
find_library(QUIP_LIBRARY NAMES quip)
|
||||||
|
|
||||||
set(QUIP_LIBRARIES ${QUIP_LIBRARY})
|
|
||||||
|
|
||||||
include(FindPackageHandleStandardArgs)
|
include(FindPackageHandleStandardArgs)
|
||||||
# handle the QUIETLY and REQUIRED arguments and set QUIP_FOUND to TRUE
|
# handle the QUIETLY and REQUIRED arguments and set QUIP_FOUND to TRUE
|
||||||
# if all listed variables are TRUE
|
# if all listed variables are TRUE
|
||||||
|
|
||||||
find_package_handle_standard_args(QUIP DEFAULT_MSG QUIP_LIBRARY)
|
find_package_handle_standard_args(QUIP DEFAULT_MSG QUIP_LIBRARY)
|
||||||
|
|
||||||
|
# Copy the results to the output variables and target.
|
||||||
|
if(QUIP_FOUND)
|
||||||
|
set(QUIP_LIBRARIES ${QUIP_LIBRARY})
|
||||||
|
|
||||||
|
if(NOT TARGET QUIP::QUIP)
|
||||||
|
add_library(QUIP::QUIP UNKNOWN IMPORTED)
|
||||||
|
set_target_properties(QUIP::QUIP PROPERTIES
|
||||||
|
IMPORTED_LOCATION "${QUIP_LIBRARY}")
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
mark_as_advanced(QUIP_LIBRARY)
|
mark_as_advanced(QUIP_LIBRARY)
|
||||||
|
|||||||
@ -1,46 +0,0 @@
|
|||||||
# - Find parts of TBB
|
|
||||||
# Find the native TBB headers and libraries.
|
|
||||||
#
|
|
||||||
# TBB_INCLUDE_DIRS - where to find tbb.h, etc.
|
|
||||||
# TBB_LIBRARIES - List of libraries when using tbb.
|
|
||||||
# TBB_FOUND - True if tbb found.
|
|
||||||
#
|
|
||||||
|
|
||||||
########################################################
|
|
||||||
# TBB
|
|
||||||
|
|
||||||
# TODO use more generic FindTBB
|
|
||||||
|
|
||||||
find_path(TBB_INCLUDE_DIR NAMES tbb/tbb.h PATHS $ENV{TBBROOT}/include)
|
|
||||||
find_library(TBB_LIBRARY NAMES tbb PATHS $ENV{TBBROOT}/lib/intel64/gcc4.7
|
|
||||||
$ENV{TBBROOT}/lib/intel64/gcc4.4
|
|
||||||
$ENV{TBBROOT}/lib/intel64/gcc4.1)
|
|
||||||
set(TBB_LIBRARIES ${TBB_LIBRARY})
|
|
||||||
set(TBB_INCLUDE_DIRS ${TBB_INCLUDE_DIR})
|
|
||||||
|
|
||||||
include(FindPackageHandleStandardArgs)
|
|
||||||
# handle the QUIETLY and REQUIRED arguments and set TBB_FOUND to TRUE
|
|
||||||
# if all listed variables are TRUE
|
|
||||||
|
|
||||||
find_package_handle_standard_args(TBB DEFAULT_MSG TBB_LIBRARY TBB_INCLUDE_DIR)
|
|
||||||
|
|
||||||
mark_as_advanced(TBB_INCLUDE_DIR TBB_LIBRARY )
|
|
||||||
|
|
||||||
########################################################
|
|
||||||
# TBB Malloc
|
|
||||||
|
|
||||||
find_path(TBB_MALLOC_INCLUDE_DIR NAMES tbb/tbb.h PATHS $ENV{TBBROOT}/include)
|
|
||||||
find_library(TBB_MALLOC_LIBRARY NAMES tbbmalloc PATHS $ENV{TBBROOT}/lib/intel64/gcc4.7
|
|
||||||
$ENV{TBBROOT}/lib/intel64/gcc4.4
|
|
||||||
$ENV{TBBROOT}/lib/intel64/gcc4.1)
|
|
||||||
|
|
||||||
set(TBB_MALLOC_LIBRARIES ${TBB_MALLOC_LIBRARY})
|
|
||||||
set(TBB_MALLOC_INCLUDE_DIRS ${TBB_MALLOC_INCLUDE_DIR})
|
|
||||||
|
|
||||||
include(FindPackageHandleStandardArgs)
|
|
||||||
# handle the QUIETLY and REQUIRED arguments and set TBB_MALLOC_FOUND to TRUE
|
|
||||||
# if all listed variables are TRUE
|
|
||||||
|
|
||||||
find_package_handle_standard_args(TBB_MALLOC DEFAULT_MSG TBB_MALLOC_LIBRARY TBB_MALLOC_INCLUDE_DIR)
|
|
||||||
|
|
||||||
mark_as_advanced(TBB_MALLOC_INCLUDE_DIR TBB_MALLOC_LIBRARY )
|
|
||||||
36
cmake/Modules/FindTBB_MALLOC.cmake
Normal file
36
cmake/Modules/FindTBB_MALLOC.cmake
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
# - Find parts of TBB_MALLOC
|
||||||
|
# Find the native TBB_MALLOC headers and libraries.
|
||||||
|
#
|
||||||
|
# TBB_MALLOC_INCLUDE_DIRS - where to find tbb.h, etc.
|
||||||
|
# TBB_MALLOC_LIBRARIES - List of libraries when using tbb.
|
||||||
|
# TBB_MALLOC_FOUND - True if tbb found.
|
||||||
|
#
|
||||||
|
|
||||||
|
########################################################
|
||||||
|
# TBB Malloc
|
||||||
|
|
||||||
|
find_path(TBB_MALLOC_INCLUDE_DIR NAMES tbb/tbb.h PATHS $ENV{TBBROOT}/include)
|
||||||
|
find_library(TBB_MALLOC_LIBRARY NAMES tbbmalloc PATHS $ENV{TBBROOT}/lib/intel64/gcc4.8
|
||||||
|
$ENV{TBBROOT}/lib/intel64/gcc4.7
|
||||||
|
$ENV{TBBROOT}/lib/intel64/gcc4.4
|
||||||
|
$ENV{TBBROOT}/lib/intel64/gcc4.1)
|
||||||
|
|
||||||
|
include(FindPackageHandleStandardArgs)
|
||||||
|
# handle the QUIETLY and REQUIRED arguments and set TBB_MALLOC_FOUND to TRUE
|
||||||
|
# if all listed variables are TRUE
|
||||||
|
|
||||||
|
find_package_handle_standard_args(TBB_MALLOC DEFAULT_MSG TBB_MALLOC_LIBRARY TBB_MALLOC_INCLUDE_DIR)
|
||||||
|
|
||||||
|
if(TBB_MALLOC_FOUND)
|
||||||
|
set(TBB_MALLOC_LIBRARIES ${TBB_MALLOC_LIBRARY})
|
||||||
|
set(TBB_MALLOC_INCLUDE_DIRS ${TBB_MALLOC_INCLUDE_DIR})
|
||||||
|
|
||||||
|
if(NOT TARGET TBB::TBB_MALLOC)
|
||||||
|
add_library(TBB::TBB_MALLOC UNKNOWN IMPORTED)
|
||||||
|
set_target_properties(TBB::TBB_MALLOC PROPERTIES
|
||||||
|
IMPORTED_LOCATION "${TBB_MALLOC_LIBRARY}"
|
||||||
|
INTERFACE_INCLUDE_DIRECTORIES "${TBB_MALLOC_INCLUDE_DIR}")
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
mark_as_advanced(TBB_MALLOC_INCLUDE_DIR TBB_MALLOC_LIBRARY )
|
||||||
@ -10,13 +10,23 @@ find_path(VORO_INCLUDE_DIR voro++.hh PATH_SUFFIXES voro++)
|
|||||||
|
|
||||||
find_library(VORO_LIBRARY NAMES voro++)
|
find_library(VORO_LIBRARY NAMES voro++)
|
||||||
|
|
||||||
set(VORO_LIBRARIES ${VORO_LIBRARY})
|
|
||||||
set(VORO_INCLUDE_DIRS ${VORO_INCLUDE_DIR})
|
|
||||||
|
|
||||||
include(FindPackageHandleStandardArgs)
|
include(FindPackageHandleStandardArgs)
|
||||||
# handle the QUIETLY and REQUIRED arguments and set VORO_FOUND to TRUE
|
# handle the QUIETLY and REQUIRED arguments and set VORO_FOUND to TRUE
|
||||||
# if all listed variables are TRUE
|
# if all listed variables are TRUE
|
||||||
|
|
||||||
find_package_handle_standard_args(VORO DEFAULT_MSG VORO_LIBRARY VORO_INCLUDE_DIR)
|
find_package_handle_standard_args(VORO DEFAULT_MSG VORO_LIBRARY VORO_INCLUDE_DIR)
|
||||||
|
|
||||||
|
# Copy the results to the output variables and target.
|
||||||
|
if(VORO_FOUND)
|
||||||
|
set(VORO_LIBRARIES ${VORO_LIBRARY})
|
||||||
|
set(VORO_INCLUDE_DIRS ${VORO_INCLUDE_DIR})
|
||||||
|
|
||||||
|
if(NOT TARGET VORO::VORO)
|
||||||
|
add_library(VORO::VORO UNKNOWN IMPORTED)
|
||||||
|
set_target_properties(VORO::VORO PROPERTIES
|
||||||
|
IMPORTED_LOCATION "${VORO_LIBRARY}"
|
||||||
|
INTERFACE_INCLUDE_DIRECTORIES "${VORO_INCLUDE_DIR}")
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
mark_as_advanced(VORO_INCLUDE_DIR VORO_LIBRARY )
|
mark_as_advanced(VORO_INCLUDE_DIR VORO_LIBRARY )
|
||||||
|
|||||||
30
cmake/Modules/FindYAML.cmake
Normal file
30
cmake/Modules/FindYAML.cmake
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
# - Find libyaml
|
||||||
|
# Find the native Yaml headers and libraries.
|
||||||
|
#
|
||||||
|
# YAML_INCLUDE_DIRS - where to find yaml.h
|
||||||
|
# YAML_LIBRARIES - List of libraries when using libyaml
|
||||||
|
# YAML_FOUND - True if libyaml is found.
|
||||||
|
#
|
||||||
|
|
||||||
|
find_path(YAML_INCLUDE_DIR yaml.h PATH_SUFFIXES yaml)
|
||||||
|
find_library(YAML_LIBRARY NAMES yaml)
|
||||||
|
|
||||||
|
# handle the QUIET and REQUIRED arguments and
|
||||||
|
# set YAML_FOUND to TRUE if all variables are non-zero
|
||||||
|
include(FindPackageHandleStandardArgs)
|
||||||
|
find_package_handle_standard_args(YAML DEFAULT_MSG YAML_LIBRARY YAML_INCLUDE_DIR)
|
||||||
|
|
||||||
|
# Copy the results to the output variables and target.
|
||||||
|
if(YAML_FOUND)
|
||||||
|
set(YAML_LIBRARIES ${YAML_LIBRARY})
|
||||||
|
set(YAML_INCLUDE_DIRS ${YAML_INCLUDE_DIR})
|
||||||
|
|
||||||
|
if(NOT TARGET Yaml::Yaml)
|
||||||
|
add_library(Yaml::Yaml UNKNOWN IMPORTED)
|
||||||
|
set_target_properties(Yaml::Yaml PROPERTIES
|
||||||
|
IMPORTED_LOCATION "${YAML_LIBRARY}"
|
||||||
|
INTERFACE_INCLUDE_DIRECTORIES "${YAML_INCLUDE_DIR}")
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
mark_as_advanced(YAML_INCLUDE_DIR YAML_LIBRARY)
|
||||||
@ -1,8 +1,19 @@
|
|||||||
find_path(ZMQ_INCLUDE_DIR zmq.h)
|
find_path(ZMQ_INCLUDE_DIR zmq.h)
|
||||||
find_library(ZMQ_LIBRARY NAMES zmq)
|
find_library(ZMQ_LIBRARY NAMES zmq)
|
||||||
|
|
||||||
set(ZMQ_LIBRARIES ${ZMQ_LIBRARY})
|
|
||||||
set(ZMQ_INCLUDE_DIRS ${ZMQ_INCLUDE_DIR})
|
|
||||||
|
|
||||||
include(FindPackageHandleStandardArgs)
|
include(FindPackageHandleStandardArgs)
|
||||||
find_package_handle_standard_args(ZMQ DEFAULT_MSG ZMQ_LIBRARY ZMQ_INCLUDE_DIR)
|
find_package_handle_standard_args(ZMQ DEFAULT_MSG ZMQ_LIBRARY ZMQ_INCLUDE_DIR)
|
||||||
|
|
||||||
|
# Copy the results to the output variables and target.
|
||||||
|
if(ZMQ_FOUND)
|
||||||
|
set(ZMQ_LIBRARIES ${ZMQ_LIBRARY})
|
||||||
|
set(ZMQ_INCLUDE_DIRS ${ZMQ_INCLUDE_DIR})
|
||||||
|
|
||||||
|
if(NOT TARGET ZMQ::ZMQ)
|
||||||
|
add_library(ZMQ::ZMQ UNKNOWN IMPORTED)
|
||||||
|
set_target_properties(ZMQ::ZMQ PROPERTIES
|
||||||
|
IMPORTED_LINK_INTERFACE_LANGUAGES "C"
|
||||||
|
IMPORTED_LOCATION "${ZMQ_LIBRARY}"
|
||||||
|
INTERFACE_INCLUDE_DIRECTORIES "${ZMQ_INCLUDE_DIR}")
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|||||||
77
cmake/Modules/GTest.cmake
Normal file
77
cmake/Modules/GTest.cmake
Normal file
@ -0,0 +1,77 @@
|
|||||||
|
message(STATUS "Downloading and building Google Test library")
|
||||||
|
|
||||||
|
if(CMAKE_BUILD_TYPE STREQUAL Debug)
|
||||||
|
set(GTEST_LIB_POSTFIX d)
|
||||||
|
else()
|
||||||
|
set(GTEST_LIB_POSTFIX)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
include(ExternalProject)
|
||||||
|
ExternalProject_Add(googletest
|
||||||
|
GIT_REPOSITORY https://github.com/google/googletest.git
|
||||||
|
GIT_TAG release-1.10.0
|
||||||
|
SOURCE_DIR "${CMAKE_BINARY_DIR}/gtest-src"
|
||||||
|
BINARY_DIR "${CMAKE_BINARY_DIR}/gtest-build"
|
||||||
|
CMAKE_ARGS ${CMAKE_REQUEST_PIC} ${CMAKE_EXTRA_GTEST_OPTS}
|
||||||
|
-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
|
||||||
|
-DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>
|
||||||
|
-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
|
||||||
|
-DCMAKE_MAKE_PROGRAM=${CMAKE_MAKE_PROGRAM}
|
||||||
|
-DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE}
|
||||||
|
BUILD_BYPRODUCTS <BINARY_DIR>/lib/${CMAKE_FIND_LIBRARY_PREFIXES}gtest${GTEST_LIB_POSTFIX}.a
|
||||||
|
<BINARY_DIR>/lib/${CMAKE_FIND_LIBRARY_PREFIXES}gmock${GTEST_LIB_POSTFIX}.a
|
||||||
|
<BINARY_DIR>/lib/${CMAKE_FIND_LIBRARY_PREFIXES}gtest_main${GTEST_LIB_POSTFIX}.a
|
||||||
|
<BINARY_DIR>/lib/${CMAKE_FIND_LIBRARY_PREFIXES}gmock_main${GTEST_LIB_POSTFIX}.a
|
||||||
|
LOG_DOWNLOAD ON
|
||||||
|
LOG_CONFIGURE ON
|
||||||
|
LOG_BUILD ON
|
||||||
|
INSTALL_COMMAND ""
|
||||||
|
TEST_COMMAND "")
|
||||||
|
|
||||||
|
ExternalProject_Get_Property(googletest SOURCE_DIR)
|
||||||
|
set(GTEST_INCLUDE_DIR ${SOURCE_DIR}/googletest/include)
|
||||||
|
set(GMOCK_INCLUDE_DIR ${SOURCE_DIR}/googlemock/include)
|
||||||
|
|
||||||
|
# workaround for CMake 3.10 on ubuntu 18.04
|
||||||
|
file(MAKE_DIRECTORY ${GTEST_INCLUDE_DIR})
|
||||||
|
file(MAKE_DIRECTORY ${GMOCK_INCLUDE_DIR})
|
||||||
|
|
||||||
|
ExternalProject_Get_Property(googletest BINARY_DIR)
|
||||||
|
set(GTEST_LIBRARY_PATH ${BINARY_DIR}/lib/${CMAKE_FIND_LIBRARY_PREFIXES}gtest${GTEST_LIB_POSTFIX}.a)
|
||||||
|
set(GMOCK_LIBRARY_PATH ${BINARY_DIR}/lib/${CMAKE_FIND_LIBRARY_PREFIXES}gmock${GTEST_LIB_POSTFIX}.a)
|
||||||
|
set(GTEST_MAIN_LIBRARY_PATH ${BINARY_DIR}/lib/${CMAKE_FIND_LIBRARY_PREFIXES}gtest_main${GTEST_LIB_POSTFIX}.a)
|
||||||
|
set(GMOCK_MAIN_LIBRARY_PATH ${BINARY_DIR}/lib/${CMAKE_FIND_LIBRARY_PREFIXES}gmock_main${GTEST_LIB_POSTFIX}.a)
|
||||||
|
|
||||||
|
# Prevent GoogleTest from overriding our compiler/linker options
|
||||||
|
# when building with Visual Studio
|
||||||
|
set(gtest_force_shared_crt ON CACHE BOOL "" FORCE)
|
||||||
|
|
||||||
|
find_package(Threads QUIET)
|
||||||
|
|
||||||
|
add_library(GTest::GTest UNKNOWN IMPORTED)
|
||||||
|
set_target_properties(GTest::GTest PROPERTIES
|
||||||
|
IMPORTED_LOCATION ${GTEST_LIBRARY_PATH}
|
||||||
|
INTERFACE_INCLUDE_DIRECTORIES ${GTEST_INCLUDE_DIR}
|
||||||
|
INTERFACE_LINK_LIBRARIES "${CMAKE_THREAD_LIBS_INIT}")
|
||||||
|
add_dependencies(GTest::GTest googletest)
|
||||||
|
|
||||||
|
add_library(GTest::GMock UNKNOWN IMPORTED)
|
||||||
|
set_target_properties(GTest::GMock PROPERTIES
|
||||||
|
IMPORTED_LOCATION ${GMOCK_LIBRARY_PATH}
|
||||||
|
INTERFACE_INCLUDE_DIRECTORIES ${GMOCK_INCLUDE_DIR}
|
||||||
|
INTERFACE_LINK_LIBRARIES "${CMAKE_THREAD_LIBS_INIT}")
|
||||||
|
add_dependencies(GTest::GMock googletest)
|
||||||
|
|
||||||
|
add_library(GTest::GTestMain UNKNOWN IMPORTED)
|
||||||
|
set_target_properties(GTest::GTestMain PROPERTIES
|
||||||
|
IMPORTED_LOCATION ${GTEST_MAIN_LIBRARY_PATH}
|
||||||
|
INTERFACE_INCLUDE_DIRECTORIES ${GTEST_INCLUDE_DIR}
|
||||||
|
INTERFACE_LINK_LIBRARIES "${CMAKE_THREAD_LIBS_INIT}")
|
||||||
|
add_dependencies(GTest::GTestMain googletest)
|
||||||
|
|
||||||
|
add_library(GTest::GMockMain UNKNOWN IMPORTED)
|
||||||
|
set_target_properties(GTest::GMockMain PROPERTIES
|
||||||
|
IMPORTED_LOCATION ${GMOCK_MAIN_LIBRARY_PATH}
|
||||||
|
INTERFACE_INCLUDE_DIRECTORIES ${GMOCK_INCLUDE_DIR}
|
||||||
|
INTERFACE_LINK_LIBRARIES "${CMAKE_THREAD_LIBS_INIT}")
|
||||||
|
add_dependencies(GTest::GMockMain googletest)
|
||||||
3
cmake/Modules/GenerateBinaryHeader.cmake
Normal file
3
cmake/Modules/GenerateBinaryHeader.cmake
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
# utility script to call GenerateBinaryHeader function
|
||||||
|
include(${SOURCE_DIR}/Modules/LAMMPSUtils.cmake)
|
||||||
|
GenerateBinaryHeader(${VARNAME} ${HEADER_FILE} ${SOURCE_FILES})
|
||||||
@ -69,3 +69,42 @@ macro(pkg_depends PKG1 PKG2)
|
|||||||
message(FATAL_ERROR "${PKG1} package needs LAMMPS to be build with ${PKG2}")
|
message(FATAL_ERROR "${PKG1} package needs LAMMPS to be build with ${PKG2}")
|
||||||
endif()
|
endif()
|
||||||
endmacro()
|
endmacro()
|
||||||
|
|
||||||
|
# CMake-only replacement for bin2c and xxd
|
||||||
|
function(GenerateBinaryHeader varname outfile files)
|
||||||
|
message("Creating ${outfile}...")
|
||||||
|
file(WRITE ${outfile} "// CMake generated file\n")
|
||||||
|
math(EXPR ARG_END "${ARGC}-1")
|
||||||
|
|
||||||
|
foreach(IDX RANGE 2 ${ARG_END})
|
||||||
|
list(GET ARGV ${IDX} filename)
|
||||||
|
file(READ ${filename} content HEX)
|
||||||
|
string(REGEX REPLACE "([0-9a-f][0-9a-f])" "0x\\1," content "${content}")
|
||||||
|
string(REGEX REPLACE ",$" "" content "${content}")
|
||||||
|
file(APPEND ${outfile} "const unsigned char ${varname}[] = { ${content} };\n")
|
||||||
|
file(APPEND ${outfile} "const unsigned int ${varname}_size = sizeof(${varname});\n")
|
||||||
|
endforeach()
|
||||||
|
endfunction(GenerateBinaryHeader)
|
||||||
|
|
||||||
|
# fetch missing potential files
|
||||||
|
function(FetchPotentials pkgfolder potfolder)
|
||||||
|
if (EXISTS "${pkgfolder}/potentials.txt")
|
||||||
|
set(LAMMPS_POTENTIALS_URL "https://download.lammps.org/potentials")
|
||||||
|
file(STRINGS "${pkgfolder}/potentials.txt" linelist REGEX "^[^#].")
|
||||||
|
foreach(line ${linelist})
|
||||||
|
string(FIND ${line} " " blank)
|
||||||
|
math(EXPR plusone "${blank}+1")
|
||||||
|
string(SUBSTRING ${line} 0 ${blank} pot)
|
||||||
|
string(SUBSTRING ${line} ${plusone} -1 sum)
|
||||||
|
if(EXISTS ${LAMMPS_POTENTIALS_DIR}/${pot})
|
||||||
|
file(MD5 "${LAMMPS_POTENTIALS_DIR}/${pot}" oldsum)
|
||||||
|
endif()
|
||||||
|
if(NOT sum STREQUAL oldsum)
|
||||||
|
message(STATUS "Checking external potential ${pot} from ${LAMMPS_POTENTIALS_URL}")
|
||||||
|
file(DOWNLOAD "${LAMMPS_POTENTIALS_URL}/${pot}.${sum}" "${CMAKE_BINARY_DIR}/${pot}"
|
||||||
|
EXPECTED_HASH MD5=${sum} SHOW_PROGRESS)
|
||||||
|
file(COPY "${CMAKE_BINARY_DIR}/${pot}" DESTINATION ${LAMMPS_POTENTIALS_DIR})
|
||||||
|
endif()
|
||||||
|
endforeach()
|
||||||
|
endif()
|
||||||
|
endfunction(FetchPotentials)
|
||||||
|
|||||||
30
cmake/Modules/MPI4WIN.cmake
Normal file
30
cmake/Modules/MPI4WIN.cmake
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
# Download and configure custom MPICH files for Windows
|
||||||
|
message(STATUS "Downloading and configuring MPICH-1.4.1 for Windows")
|
||||||
|
include(ExternalProject)
|
||||||
|
if (CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64")
|
||||||
|
ExternalProject_Add(mpi4win_build
|
||||||
|
URL https://download.lammps.org/thirdparty/mpich2-win64-devel.tar.gz
|
||||||
|
URL_MD5 4939fdb59d13182fd5dd65211e469f14
|
||||||
|
CONFIGURE_COMMAND "" BUILD_COMMAND "" INSTALL_COMMAND ""
|
||||||
|
BUILD_BYPRODUCTS <SOURCE_DIR>/lib/libmpi.a)
|
||||||
|
else()
|
||||||
|
ExternalProject_Add(mpi4win_build
|
||||||
|
URL https://download.lammps.org/thirdparty/mpich2-win32-devel.tar.gz
|
||||||
|
URL_MD5 a61d153500dce44e21b755ee7257e031
|
||||||
|
CONFIGURE_COMMAND "" BUILD_COMMAND "" INSTALL_COMMAND ""
|
||||||
|
BUILD_BYPRODUCTS <SOURCE_DIR>/lib/libmpi.a)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
ExternalProject_get_property(mpi4win_build SOURCE_DIR)
|
||||||
|
file(MAKE_DIRECTORY "${SOURCE_DIR}/include")
|
||||||
|
add_library(MPI::MPI_CXX UNKNOWN IMPORTED)
|
||||||
|
set_target_properties(MPI::MPI_CXX PROPERTIES
|
||||||
|
IMPORTED_LOCATION "${SOURCE_DIR}/lib/libmpi.a"
|
||||||
|
INTERFACE_INCLUDE_DIRECTORIES "${SOURCE_DIR}/include"
|
||||||
|
INTERFACE_COMPILE_DEFINITIONS "MPICH_SKIP_MPICXX")
|
||||||
|
add_dependencies(MPI::MPI_CXX mpi4win_build)
|
||||||
|
|
||||||
|
# set variables for status reporting at the end of CMake run
|
||||||
|
set(MPI_CXX_INCLUDE_PATH "${SOURCE_DIR}/include")
|
||||||
|
set(MPI_CXX_COMPILE_DEFINITIONS "MPICH_SKIP_MPICXX")
|
||||||
|
set(MPI_CXX_LIBRARIES "${SOURCE_DIR}/lib/libmpi.a")
|
||||||
@ -1,5 +1,2 @@
|
|||||||
if(PKG_COMPRESS)
|
find_package(ZLIB REQUIRED)
|
||||||
find_package(ZLIB REQUIRED)
|
target_link_libraries(lammps PRIVATE ZLIB::ZLIB)
|
||||||
include_directories(${ZLIB_INCLUDE_DIRS})
|
|
||||||
list(APPEND LAMMPS_LINK_LIBS ${ZLIB_LIBRARIES})
|
|
||||||
endif()
|
|
||||||
|
|||||||
@ -1,13 +1,11 @@
|
|||||||
if(PKG_CORESHELL)
|
set(CORESHELL_SOURCES_DIR ${LAMMPS_SOURCE_DIR}/CORESHELL)
|
||||||
set(CORESHELL_SOURCES_DIR ${LAMMPS_SOURCE_DIR}/CORESHELL)
|
set(CORESHELL_SOURCES)
|
||||||
set(CORESHELL_SOURCES)
|
set_property(GLOBAL PROPERTY "CORESHELL_SOURCES" "${CORESHELL_SOURCES}")
|
||||||
set_property(GLOBAL PROPERTY "CORESHELL_SOURCES" "${CORESHELL_SOURCES}")
|
|
||||||
|
|
||||||
# detects styles which have a CORESHELL version
|
# detects styles which have a CORESHELL version
|
||||||
RegisterStylesExt(${CORESHELL_SOURCES_DIR} cs CORESHELL_SOURCES)
|
RegisterStylesExt(${CORESHELL_SOURCES_DIR} cs CORESHELL_SOURCES)
|
||||||
|
|
||||||
get_property(CORESHELL_SOURCES GLOBAL PROPERTY CORESHELL_SOURCES)
|
get_property(CORESHELL_SOURCES GLOBAL PROPERTY CORESHELL_SOURCES)
|
||||||
|
|
||||||
list(APPEND LIB_SOURCES ${CORESHELL_SOURCES})
|
target_sources(lammps PRIVATE ${CORESHELL_SOURCES})
|
||||||
include_directories(${CORESHELL_SOURCES_DIR})
|
target_include_directories(lammps PRIVATE ${CORESHELL_SOURCES_DIR})
|
||||||
endif()
|
|
||||||
|
|||||||
@ -1,194 +1,411 @@
|
|||||||
if(PKG_GPU)
|
set(GPU_SOURCES_DIR ${LAMMPS_SOURCE_DIR}/GPU)
|
||||||
if (CMAKE_VERSION VERSION_LESS "3.1")
|
set(GPU_SOURCES ${GPU_SOURCES_DIR}/gpu_extra.h
|
||||||
message(FATAL_ERROR "For the GPU package you need at least cmake-3.1")
|
${GPU_SOURCES_DIR}/fix_gpu.h
|
||||||
endif()
|
${GPU_SOURCES_DIR}/fix_gpu.cpp)
|
||||||
set(GPU_SOURCES_DIR ${LAMMPS_SOURCE_DIR}/GPU)
|
|
||||||
set(GPU_SOURCES ${GPU_SOURCES_DIR}/gpu_extra.h
|
|
||||||
${GPU_SOURCES_DIR}/fix_gpu.h
|
|
||||||
${GPU_SOURCES_DIR}/fix_gpu.cpp)
|
|
||||||
|
|
||||||
set(GPU_API "opencl" CACHE STRING "API used by GPU package")
|
set(GPU_API "opencl" CACHE STRING "API used by GPU package")
|
||||||
set(GPU_API_VALUES opencl cuda)
|
set(GPU_API_VALUES opencl cuda hip)
|
||||||
set_property(CACHE GPU_API PROPERTY STRINGS ${GPU_API_VALUES})
|
set_property(CACHE GPU_API PROPERTY STRINGS ${GPU_API_VALUES})
|
||||||
validate_option(GPU_API GPU_API_VALUES)
|
validate_option(GPU_API GPU_API_VALUES)
|
||||||
string(TOUPPER ${GPU_API} GPU_API)
|
string(TOUPPER ${GPU_API} GPU_API)
|
||||||
|
|
||||||
set(GPU_PREC "mixed" CACHE STRING "LAMMPS GPU precision")
|
set(GPU_PREC "mixed" CACHE STRING "LAMMPS GPU precision")
|
||||||
set(GPU_PREC_VALUES double mixed single)
|
set(GPU_PREC_VALUES double mixed single)
|
||||||
set_property(CACHE GPU_PREC PROPERTY STRINGS ${GPU_PREC_VALUES})
|
set_property(CACHE GPU_PREC PROPERTY STRINGS ${GPU_PREC_VALUES})
|
||||||
validate_option(GPU_PREC GPU_PREC_VALUES)
|
validate_option(GPU_PREC GPU_PREC_VALUES)
|
||||||
string(TOUPPER ${GPU_PREC} GPU_PREC)
|
string(TOUPPER ${GPU_PREC} GPU_PREC)
|
||||||
|
|
||||||
if(GPU_PREC STREQUAL "DOUBLE")
|
if(GPU_PREC STREQUAL "DOUBLE")
|
||||||
set(GPU_PREC_SETTING "DOUBLE_DOUBLE")
|
set(GPU_PREC_SETTING "DOUBLE_DOUBLE")
|
||||||
elseif(GPU_PREC STREQUAL "MIXED")
|
elseif(GPU_PREC STREQUAL "MIXED")
|
||||||
set(GPU_PREC_SETTING "SINGLE_DOUBLE")
|
set(GPU_PREC_SETTING "SINGLE_DOUBLE")
|
||||||
elseif(GPU_PREC STREQUAL "SINGLE")
|
elseif(GPU_PREC STREQUAL "SINGLE")
|
||||||
set(GPU_PREC_SETTING "SINGLE_SINGLE")
|
set(GPU_PREC_SETTING "SINGLE_SINGLE")
|
||||||
endif()
|
|
||||||
|
|
||||||
file(GLOB GPU_LIB_SOURCES ${LAMMPS_LIB_SOURCE_DIR}/gpu/[^.]*.cpp)
|
|
||||||
file(MAKE_DIRECTORY ${LAMMPS_LIB_BINARY_DIR}/gpu)
|
|
||||||
|
|
||||||
if(GPU_API STREQUAL "CUDA")
|
|
||||||
find_package(CUDA REQUIRED)
|
|
||||||
find_program(BIN2C bin2c)
|
|
||||||
if(NOT BIN2C)
|
|
||||||
message(FATAL_ERROR "Could not find bin2c, use -DBIN2C=/path/to/bin2c to help cmake finding it.")
|
|
||||||
endif()
|
|
||||||
option(CUDPP_OPT "Enable CUDPP_OPT" ON)
|
|
||||||
option(CUDA_MPS_SUPPORT "Enable tweaks to support CUDA Multi-process service (MPS)" OFF)
|
|
||||||
if(CUDA_MPS_SUPPORT)
|
|
||||||
set(GPU_CUDA_MPS_FLAGS "-DCUDA_PROXY")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
set(GPU_ARCH "sm_30" CACHE STRING "LAMMPS GPU CUDA SM primary architecture (e.g. sm_60)")
|
|
||||||
|
|
||||||
file(GLOB GPU_LIB_CU ${LAMMPS_LIB_SOURCE_DIR}/gpu/[^.]*.cu ${CMAKE_CURRENT_SOURCE_DIR}/gpu/[^.]*.cu)
|
|
||||||
list(REMOVE_ITEM GPU_LIB_CU ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_pppm.cu)
|
|
||||||
|
|
||||||
cuda_include_directories(${LAMMPS_LIB_SOURCE_DIR}/gpu ${LAMMPS_LIB_BINARY_DIR}/gpu)
|
|
||||||
|
|
||||||
if(CUDPP_OPT)
|
|
||||||
cuda_include_directories(${LAMMPS_LIB_SOURCE_DIR}/gpu/cudpp_mini)
|
|
||||||
file(GLOB GPU_LIB_CUDPP_SOURCES ${LAMMPS_LIB_SOURCE_DIR}/gpu/cudpp_mini/[^.]*.cpp)
|
|
||||||
file(GLOB GPU_LIB_CUDPP_CU ${LAMMPS_LIB_SOURCE_DIR}/gpu/cudpp_mini/[^.]*.cu)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# build arch/gencode commands for nvcc based on CUDA toolkit version and use choice
|
|
||||||
# --arch translates directly instead of JIT, so this should be for the preferred or most common architecture
|
|
||||||
set(GPU_CUDA_GENCODE "-arch=${GPU_ARCH} ")
|
|
||||||
# Fermi (GPU Arch 2.x) is supported by CUDA 3.2 to CUDA 8.0
|
|
||||||
if((CUDA_VERSION VERSION_GREATER "3.1") AND (CUDA_VERSION VERSION_LESS "9.0"))
|
|
||||||
string(APPEND GPU_CUDA_GENCODE "-gencode arch=compute_20,code=[sm_20,compute_20] ")
|
|
||||||
endif()
|
|
||||||
# Kepler (GPU Arch 3.x) is supported by CUDA 5 and later
|
|
||||||
if(CUDA_VERSION VERSION_GREATER "4.9")
|
|
||||||
string(APPEND GPU_CUDA_GENCODE "-gencode arch=compute_30,code=[sm_30,compute_30] -gencode arch=compute_35,code=[sm_35,compute_35] ")
|
|
||||||
endif()
|
|
||||||
# Maxwell (GPU Arch 5.x) is supported by CUDA 6 and later
|
|
||||||
if(CUDA_VERSION VERSION_GREATER "5.9")
|
|
||||||
string(APPEND GPU_CUDA_GENCODE "-gencode arch=compute_50,code=[sm_50,compute_50] -gencode arch=compute_52,code=[sm_52,compute_52] ")
|
|
||||||
endif()
|
|
||||||
# Pascal (GPU Arch 6.x) is supported by CUDA 8 and later
|
|
||||||
if(CUDA_VERSION VERSION_GREATER "7.9")
|
|
||||||
string(APPEND GPU_CUDA_GENCODE "-gencode arch=compute_60,code=[sm_60,compute_60] -gencode arch=compute_61,code=[sm_61,compute_61] ")
|
|
||||||
endif()
|
|
||||||
# Volta (GPU Arch 7.0) is supported by CUDA 9 and later
|
|
||||||
if(CUDA_VERSION VERSION_GREATER "8.9")
|
|
||||||
string(APPEND GPU_CUDA_GENCODE "-gencode arch=compute_70,code=[sm_70,compute_70] ")
|
|
||||||
endif()
|
|
||||||
# Turing (GPU Arch 7.5) is supported by CUDA 10 and later
|
|
||||||
if(CUDA_VERSION VERSION_GREATER "9.9")
|
|
||||||
string(APPEND GPU_CUDA_GENCODE "-gencode arch=compute_75,code=[sm_75,compute_75] ")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
cuda_compile_fatbin(GPU_GEN_OBJS ${GPU_LIB_CU} OPTIONS
|
|
||||||
-DUNIX -O3 --use_fast_math -Wno-deprecated-gpu-targets -DNV_KERNEL -DUCL_CUDADR ${GPU_CUDA_GENCODE} -D_${GPU_PREC_SETTING})
|
|
||||||
|
|
||||||
cuda_compile(GPU_OBJS ${GPU_LIB_CUDPP_CU} OPTIONS ${CUDA_REQUEST_PIC}
|
|
||||||
-DUNIX -O3 --use_fast_math -Wno-deprecated-gpu-targets -DUCL_CUDADR ${GPU_CUDA_GENCODE} -D_${GPU_PREC_SETTING})
|
|
||||||
|
|
||||||
foreach(CU_OBJ ${GPU_GEN_OBJS})
|
|
||||||
get_filename_component(CU_NAME ${CU_OBJ} NAME_WE)
|
|
||||||
string(REGEX REPLACE "^.*_lal_" "" CU_NAME "${CU_NAME}")
|
|
||||||
add_custom_command(OUTPUT ${LAMMPS_LIB_BINARY_DIR}/gpu/${CU_NAME}_cubin.h
|
|
||||||
COMMAND ${BIN2C} -c -n ${CU_NAME} ${CU_OBJ} > ${LAMMPS_LIB_BINARY_DIR}/gpu/${CU_NAME}_cubin.h
|
|
||||||
DEPENDS ${CU_OBJ}
|
|
||||||
COMMENT "Generating ${CU_NAME}_cubin.h")
|
|
||||||
list(APPEND GPU_LIB_SOURCES ${LAMMPS_LIB_BINARY_DIR}/gpu/${CU_NAME}_cubin.h)
|
|
||||||
endforeach()
|
|
||||||
set_directory_properties(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES "${LAMMPS_LIB_BINARY_DIR}/gpu/*_cubin.h")
|
|
||||||
|
|
||||||
|
|
||||||
add_library(gpu STATIC ${GPU_LIB_SOURCES} ${GPU_LIB_CUDPP_SOURCES} ${GPU_OBJS})
|
|
||||||
target_link_libraries(gpu ${CUDA_LIBRARIES} ${CUDA_CUDA_LIBRARY})
|
|
||||||
target_include_directories(gpu PRIVATE ${LAMMPS_LIB_BINARY_DIR}/gpu ${CUDA_INCLUDE_DIRS})
|
|
||||||
target_compile_definitions(gpu PRIVATE -D_${GPU_PREC_SETTING} -DMPI_GERYON -DUCL_NO_EXIT ${GPU_CUDA_MPS_FLAGS})
|
|
||||||
if(CUDPP_OPT)
|
|
||||||
target_include_directories(gpu PRIVATE ${LAMMPS_LIB_SOURCE_DIR}/gpu/cudpp_mini)
|
|
||||||
target_compile_definitions(gpu PRIVATE -DUSE_CUDPP)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
list(APPEND LAMMPS_LINK_LIBS gpu)
|
|
||||||
|
|
||||||
add_executable(nvc_get_devices ${LAMMPS_LIB_SOURCE_DIR}/gpu/geryon/ucl_get_devices.cpp)
|
|
||||||
target_compile_definitions(nvc_get_devices PRIVATE -DUCL_CUDADR)
|
|
||||||
target_link_libraries(nvc_get_devices PRIVATE ${CUDA_LIBRARIES} ${CUDA_CUDA_LIBRARY})
|
|
||||||
target_include_directories(nvc_get_devices PRIVATE ${CUDA_INCLUDE_DIRS})
|
|
||||||
|
|
||||||
|
|
||||||
elseif(GPU_API STREQUAL "OPENCL")
|
|
||||||
find_package(OpenCL REQUIRED)
|
|
||||||
set(OCL_TUNE "generic" CACHE STRING "OpenCL Device Tuning")
|
|
||||||
set(OCL_TUNE_VALUES intel fermi kepler cypress generic)
|
|
||||||
set_property(CACHE OCL_TUNE PROPERTY STRINGS ${OCL_TUNE_VALUES})
|
|
||||||
validate_option(OCL_TUNE OCL_TUNE_VALUES)
|
|
||||||
string(TOUPPER ${OCL_TUNE} OCL_TUNE)
|
|
||||||
|
|
||||||
include(OpenCLUtils)
|
|
||||||
set(OCL_COMMON_HEADERS ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_preprocessor.h ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_aux_fun1.h)
|
|
||||||
|
|
||||||
file(GLOB GPU_LIB_CU ${LAMMPS_LIB_SOURCE_DIR}/gpu/[^.]*.cu)
|
|
||||||
list(REMOVE_ITEM GPU_LIB_CU
|
|
||||||
${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_gayberne.cu
|
|
||||||
${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_gayberne_lj.cu
|
|
||||||
${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_re_squared.cu
|
|
||||||
${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_re_squared_lj.cu
|
|
||||||
${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_tersoff.cu
|
|
||||||
${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_tersoff_zbl.cu
|
|
||||||
${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_tersoff_mod.cu
|
|
||||||
)
|
|
||||||
|
|
||||||
foreach(GPU_KERNEL ${GPU_LIB_CU})
|
|
||||||
get_filename_component(basename ${GPU_KERNEL} NAME_WE)
|
|
||||||
string(SUBSTRING ${basename} 4 -1 KERNEL_NAME)
|
|
||||||
GenerateOpenCLHeader(${KERNEL_NAME} ${CMAKE_CURRENT_BINARY_DIR}/gpu/${KERNEL_NAME}_cl.h ${OCL_COMMON_HEADERS} ${GPU_KERNEL})
|
|
||||||
list(APPEND GPU_LIB_SOURCES ${CMAKE_CURRENT_BINARY_DIR}/gpu/${KERNEL_NAME}_cl.h)
|
|
||||||
endforeach()
|
|
||||||
|
|
||||||
GenerateOpenCLHeader(gayberne ${CMAKE_CURRENT_BINARY_DIR}/gpu/gayberne_cl.h ${OCL_COMMON_HEADERS} ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_ellipsoid_extra.h ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_gayberne.cu)
|
|
||||||
GenerateOpenCLHeader(gayberne_lj ${CMAKE_CURRENT_BINARY_DIR}/gpu/gayberne_lj_cl.h ${OCL_COMMON_HEADERS} ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_ellipsoid_extra.h ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_gayberne_lj.cu)
|
|
||||||
GenerateOpenCLHeader(re_squared ${CMAKE_CURRENT_BINARY_DIR}/gpu/re_squared_cl.h ${OCL_COMMON_HEADERS} ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_ellipsoid_extra.h ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_re_squared.cu)
|
|
||||||
GenerateOpenCLHeader(re_squared_lj ${CMAKE_CURRENT_BINARY_DIR}/gpu/re_squared_lj_cl.h ${OCL_COMMON_HEADERS} ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_ellipsoid_extra.h ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_re_squared_lj.cu)
|
|
||||||
GenerateOpenCLHeader(tersoff ${CMAKE_CURRENT_BINARY_DIR}/gpu/tersoff_cl.h ${OCL_COMMON_HEADERS} ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_tersoff_extra.h ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_tersoff.cu)
|
|
||||||
GenerateOpenCLHeader(tersoff_zbl ${CMAKE_CURRENT_BINARY_DIR}/gpu/tersoff_zbl_cl.h ${OCL_COMMON_HEADERS} ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_tersoff_zbl_extra.h ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_tersoff_zbl.cu)
|
|
||||||
GenerateOpenCLHeader(tersoff_mod ${CMAKE_CURRENT_BINARY_DIR}/gpu/tersoff_mod_cl.h ${OCL_COMMON_HEADERS} ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_tersoff_mod_extra.h ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_tersoff_mod.cu)
|
|
||||||
|
|
||||||
list(APPEND GPU_LIB_SOURCES
|
|
||||||
${CMAKE_CURRENT_BINARY_DIR}/gpu/gayberne_cl.h
|
|
||||||
${CMAKE_CURRENT_BINARY_DIR}/gpu/gayberne_lj_cl.h
|
|
||||||
${CMAKE_CURRENT_BINARY_DIR}/gpu/re_squared_cl.h
|
|
||||||
${CMAKE_CURRENT_BINARY_DIR}/gpu/re_squared_lj_cl.h
|
|
||||||
${CMAKE_CURRENT_BINARY_DIR}/gpu/tersoff_cl.h
|
|
||||||
${CMAKE_CURRENT_BINARY_DIR}/gpu/tersoff_zbl_cl.h
|
|
||||||
${CMAKE_CURRENT_BINARY_DIR}/gpu/tersoff_mod_cl.h
|
|
||||||
)
|
|
||||||
|
|
||||||
add_library(gpu STATIC ${GPU_LIB_SOURCES})
|
|
||||||
target_link_libraries(gpu ${OpenCL_LIBRARIES})
|
|
||||||
target_include_directories(gpu PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/gpu ${OpenCL_INCLUDE_DIRS})
|
|
||||||
target_compile_definitions(gpu PRIVATE -D_${GPU_PREC_SETTING} -D${OCL_TUNE}_OCL -DMPI_GERYON -DUCL_NO_EXIT)
|
|
||||||
target_compile_definitions(gpu PRIVATE -DUSE_OPENCL)
|
|
||||||
|
|
||||||
list(APPEND LAMMPS_LINK_LIBS gpu)
|
|
||||||
|
|
||||||
add_executable(ocl_get_devices ${LAMMPS_LIB_SOURCE_DIR}/gpu/geryon/ucl_get_devices.cpp)
|
|
||||||
target_compile_definitions(ocl_get_devices PRIVATE -DUCL_OPENCL)
|
|
||||||
target_link_libraries(ocl_get_devices PRIVATE ${OpenCL_LIBRARIES})
|
|
||||||
target_include_directories(ocl_get_devices PRIVATE ${OpenCL_INCLUDE_DIRS})
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# GPU package
|
|
||||||
FindStyleHeaders(${GPU_SOURCES_DIR} FIX_CLASS fix_ FIX)
|
|
||||||
|
|
||||||
set_property(GLOBAL PROPERTY "GPU_SOURCES" "${GPU_SOURCES}")
|
|
||||||
|
|
||||||
# detects styles which have GPU version
|
|
||||||
RegisterStylesExt(${GPU_SOURCES_DIR} gpu GPU_SOURCES)
|
|
||||||
|
|
||||||
get_property(GPU_SOURCES GLOBAL PROPERTY GPU_SOURCES)
|
|
||||||
|
|
||||||
list(APPEND LIB_SOURCES ${GPU_SOURCES})
|
|
||||||
include_directories(${GPU_SOURCES_DIR})
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
file(GLOB GPU_LIB_SOURCES ${LAMMPS_LIB_SOURCE_DIR}/gpu/[^.]*.cpp)
|
||||||
|
file(MAKE_DIRECTORY ${LAMMPS_LIB_BINARY_DIR}/gpu)
|
||||||
|
|
||||||
|
if(GPU_API STREQUAL "CUDA")
|
||||||
|
find_package(CUDA REQUIRED)
|
||||||
|
find_program(BIN2C bin2c)
|
||||||
|
if(NOT BIN2C)
|
||||||
|
message(FATAL_ERROR "Could not find bin2c, use -DBIN2C=/path/to/bin2c to help cmake finding it.")
|
||||||
|
endif()
|
||||||
|
option(CUDPP_OPT "Enable CUDPP_OPT" ON)
|
||||||
|
option(CUDA_MPS_SUPPORT "Enable tweaks to support CUDA Multi-process service (MPS)" OFF)
|
||||||
|
if(CUDA_MPS_SUPPORT)
|
||||||
|
set(GPU_CUDA_MPS_FLAGS "-DCUDA_PROXY")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
set(GPU_ARCH "sm_50" CACHE STRING "LAMMPS GPU CUDA SM primary architecture (e.g. sm_60)")
|
||||||
|
|
||||||
|
# ensure that no *cubin.h files exist from a compile in the lib/gpu folder
|
||||||
|
file(GLOB GPU_LIB_OLD_CUBIN_HEADERS ${LAMMPS_LIB_SOURCE_DIR}/gpu/*_cubin.h)
|
||||||
|
if (GPU_LIB_OLD_CUBIN_HEADERS)
|
||||||
|
message(FATAL_ERROR "########################################################################\n"
|
||||||
|
"Found file(s) generated by the make-based build system in lib/gpu\n"
|
||||||
|
"Please run\n"
|
||||||
|
" make -C ${LAMMPS_LIB_SOURCE_DIR}/gpu -f Makefile.serial clean\n"
|
||||||
|
"to remove\n"
|
||||||
|
"########################################################################")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
file(GLOB GPU_LIB_CU ${LAMMPS_LIB_SOURCE_DIR}/gpu/[^.]*.cu ${CMAKE_CURRENT_SOURCE_DIR}/gpu/[^.]*.cu)
|
||||||
|
list(REMOVE_ITEM GPU_LIB_CU ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_pppm.cu)
|
||||||
|
|
||||||
|
cuda_include_directories(${LAMMPS_LIB_SOURCE_DIR}/gpu ${LAMMPS_LIB_BINARY_DIR}/gpu)
|
||||||
|
|
||||||
|
if(CUDPP_OPT)
|
||||||
|
cuda_include_directories(${LAMMPS_LIB_SOURCE_DIR}/gpu/cudpp_mini)
|
||||||
|
file(GLOB GPU_LIB_CUDPP_SOURCES ${LAMMPS_LIB_SOURCE_DIR}/gpu/cudpp_mini/[^.]*.cpp)
|
||||||
|
file(GLOB GPU_LIB_CUDPP_CU ${LAMMPS_LIB_SOURCE_DIR}/gpu/cudpp_mini/[^.]*.cu)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# build arch/gencode commands for nvcc based on CUDA toolkit version and use choice
|
||||||
|
# --arch translates directly instead of JIT, so this should be for the preferred or most common architecture
|
||||||
|
set(GPU_CUDA_GENCODE "-arch=${GPU_ARCH}")
|
||||||
|
# Fermi (GPU Arch 2.x) is supported by CUDA 3.2 to CUDA 8.0
|
||||||
|
if((CUDA_VERSION VERSION_GREATER_EQUAL "3.2") AND (CUDA_VERSION VERSION_LESS "9.0"))
|
||||||
|
string(APPEND GPU_CUDA_GENCODE " -gencode arch=compute_20,code=[sm_20,compute_20] ")
|
||||||
|
endif()
|
||||||
|
# Kepler (GPU Arch 3.0) is supported by CUDA 5 to CUDA 10.2
|
||||||
|
if((CUDA_VERSION VERSION_GREATER_EQUAL "5.0") AND (CUDA_VERSION VERSION_LESS "11.0"))
|
||||||
|
string(APPEND GPU_CUDA_GENCODE " -gencode arch=compute_30,code=[sm_30,compute_30] ")
|
||||||
|
endif()
|
||||||
|
# Kepler (GPU Arch 3.5) is supported by CUDA 5 to CUDA 11
|
||||||
|
if((CUDA_VERSION VERSION_GREATER_EQUAL "5.0") AND (CUDA_VERSION VERSION_LESS "12.0"))
|
||||||
|
string(APPEND GPU_CUDA_GENCODE " -gencode arch=compute_30,code=[sm_30,compute_30] -gencode arch=compute_35,code=[sm_35,compute_35]")
|
||||||
|
endif()
|
||||||
|
# Maxwell (GPU Arch 5.x) is supported by CUDA 6 and later
|
||||||
|
if(CUDA_VERSION VERSION_GREATER_EQUAL "6.0")
|
||||||
|
string(APPEND GPU_CUDA_GENCODE " -gencode arch=compute_50,code=[sm_50,compute_50] -gencode arch=compute_52,code=[sm_52,compute_52]")
|
||||||
|
endif()
|
||||||
|
# Pascal (GPU Arch 6.x) is supported by CUDA 8 and later
|
||||||
|
if(CUDA_VERSION VERSION_GREATER_EQUAL "8.0")
|
||||||
|
string(APPEND GPU_CUDA_GENCODE " -gencode arch=compute_60,code=[sm_60,compute_60] -gencode arch=compute_61,code=[sm_61,compute_61]")
|
||||||
|
endif()
|
||||||
|
# Volta (GPU Arch 7.0) is supported by CUDA 9 and later
|
||||||
|
if(CUDA_VERSION VERSION_GREATER_EQUAL "9.0")
|
||||||
|
string(APPEND GPU_CUDA_GENCODE " -gencode arch=compute_70,code=[sm_70,compute_70]")
|
||||||
|
endif()
|
||||||
|
# Turing (GPU Arch 7.5) is supported by CUDA 10 and later
|
||||||
|
if(CUDA_VERSION VERSION_GREATER_EQUAL "10.0")
|
||||||
|
string(APPEND GPU_CUDA_GENCODE " -gencode arch=compute_75,code=[sm_75,compute_75]")
|
||||||
|
endif()
|
||||||
|
# Ampere (GPU Arch 8.0) is supported by CUDA 11 and later
|
||||||
|
if(CUDA_VERSION VERSION_GREATER_EQUAL "11.0")
|
||||||
|
string(APPEND GPU_CUDA_GENCODE " -gencode arch=compute_80,code=[sm_80,compute_80]")
|
||||||
|
endif()
|
||||||
|
if(CUDA_VERSION VERSION_GREATER_EQUAL "12.0")
|
||||||
|
message(WARNING "Unsupported CUDA version. Use at your own risk.")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
cuda_compile_fatbin(GPU_GEN_OBJS ${GPU_LIB_CU} OPTIONS ${CUDA_REQUEST_PIC}
|
||||||
|
-DUNIX -O3 --use_fast_math -Wno-deprecated-gpu-targets -DNV_KERNEL -DUCL_CUDADR ${GPU_CUDA_GENCODE} -D_${GPU_PREC_SETTING})
|
||||||
|
|
||||||
|
cuda_compile(GPU_OBJS ${GPU_LIB_CUDPP_CU} OPTIONS ${CUDA_REQUEST_PIC}
|
||||||
|
-DUNIX -O3 --use_fast_math -Wno-deprecated-gpu-targets -DUCL_CUDADR ${GPU_CUDA_GENCODE} -D_${GPU_PREC_SETTING})
|
||||||
|
|
||||||
|
foreach(CU_OBJ ${GPU_GEN_OBJS})
|
||||||
|
get_filename_component(CU_NAME ${CU_OBJ} NAME_WE)
|
||||||
|
string(REGEX REPLACE "^.*_lal_" "" CU_NAME "${CU_NAME}")
|
||||||
|
add_custom_command(OUTPUT ${LAMMPS_LIB_BINARY_DIR}/gpu/${CU_NAME}_cubin.h
|
||||||
|
COMMAND ${BIN2C} -c -n ${CU_NAME} ${CU_OBJ} > ${LAMMPS_LIB_BINARY_DIR}/gpu/${CU_NAME}_cubin.h
|
||||||
|
DEPENDS ${CU_OBJ}
|
||||||
|
COMMENT "Generating ${CU_NAME}_cubin.h")
|
||||||
|
list(APPEND GPU_LIB_SOURCES ${LAMMPS_LIB_BINARY_DIR}/gpu/${CU_NAME}_cubin.h)
|
||||||
|
endforeach()
|
||||||
|
set_directory_properties(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES "${LAMMPS_LIB_BINARY_DIR}/gpu/*_cubin.h")
|
||||||
|
|
||||||
|
add_library(gpu STATIC ${GPU_LIB_SOURCES} ${GPU_LIB_CUDPP_SOURCES} ${GPU_OBJS})
|
||||||
|
target_link_libraries(gpu PRIVATE ${CUDA_LIBRARIES} ${CUDA_CUDA_LIBRARY})
|
||||||
|
target_include_directories(gpu PRIVATE ${LAMMPS_LIB_BINARY_DIR}/gpu ${CUDA_INCLUDE_DIRS})
|
||||||
|
target_compile_definitions(gpu PRIVATE -D_${GPU_PREC_SETTING} -DMPI_GERYON -DUCL_NO_EXIT ${GPU_CUDA_MPS_FLAGS})
|
||||||
|
if(CUDPP_OPT)
|
||||||
|
target_include_directories(gpu PRIVATE ${LAMMPS_LIB_SOURCE_DIR}/gpu/cudpp_mini)
|
||||||
|
target_compile_definitions(gpu PRIVATE -DUSE_CUDPP)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
target_link_libraries(lammps PRIVATE gpu)
|
||||||
|
|
||||||
|
add_executable(nvc_get_devices ${LAMMPS_LIB_SOURCE_DIR}/gpu/geryon/ucl_get_devices.cpp)
|
||||||
|
target_compile_definitions(nvc_get_devices PRIVATE -DUCL_CUDADR)
|
||||||
|
target_link_libraries(nvc_get_devices PRIVATE ${CUDA_LIBRARIES} ${CUDA_CUDA_LIBRARY})
|
||||||
|
target_include_directories(nvc_get_devices PRIVATE ${CUDA_INCLUDE_DIRS})
|
||||||
|
|
||||||
|
elseif(GPU_API STREQUAL "OPENCL")
|
||||||
|
if(${CMAKE_SYSTEM_NAME} STREQUAL "Windows")
|
||||||
|
# download and unpack support binaries for compilation of windows binaries.
|
||||||
|
set(LAMMPS_THIRDPARTY_URL "https://download.lammps.org/thirdparty")
|
||||||
|
file(DOWNLOAD "${LAMMPS_THIRDPARTY_URL}/opencl-win-devel.tar.gz" "${CMAKE_CURRENT_BINARY_DIR}/opencl-win-devel.tar.gz"
|
||||||
|
EXPECTED_MD5 2c00364888d5671195598b44c2e0d44d)
|
||||||
|
execute_process(COMMAND ${CMAKE_COMMAND} -E tar xzf opencl-win-devel.tar.gz WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
|
||||||
|
add_library(OpenCL::OpenCL UNKNOWN IMPORTED)
|
||||||
|
if(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "x86")
|
||||||
|
set_target_properties(OpenCL::OpenCL PROPERTIES IMPORTED_LOCATION "${CMAKE_CURRENT_BINARY_DIR}/OpenCL/lib_win32/libOpenCL.dll")
|
||||||
|
elseif(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "x86_64")
|
||||||
|
set_target_properties(OpenCL::OpenCL PROPERTIES IMPORTED_LOCATION "${CMAKE_CURRENT_BINARY_DIR}/OpenCL/lib_win64/libOpenCL.dll")
|
||||||
|
endif()
|
||||||
|
set_target_properties(OpenCL::OpenCL PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${CMAKE_CURRENT_BINARY_DIR}/OpenCL/include")
|
||||||
|
else()
|
||||||
|
find_package(OpenCL REQUIRED)
|
||||||
|
endif()
|
||||||
|
set(OCL_TUNE "generic" CACHE STRING "OpenCL Device Tuning")
|
||||||
|
set(OCL_TUNE_VALUES intel fermi kepler cypress generic)
|
||||||
|
set_property(CACHE OCL_TUNE PROPERTY STRINGS ${OCL_TUNE_VALUES})
|
||||||
|
validate_option(OCL_TUNE OCL_TUNE_VALUES)
|
||||||
|
string(TOUPPER ${OCL_TUNE} OCL_TUNE)
|
||||||
|
|
||||||
|
include(OpenCLUtils)
|
||||||
|
set(OCL_COMMON_HEADERS ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_preprocessor.h ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_aux_fun1.h)
|
||||||
|
|
||||||
|
file(GLOB GPU_LIB_CU ${LAMMPS_LIB_SOURCE_DIR}/gpu/[^.]*.cu)
|
||||||
|
list(REMOVE_ITEM GPU_LIB_CU
|
||||||
|
${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_gayberne.cu
|
||||||
|
${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_gayberne_lj.cu
|
||||||
|
${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_re_squared.cu
|
||||||
|
${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_re_squared_lj.cu
|
||||||
|
${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_tersoff.cu
|
||||||
|
${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_tersoff_zbl.cu
|
||||||
|
${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_tersoff_mod.cu
|
||||||
|
)
|
||||||
|
|
||||||
|
foreach(GPU_KERNEL ${GPU_LIB_CU})
|
||||||
|
get_filename_component(basename ${GPU_KERNEL} NAME_WE)
|
||||||
|
string(SUBSTRING ${basename} 4 -1 KERNEL_NAME)
|
||||||
|
GenerateOpenCLHeader(${KERNEL_NAME} ${CMAKE_CURRENT_BINARY_DIR}/gpu/${KERNEL_NAME}_cl.h ${OCL_COMMON_HEADERS} ${GPU_KERNEL})
|
||||||
|
list(APPEND GPU_LIB_SOURCES ${CMAKE_CURRENT_BINARY_DIR}/gpu/${KERNEL_NAME}_cl.h)
|
||||||
|
endforeach()
|
||||||
|
|
||||||
|
GenerateOpenCLHeader(gayberne ${CMAKE_CURRENT_BINARY_DIR}/gpu/gayberne_cl.h ${OCL_COMMON_HEADERS} ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_ellipsoid_extra.h ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_gayberne.cu)
|
||||||
|
GenerateOpenCLHeader(gayberne_lj ${CMAKE_CURRENT_BINARY_DIR}/gpu/gayberne_lj_cl.h ${OCL_COMMON_HEADERS} ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_ellipsoid_extra.h ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_gayberne_lj.cu)
|
||||||
|
GenerateOpenCLHeader(re_squared ${CMAKE_CURRENT_BINARY_DIR}/gpu/re_squared_cl.h ${OCL_COMMON_HEADERS} ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_ellipsoid_extra.h ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_re_squared.cu)
|
||||||
|
GenerateOpenCLHeader(re_squared_lj ${CMAKE_CURRENT_BINARY_DIR}/gpu/re_squared_lj_cl.h ${OCL_COMMON_HEADERS} ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_ellipsoid_extra.h ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_re_squared_lj.cu)
|
||||||
|
GenerateOpenCLHeader(tersoff ${CMAKE_CURRENT_BINARY_DIR}/gpu/tersoff_cl.h ${OCL_COMMON_HEADERS} ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_tersoff_extra.h ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_tersoff.cu)
|
||||||
|
GenerateOpenCLHeader(tersoff_zbl ${CMAKE_CURRENT_BINARY_DIR}/gpu/tersoff_zbl_cl.h ${OCL_COMMON_HEADERS} ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_tersoff_zbl_extra.h ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_tersoff_zbl.cu)
|
||||||
|
GenerateOpenCLHeader(tersoff_mod ${CMAKE_CURRENT_BINARY_DIR}/gpu/tersoff_mod_cl.h ${OCL_COMMON_HEADERS} ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_tersoff_mod_extra.h ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_tersoff_mod.cu)
|
||||||
|
|
||||||
|
list(APPEND GPU_LIB_SOURCES
|
||||||
|
${CMAKE_CURRENT_BINARY_DIR}/gpu/gayberne_cl.h
|
||||||
|
${CMAKE_CURRENT_BINARY_DIR}/gpu/gayberne_lj_cl.h
|
||||||
|
${CMAKE_CURRENT_BINARY_DIR}/gpu/re_squared_cl.h
|
||||||
|
${CMAKE_CURRENT_BINARY_DIR}/gpu/re_squared_lj_cl.h
|
||||||
|
${CMAKE_CURRENT_BINARY_DIR}/gpu/tersoff_cl.h
|
||||||
|
${CMAKE_CURRENT_BINARY_DIR}/gpu/tersoff_zbl_cl.h
|
||||||
|
${CMAKE_CURRENT_BINARY_DIR}/gpu/tersoff_mod_cl.h
|
||||||
|
)
|
||||||
|
|
||||||
|
add_library(gpu STATIC ${GPU_LIB_SOURCES})
|
||||||
|
target_link_libraries(gpu PRIVATE OpenCL::OpenCL)
|
||||||
|
target_include_directories(gpu PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/gpu)
|
||||||
|
target_compile_definitions(gpu PRIVATE -D_${GPU_PREC_SETTING} -D${OCL_TUNE}_OCL -DMPI_GERYON -DUCL_NO_EXIT)
|
||||||
|
target_compile_definitions(gpu PRIVATE -DUSE_OPENCL)
|
||||||
|
|
||||||
|
target_link_libraries(lammps PRIVATE gpu)
|
||||||
|
|
||||||
|
add_executable(ocl_get_devices ${LAMMPS_LIB_SOURCE_DIR}/gpu/geryon/ucl_get_devices.cpp)
|
||||||
|
target_compile_definitions(ocl_get_devices PRIVATE -DUCL_OPENCL)
|
||||||
|
target_link_libraries(ocl_get_devices PRIVATE OpenCL::OpenCL)
|
||||||
|
elseif(GPU_API STREQUAL "HIP")
|
||||||
|
if(NOT DEFINED HIP_PATH)
|
||||||
|
if(NOT DEFINED ENV{HIP_PATH})
|
||||||
|
set(HIP_PATH "/opt/rocm/hip" CACHE PATH "Path to which HIP has been installed")
|
||||||
|
else()
|
||||||
|
set(HIP_PATH $ENV{HIP_PATH} CACHE PATH "Path to which HIP has been installed")
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
set(CMAKE_MODULE_PATH "${HIP_PATH}/cmake" ${CMAKE_MODULE_PATH})
|
||||||
|
find_package(HIP REQUIRED)
|
||||||
|
option(HIP_USE_DEVICE_SORT "Use GPU sorting" ON)
|
||||||
|
|
||||||
|
if(NOT DEFINED HIP_PLATFORM)
|
||||||
|
if(NOT DEFINED ENV{HIP_PLATFORM})
|
||||||
|
set(HIP_PLATFORM "hcc" CACHE PATH "HIP Platform to be used during compilation")
|
||||||
|
else()
|
||||||
|
set(HIP_PLATFORM $ENV{HIP_PLATFORM} CACHE PATH "HIP Platform used during compilation")
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
set(ENV{HIP_PLATFORM} ${HIP_PLATFORM})
|
||||||
|
|
||||||
|
if(HIP_PLATFORM STREQUAL "hcc")
|
||||||
|
set(HIP_ARCH "gfx906" CACHE STRING "HIP target architecture")
|
||||||
|
elseif(HIP_PLATFORM STREQUAL "nvcc")
|
||||||
|
find_package(CUDA REQUIRED)
|
||||||
|
set(HIP_ARCH "sm_50" CACHE STRING "HIP primary CUDA architecture (e.g. sm_60)")
|
||||||
|
|
||||||
|
# build arch/gencode commands for nvcc based on CUDA toolkit version and use choice
|
||||||
|
# --arch translates directly instead of JIT, so this should be for the preferred or most common architecture
|
||||||
|
set(HIP_CUDA_GENCODE "-arch=${HIP_ARCH}")
|
||||||
|
# Fermi (GPU Arch 2.x) is supported by CUDA 3.2 to CUDA 8.0
|
||||||
|
if((CUDA_VERSION VERSION_GREATER_EQUAL "3.2") AND (CUDA_VERSION VERSION_LESS "9.0"))
|
||||||
|
string(APPEND HIP_CUDA_GENCODE " -gencode arch=compute_20,code=[sm_20,compute_20]")
|
||||||
|
endif()
|
||||||
|
# Kepler (GPU Arch 3.0) is supported by CUDA 5 to CUDA 10.2
|
||||||
|
if((CUDA_VERSION VERSION_GREATER_EQUAL "5.0") AND (CUDA_VERSION VERSION_LESS "11.0"))
|
||||||
|
string(APPEND HIP_CUDA_GENCODE " -gencode arch=compute_30,code=[sm_30,compute_30]")
|
||||||
|
endif()
|
||||||
|
# Kepler (GPU Arch 3.5) is supported by CUDA 5 to CUDA 11.0
|
||||||
|
if((CUDA_VERSION VERSION_GREATER_EQUAL "5.0") AND (CUDA_VERSION VERSION_LESS "12.0"))
|
||||||
|
string(APPEND HIP_CUDA_GENCODE " -gencode arch=compute_35,code=[sm_35,compute_35]")
|
||||||
|
endif()
|
||||||
|
# Maxwell (GPU Arch 5.x) is supported by CUDA 6 and later
|
||||||
|
if(CUDA_VERSION VERSION_GREATER_EQUAL "6.0")
|
||||||
|
string(APPEND HIP_CUDA_GENCODE " -gencode arch=compute_50,code=[sm_50,compute_50] -gencode arch=compute_52,code=[sm_52,compute_52]")
|
||||||
|
endif()
|
||||||
|
# Pascal (GPU Arch 6.x) is supported by CUDA 8 and later
|
||||||
|
if(CUDA_VERSION VERSION_GREATER_EQUAL "8.0")
|
||||||
|
string(APPEND HIP_CUDA_GENCODE " -gencode arch=compute_60,code=[sm_60,compute_60] -gencode arch=compute_61,code=[sm_61,compute_61]")
|
||||||
|
endif()
|
||||||
|
# Volta (GPU Arch 7.0) is supported by CUDA 9 and later
|
||||||
|
if(CUDA_VERSION VERSION_GREATER_EQUAL "9.0")
|
||||||
|
string(APPEND HIP_CUDA_GENCODE " -gencode arch=compute_70,code=[sm_70,compute_70]")
|
||||||
|
endif()
|
||||||
|
# Turing (GPU Arch 7.5) is supported by CUDA 10 and later
|
||||||
|
if(CUDA_VERSION VERSION_GREATER_EQUAL "10.0")
|
||||||
|
string(APPEND HIP_CUDA_GENCODE " -gencode arch=compute_75,code=[sm_75,compute_75]")
|
||||||
|
endif()
|
||||||
|
# Ampere (GPU Arch 8.0) is supported by CUDA 11 and later
|
||||||
|
if(CUDA_VERSION VERSION_GREATER_EQUAL "11.0")
|
||||||
|
string(APPEND HIP_CUDA_GENCODE " -gencode arch=compute_80,code=[sm_80,compute_80]")
|
||||||
|
endif()
|
||||||
|
if(CUDA_VERSION VERSION_GREATER_EQUAL "12.0")
|
||||||
|
message(WARNING "Unsupported CUDA version. Use at your own risk.")
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
file(GLOB GPU_LIB_CU ${LAMMPS_LIB_SOURCE_DIR}/gpu/[^.]*.cu ${CMAKE_CURRENT_SOURCE_DIR}/gpu/[^.]*.cu)
|
||||||
|
list(REMOVE_ITEM GPU_LIB_CU ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_pppm.cu)
|
||||||
|
|
||||||
|
set(GPU_LIB_CU_HIP "")
|
||||||
|
foreach(CU_FILE ${GPU_LIB_CU})
|
||||||
|
get_filename_component(CU_NAME ${CU_FILE} NAME_WE)
|
||||||
|
string(REGEX REPLACE "^.*lal_" "" CU_NAME "${CU_NAME}")
|
||||||
|
|
||||||
|
set(CU_CPP_FILE "${LAMMPS_LIB_BINARY_DIR}/gpu/${CU_NAME}.cu.cpp")
|
||||||
|
set(CUBIN_FILE "${LAMMPS_LIB_BINARY_DIR}/gpu/${CU_NAME}.cubin")
|
||||||
|
set(CUBIN_H_FILE "${LAMMPS_LIB_BINARY_DIR}/gpu/${CU_NAME}_cubin.h")
|
||||||
|
|
||||||
|
if(HIP_PLATFORM STREQUAL "hcc")
|
||||||
|
configure_file(${CU_FILE} ${CU_CPP_FILE} COPYONLY)
|
||||||
|
|
||||||
|
if(HIP_COMPILER STREQUAL "clang")
|
||||||
|
add_custom_command(OUTPUT ${CUBIN_FILE}
|
||||||
|
VERBATIM COMMAND ${HIP_HIPCC_EXECUTABLE} --genco --offload-arch=${HIP_ARCH} -O3 -ffast-math -DUSE_HIP -D_${GPU_PREC_SETTING} -I${LAMMPS_LIB_SOURCE_DIR}/gpu -o ${CUBIN_FILE} ${CU_CPP_FILE}
|
||||||
|
DEPENDS ${CU_CPP_FILE}
|
||||||
|
COMMENT "Generating ${CU_NAME}.cubin")
|
||||||
|
else()
|
||||||
|
add_custom_command(OUTPUT ${CUBIN_FILE}
|
||||||
|
VERBATIM COMMAND ${HIP_HIPCC_EXECUTABLE} --genco -t="${HIP_ARCH}" -f=\"-O3 -ffast-math -DUSE_HIP -D_${GPU_PREC_SETTING} -I${LAMMPS_LIB_SOURCE_DIR}/gpu\" -o ${CUBIN_FILE} ${CU_CPP_FILE}
|
||||||
|
DEPENDS ${CU_CPP_FILE}
|
||||||
|
COMMENT "Generating ${CU_NAME}.cubin")
|
||||||
|
endif()
|
||||||
|
elseif(HIP_PLATFORM STREQUAL "nvcc")
|
||||||
|
add_custom_command(OUTPUT ${CUBIN_FILE}
|
||||||
|
VERBATIM COMMAND ${HIP_HIPCC_EXECUTABLE} --fatbin --use_fast_math -DUSE_HIP -D_${GPU_PREC_SETTING} ${HIP_CUDA_GENCODE} -I${LAMMPS_LIB_SOURCE_DIR}/gpu -o ${CUBIN_FILE} ${CU_FILE}
|
||||||
|
DEPENDS ${CU_FILE}
|
||||||
|
COMMENT "Generating ${CU_NAME}.cubin")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
add_custom_command(OUTPUT ${CUBIN_H_FILE}
|
||||||
|
COMMAND ${CMAKE_COMMAND} -D SOURCE_DIR=${CMAKE_CURRENT_SOURCE_DIR} -D VARNAME=${CU_NAME} -D HEADER_FILE=${CUBIN_H_FILE} -D SOURCE_FILES=${CUBIN_FILE} -P ${CMAKE_CURRENT_SOURCE_DIR}/Modules/GenerateBinaryHeader.cmake
|
||||||
|
DEPENDS ${CUBIN_FILE}
|
||||||
|
COMMENT "Generating ${CU_NAME}_cubin.h")
|
||||||
|
|
||||||
|
list(APPEND GPU_LIB_SOURCES ${CUBIN_H_FILE})
|
||||||
|
endforeach()
|
||||||
|
|
||||||
|
set_directory_properties(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES "${LAMMPS_LIB_BINARY_DIR}/gpu/*_cubin.h ${LAMMPS_LIB_BINARY_DIR}/gpu/*.cu.cpp")
|
||||||
|
|
||||||
|
hip_add_library(gpu STATIC ${GPU_LIB_SOURCES})
|
||||||
|
target_include_directories(gpu PRIVATE ${LAMMPS_LIB_BINARY_DIR}/gpu)
|
||||||
|
target_compile_definitions(gpu PRIVATE -D_${GPU_PREC_SETTING} -DMPI_GERYON -DUCL_NO_EXIT)
|
||||||
|
target_compile_definitions(gpu PRIVATE -DUSE_HIP)
|
||||||
|
|
||||||
|
if(HIP_USE_DEVICE_SORT)
|
||||||
|
# add hipCUB
|
||||||
|
target_include_directories(gpu PRIVATE ${HIP_ROOT_DIR}/../include)
|
||||||
|
target_compile_definitions(gpu PRIVATE -DUSE_HIP_DEVICE_SORT)
|
||||||
|
|
||||||
|
if(HIP_PLATFORM STREQUAL "nvcc")
|
||||||
|
find_package(CUB)
|
||||||
|
|
||||||
|
if(CUB_FOUND)
|
||||||
|
set(DOWNLOAD_CUB_DEFAULT OFF)
|
||||||
|
else()
|
||||||
|
set(DOWNLOAD_CUB_DEFAULT ON)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
option(DOWNLOAD_CUB "Download and compile the CUB library instead of using an already installed one" ${DOWNLOAD_CUB_DEFAULT})
|
||||||
|
|
||||||
|
if(DOWNLOAD_CUB)
|
||||||
|
message(STATUS "CUB download requested")
|
||||||
|
include(ExternalProject)
|
||||||
|
|
||||||
|
ExternalProject_Add(CUB
|
||||||
|
GIT_REPOSITORY https://github.com/NVlabs/cub
|
||||||
|
TIMEOUT 5
|
||||||
|
PREFIX "${CMAKE_CURRENT_BINARY_DIR}"
|
||||||
|
CONFIGURE_COMMAND ""
|
||||||
|
BUILD_COMMAND ""
|
||||||
|
INSTALL_COMMAND ""
|
||||||
|
UPDATE_COMMAND ""
|
||||||
|
)
|
||||||
|
ExternalProject_get_property(CUB SOURCE_DIR)
|
||||||
|
set(CUB_INCLUDE_DIR ${SOURCE_DIR})
|
||||||
|
else()
|
||||||
|
find_package(CUB)
|
||||||
|
if(NOT CUB_FOUND)
|
||||||
|
message(FATAL_ERROR "CUB library not found. Help CMake to find it by setting CUB_INCLUDE_DIR, or set DOWNLOAD_VORO=ON to download it")
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
target_include_directories(gpu PRIVATE ${CUB_INCLUDE_DIR})
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
hip_add_executable(hip_get_devices ${LAMMPS_LIB_SOURCE_DIR}/gpu/geryon/ucl_get_devices.cpp)
|
||||||
|
target_compile_definitions(hip_get_devices PRIVATE -DUCL_HIP)
|
||||||
|
|
||||||
|
if(HIP_PLATFORM STREQUAL "nvcc")
|
||||||
|
target_compile_definitions(gpu PRIVATE -D__HIP_PLATFORM_NVCC__)
|
||||||
|
target_include_directories(gpu PRIVATE ${HIP_ROOT_DIR}/../include)
|
||||||
|
target_include_directories(gpu PRIVATE ${CUDA_INCLUDE_DIRS})
|
||||||
|
target_link_libraries(gpu PRIVATE ${CUDA_LIBRARIES} ${CUDA_CUDA_LIBRARY})
|
||||||
|
|
||||||
|
target_compile_definitions(hip_get_devices PRIVATE -D__HIP_PLATFORM_NVCC__)
|
||||||
|
target_include_directories(hip_get_devices PRIVATE ${HIP_ROOT_DIR}/include)
|
||||||
|
target_include_directories(hip_get_devices PRIVATE ${CUDA_INCLUDE_DIRS})
|
||||||
|
target_link_libraries(hip_get_devices PRIVATE ${CUDA_LIBRARIES} ${CUDA_CUDA_LIBRARY})
|
||||||
|
elseif(HIP_PLATFORM STREQUAL "hcc")
|
||||||
|
target_compile_definitions(gpu PRIVATE -D__HIP_PLATFORM_HCC__)
|
||||||
|
target_include_directories(gpu PRIVATE ${HIP_ROOT_DIR}/../include)
|
||||||
|
|
||||||
|
target_compile_definitions(hip_get_devices PRIVATE -D__HIP_PLATFORM_HCC__)
|
||||||
|
target_include_directories(hip_get_devices PRIVATE ${HIP_ROOT_DIR}/../include)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
target_link_libraries(lammps PRIVATE gpu)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# GPU package
|
||||||
|
FindStyleHeaders(${GPU_SOURCES_DIR} FIX_CLASS fix_ FIX)
|
||||||
|
|
||||||
|
set_property(GLOBAL PROPERTY "GPU_SOURCES" "${GPU_SOURCES}")
|
||||||
|
|
||||||
|
# detects styles which have GPU version
|
||||||
|
RegisterStylesExt(${GPU_SOURCES_DIR} gpu GPU_SOURCES)
|
||||||
|
|
||||||
|
get_property(GPU_SOURCES GLOBAL PROPERTY GPU_SOURCES)
|
||||||
|
|
||||||
|
if(NOT BUILD_MPI)
|
||||||
|
# mpistubs is aliased to MPI::MPI_CXX, but older versions of cmake won't work forward the include path
|
||||||
|
target_link_libraries(gpu PRIVATE mpi_stubs)
|
||||||
|
else()
|
||||||
|
target_link_libraries(gpu PRIVATE MPI::MPI_CXX)
|
||||||
|
endif()
|
||||||
|
target_compile_definitions(gpu PRIVATE -DLAMMPS_${LAMMPS_SIZES})
|
||||||
|
set_target_properties(gpu PROPERTIES OUTPUT_NAME lammps_gpu${LAMMPS_MACHINE})
|
||||||
|
target_sources(lammps PRIVATE ${GPU_SOURCES})
|
||||||
|
target_include_directories(lammps PRIVATE ${GPU_SOURCES_DIR})
|
||||||
|
|||||||
@ -1,57 +1,63 @@
|
|||||||
if(PKG_KIM)
|
set(KIM-API_MIN_VERSION 2.1.3)
|
||||||
set(KIM-API_MIN_VERSION 2.1)
|
find_package(CURL)
|
||||||
find_package(CURL)
|
if(CURL_FOUND)
|
||||||
if(CURL_FOUND)
|
if(CMAKE_VERSION VERSION_LESS 3.12)
|
||||||
include_directories(${CURL_INCLUDE_DIRS})
|
target_include_directories(lammps PRIVATE ${CURL_INCLUDE_DIRS})
|
||||||
list(APPEND LAMMPS_LINK_LIBS ${CURL_LIBRARIES})
|
target_link_libraries(lammps PRIVATE ${CURL_LIBRARIES})
|
||||||
add_definitions(-DLMP_KIM_CURL)
|
|
||||||
endif()
|
|
||||||
find_package(KIM-API QUIET)
|
|
||||||
if(KIM-API_FOUND)
|
|
||||||
if (KIM-API_VERSION VERSION_LESS ${KIM-API_MIN_VERSION})
|
|
||||||
if ("${DOWNLOAD_KIM}" STREQUAL "")
|
|
||||||
message(WARNING "Unsuitable KIM-API version \"${KIM-API_VERSION}\" found, but required is at least \"${KIM-API_MIN_VERSION}\". Default behavior set to download and build our own.")
|
|
||||||
endif()
|
|
||||||
set(DOWNLOAD_KIM_DEFAULT ON)
|
|
||||||
else()
|
|
||||||
set(DOWNLOAD_KIM_DEFAULT OFF)
|
|
||||||
endif()
|
|
||||||
else()
|
else()
|
||||||
if ("${DOWNLOAD_KIM}" STREQUAL "")
|
target_link_libraries(lammps PRIVATE CURL::libcurl)
|
||||||
message(WARNING "KIM-API package not found. Default behavior set to download and build our own")
|
|
||||||
endif()
|
|
||||||
set(DOWNLOAD_KIM_DEFAULT ON)
|
|
||||||
endif()
|
endif()
|
||||||
option(DOWNLOAD_KIM "Download KIM-API from OpenKIM instead of using an already installed one" ${DOWNLOAD_KIM_DEFAULT})
|
target_compile_definitions(lammps PRIVATE -DLMP_KIM_CURL)
|
||||||
if(DOWNLOAD_KIM)
|
set(LMP_DEBUG_CURL OFF CACHE STRING "Set libcurl verbose mode on/off. If on, it displays a lot of verbose information about its operations.")
|
||||||
if(CMAKE_GENERATOR STREQUAL "Ninja")
|
mark_as_advanced(LMP_DEBUG_CURL)
|
||||||
message(FATAL_ERROR "Cannot build downloaded KIM-API library with Ninja build tool")
|
if(LMP_DEBUG_CURL)
|
||||||
endif()
|
target_compile_definitions(lammps PRIVATE -DLMP_DEBUG_CURL)
|
||||||
message(STATUS "KIM-API download requested - we will build our own")
|
endif()
|
||||||
include(CheckLanguage)
|
set(LMP_NO_SSL_CHECK OFF CACHE STRING "Tell libcurl to not verify the peer. If on, the connection succeeds regardless of the names in the certificate. Insecure - Use with caution!")
|
||||||
include(ExternalProject)
|
mark_as_advanced(LMP_NO_SSL_CHECK)
|
||||||
enable_language(C)
|
if(LMP_NO_SSL_CHECK)
|
||||||
check_language(Fortran)
|
target_compile_definitions(lammps PRIVATE -DLMP_NO_SSL_CHECK)
|
||||||
if(NOT CMAKE_Fortran_COMPILER)
|
|
||||||
message(FATAL_ERROR "Compiling the KIM-API library requires a Fortran compiler")
|
|
||||||
endif()
|
|
||||||
ExternalProject_Add(kim_build
|
|
||||||
URL https://s3.openkim.org/kim-api/kim-api-2.1.3.txz
|
|
||||||
URL_MD5 6ee829a1bbba5f8b9874c88c4c4ebff8
|
|
||||||
BINARY_DIR build
|
|
||||||
CMAKE_ARGS -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
|
|
||||||
-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
|
|
||||||
-DCMAKE_Fortran_COMPILER=${CMAKE_Fortran_COMPILER}
|
|
||||||
-DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>
|
|
||||||
-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
|
|
||||||
)
|
|
||||||
ExternalProject_get_property(kim_build INSTALL_DIR)
|
|
||||||
set(KIM-API_INCLUDE_DIRS ${INSTALL_DIR}/include/kim-api)
|
|
||||||
set(KIM-API_LDFLAGS ${INSTALL_DIR}/${CMAKE_INSTALL_LIBDIR}/libkim-api${CMAKE_SHARED_LIBRARY_SUFFIX})
|
|
||||||
list(APPEND LAMMPS_DEPS kim_build)
|
|
||||||
else()
|
|
||||||
find_package(KIM-API ${KIM-API_MIN_VERSION} REQUIRED)
|
|
||||||
endif()
|
endif()
|
||||||
list(APPEND LAMMPS_LINK_LIBS "${KIM-API_LDFLAGS}")
|
endif()
|
||||||
include_directories(${KIM-API_INCLUDE_DIRS})
|
find_package(PkgConfig QUIET)
|
||||||
|
set(DOWNLOAD_KIM_DEFAULT ON)
|
||||||
|
if(PKG_CONFIG_FOUND)
|
||||||
|
pkg_check_modules(KIM-API QUIET libkim-api>=${KIM-API_MIN_VERSION})
|
||||||
|
if(KIM-API_FOUND)
|
||||||
|
set(DOWNLOAD_KIM_DEFAULT OFF)
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
option(DOWNLOAD_KIM "Download KIM-API from OpenKIM instead of using an already installed one" ${DOWNLOAD_KIM_DEFAULT})
|
||||||
|
if(DOWNLOAD_KIM)
|
||||||
|
message(STATUS "KIM-API download requested - we will build our own")
|
||||||
|
include(ExternalProject)
|
||||||
|
enable_language(C)
|
||||||
|
enable_language(Fortran)
|
||||||
|
ExternalProject_Add(kim_build
|
||||||
|
URL https://s3.openkim.org/kim-api/kim-api-2.1.3.txz
|
||||||
|
URL_MD5 6ee829a1bbba5f8b9874c88c4c4ebff8
|
||||||
|
BINARY_DIR build
|
||||||
|
CMAKE_ARGS ${CMAKE_REQUEST_PIC}
|
||||||
|
-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
|
||||||
|
-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
|
||||||
|
-DCMAKE_Fortran_COMPILER=${CMAKE_Fortran_COMPILER}
|
||||||
|
-DCMAKE_INSTALL_LIBDIR=lib
|
||||||
|
-DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>
|
||||||
|
-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
|
||||||
|
-DCMAKE_MAKE_PROGRAM=${CMAKE_MAKE_PROGRAM}
|
||||||
|
-DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE}
|
||||||
|
BUILD_BYPRODUCTS <INSTALL_DIR>/lib/libkim-api${CMAKE_SHARED_LIBRARY_SUFFIX}
|
||||||
|
)
|
||||||
|
ExternalProject_get_property(kim_build INSTALL_DIR)
|
||||||
|
file(MAKE_DIRECTORY ${INSTALL_DIR}/include/kim-api)
|
||||||
|
add_library(LAMMPS::KIM UNKNOWN IMPORTED)
|
||||||
|
set_target_properties(LAMMPS::KIM PROPERTIES
|
||||||
|
IMPORTED_LOCATION "${INSTALL_DIR}/lib/libkim-api${CMAKE_SHARED_LIBRARY_SUFFIX}"
|
||||||
|
INTERFACE_INCLUDE_DIRECTORIES "${INSTALL_DIR}/include/kim-api")
|
||||||
|
target_link_libraries(lammps PRIVATE LAMMPS::KIM)
|
||||||
|
add_dependencies(LAMMPS::KIM kim_build)
|
||||||
|
else()
|
||||||
|
find_package(PkgConfig REQUIRED)
|
||||||
|
pkg_check_modules(KIM-API REQUIRED IMPORTED_TARGET libkim-api>=${KIM-API_MIN_VERSION})
|
||||||
|
target_link_libraries(lammps PRIVATE PkgConfig::KIM-API)
|
||||||
endif()
|
endif()
|
||||||
|
|||||||
@ -1,66 +1,119 @@
|
|||||||
if(PKG_KOKKOS)
|
########################################################################
|
||||||
# TODO: this option needs to be documented when this works with a
|
# consistency checks and Kokkos options/settings required by LAMMPS
|
||||||
# regular release version of KOKKOS, and a version compatibility check
|
if(Kokkos_ENABLE_CUDA)
|
||||||
# of external KOKKOS lib versus what the KOKKOS package needs is required.
|
message(STATUS "KOKKOS: Enabling CUDA LAMBDA function support")
|
||||||
option(EXTERNAL_KOKKOS "Build against external kokkos library")
|
set(Kokkos_ENABLE_CUDA_LAMBDA ON CACHE BOOL "" FORCE)
|
||||||
if(EXTERNAL_KOKKOS)
|
|
||||||
find_package(Kokkos REQUIRED)
|
|
||||||
list(APPEND LAMMPS_LINK_LIBS Kokkos::kokkos)
|
|
||||||
else()
|
|
||||||
set(LAMMPS_LIB_KOKKOS_SRC_DIR ${LAMMPS_LIB_SOURCE_DIR}/kokkos)
|
|
||||||
set(LAMMPS_LIB_KOKKOS_BIN_DIR ${LAMMPS_LIB_BINARY_DIR}/kokkos)
|
|
||||||
add_subdirectory(${LAMMPS_LIB_KOKKOS_SRC_DIR} ${LAMMPS_LIB_KOKKOS_BIN_DIR})
|
|
||||||
|
|
||||||
set(Kokkos_INCLUDE_DIRS ${LAMMPS_LIB_KOKKOS_SRC_DIR}/core/src
|
|
||||||
${LAMMPS_LIB_KOKKOS_SRC_DIR}/containers/src
|
|
||||||
${LAMMPS_LIB_KOKKOS_SRC_DIR}/algorithms/src
|
|
||||||
${LAMMPS_LIB_KOKKOS_BIN_DIR})
|
|
||||||
include_directories(${Kokkos_INCLUDE_DIRS})
|
|
||||||
list(APPEND LAMMPS_LINK_LIBS kokkos)
|
|
||||||
endif()
|
|
||||||
add_definitions(-DLMP_KOKKOS)
|
|
||||||
|
|
||||||
set(KOKKOS_PKG_SOURCES_DIR ${LAMMPS_SOURCE_DIR}/KOKKOS)
|
|
||||||
set(KOKKOS_PKG_SOURCES ${KOKKOS_PKG_SOURCES_DIR}/kokkos.cpp
|
|
||||||
${KOKKOS_PKG_SOURCES_DIR}/atom_kokkos.cpp
|
|
||||||
${KOKKOS_PKG_SOURCES_DIR}/atom_vec_kokkos.cpp
|
|
||||||
${KOKKOS_PKG_SOURCES_DIR}/comm_kokkos.cpp
|
|
||||||
${KOKKOS_PKG_SOURCES_DIR}/comm_tiled_kokkos.cpp
|
|
||||||
${KOKKOS_PKG_SOURCES_DIR}/min_kokkos.cpp
|
|
||||||
${KOKKOS_PKG_SOURCES_DIR}/min_linesearch_kokkos.cpp
|
|
||||||
${KOKKOS_PKG_SOURCES_DIR}/neighbor_kokkos.cpp
|
|
||||||
${KOKKOS_PKG_SOURCES_DIR}/neigh_list_kokkos.cpp
|
|
||||||
${KOKKOS_PKG_SOURCES_DIR}/neigh_bond_kokkos.cpp
|
|
||||||
${KOKKOS_PKG_SOURCES_DIR}/fix_nh_kokkos.cpp
|
|
||||||
${KOKKOS_PKG_SOURCES_DIR}/nbin_kokkos.cpp
|
|
||||||
${KOKKOS_PKG_SOURCES_DIR}/npair_kokkos.cpp
|
|
||||||
${KOKKOS_PKG_SOURCES_DIR}/npair_halffull_kokkos.cpp
|
|
||||||
${KOKKOS_PKG_SOURCES_DIR}/domain_kokkos.cpp
|
|
||||||
${KOKKOS_PKG_SOURCES_DIR}/modify_kokkos.cpp)
|
|
||||||
|
|
||||||
if(PKG_KSPACE)
|
|
||||||
list(APPEND KOKKOS_PKG_SOURCES ${KOKKOS_PKG_SOURCES_DIR}/gridcomm_kokkos.cpp)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
set_property(GLOBAL PROPERTY "KOKKOS_PKG_SOURCES" "${KOKKOS_PKG_SOURCES}")
|
|
||||||
|
|
||||||
# detects styles which have KOKKOS version
|
|
||||||
RegisterStylesExt(${KOKKOS_PKG_SOURCES_DIR} kokkos KOKKOS_PKG_SOURCES)
|
|
||||||
|
|
||||||
# register kokkos-only styles
|
|
||||||
RegisterNBinStyle(${KOKKOS_PKG_SOURCES_DIR}/nbin_kokkos.h)
|
|
||||||
RegisterNPairStyle(${KOKKOS_PKG_SOURCES_DIR}/npair_kokkos.h)
|
|
||||||
RegisterNPairStyle(${KOKKOS_PKG_SOURCES_DIR}/npair_halffull_kokkos.h)
|
|
||||||
|
|
||||||
if(PKG_USER-DPD)
|
|
||||||
get_property(KOKKOS_PKG_SOURCES GLOBAL PROPERTY KOKKOS_PKG_SOURCES)
|
|
||||||
list(APPEND KOKKOS_PKG_SOURCES ${KOKKOS_PKG_SOURCES_DIR}/npair_ssa_kokkos.cpp)
|
|
||||||
RegisterNPairStyle(${KOKKOS_PKG_SOURCES_DIR}/npair_ssa_kokkos.h)
|
|
||||||
set_property(GLOBAL PROPERTY "KOKKOS_PKG_SOURCES" "${KOKKOS_PKG_SOURCES}")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
get_property(KOKKOS_PKG_SOURCES GLOBAL PROPERTY KOKKOS_PKG_SOURCES)
|
|
||||||
|
|
||||||
list(APPEND LIB_SOURCES ${KOKKOS_PKG_SOURCES})
|
|
||||||
include_directories(${KOKKOS_PKG_SOURCES_DIR})
|
|
||||||
endif()
|
endif()
|
||||||
|
# Adding OpenMP compiler flags without the checks done for
|
||||||
|
# BUILD_OMP can result in compile failures. Enforce consistency.
|
||||||
|
if(Kokkos_ENABLE_OPENMP AND NOT BUILD_OMP)
|
||||||
|
message(FATAL_ERROR "Must enable BUILD_OMP with Kokkos_ENABLE_OPENMP")
|
||||||
|
endif()
|
||||||
|
########################################################################
|
||||||
|
|
||||||
|
option(EXTERNAL_KOKKOS "Build against external kokkos library" OFF)
|
||||||
|
option(DOWNLOAD_KOKKOS "Download the KOKKOS library instead of using the bundled one" OFF)
|
||||||
|
if(DOWNLOAD_KOKKOS)
|
||||||
|
# extract Kokkos-related variables and values so we can forward them to the Kokkos library build
|
||||||
|
get_cmake_property(_VARS VARIABLES)
|
||||||
|
list(FILTER _VARS INCLUDE REGEX ^Kokkos_)
|
||||||
|
foreach(_VAR IN LISTS _VARS)
|
||||||
|
list(APPEND KOKKOS_LIB_BUILD_ARGS "-D${_VAR}=${${_VAR}}")
|
||||||
|
endforeach()
|
||||||
|
message(STATUS "KOKKOS download requested - we will build our own")
|
||||||
|
list(APPEND KOKKOS_LIB_BUILD_ARGS "-DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>")
|
||||||
|
if(CMAKE_REQUEST_PIC)
|
||||||
|
list(APPEND KOKKOS_LIB_BUILD_ARGS ${CMAKE_REQUEST_PIC})
|
||||||
|
endif()
|
||||||
|
# append other CMake variables that need to be forwarded to CMAKE_ARGS
|
||||||
|
list(APPEND KOKKOS_LIB_BUILD_ARGS "-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}")
|
||||||
|
list(APPEND KOKKOS_LIB_BUILD_ARGS "-DCMAKE_INSTALL_LIBDIR=lib")
|
||||||
|
list(APPEND KOKKOS_LIB_BUILD_ARGS "-DCMAKE_MAKE_PROGRAM=${CMAKE_MAKE_PROGRAM}")
|
||||||
|
list(APPEND KOKKOS_LIB_BUILD_ARGS "-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}")
|
||||||
|
list(APPEND KOKKOS_LIB_BUILD_ARGS "-DCMAKE_CXX_STANDARD=${CMAKE_CXX_STANDARD}")
|
||||||
|
list(APPEND KOKKOS_LIB_BUILD_ARGS "-DCMAKE_CXX_EXTENSIONS=${CMAKE_CXX_EXTENSIONS}")
|
||||||
|
list(APPEND KOKKOS_LIB_BUILD_ARGS "-DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE}")
|
||||||
|
include(ExternalProject)
|
||||||
|
ExternalProject_Add(kokkos_build
|
||||||
|
URL https://github.com/kokkos/kokkos/archive/3.1.01.tar.gz
|
||||||
|
URL_MD5 3ccb2100f7fc316891e7dad3bc33fa37
|
||||||
|
CMAKE_ARGS ${KOKKOS_LIB_BUILD_ARGS}
|
||||||
|
BUILD_BYPRODUCTS <INSTALL_DIR>/lib/libkokkoscore.a
|
||||||
|
)
|
||||||
|
ExternalProject_get_property(kokkos_build INSTALL_DIR)
|
||||||
|
file(MAKE_DIRECTORY ${INSTALL_DIR}/include)
|
||||||
|
add_library(LAMMPS::KOKKOS UNKNOWN IMPORTED)
|
||||||
|
set_target_properties(LAMMPS::KOKKOS PROPERTIES
|
||||||
|
IMPORTED_LOCATION "${INSTALL_DIR}/lib/libkokkoscore.a"
|
||||||
|
INTERFACE_INCLUDE_DIRECTORIES "${INSTALL_DIR}/include"
|
||||||
|
INTERFACE_LINK_LIBRARIES ${CMAKE_DL_LIBS})
|
||||||
|
target_link_libraries(lammps PRIVATE LAMMPS::KOKKOS)
|
||||||
|
add_dependencies(LAMMPS::KOKKOS kokkos_build)
|
||||||
|
elseif(EXTERNAL_KOKKOS)
|
||||||
|
find_package(Kokkos 3.1.01 REQUIRED CONFIG)
|
||||||
|
target_link_libraries(lammps PRIVATE Kokkos::kokkos)
|
||||||
|
else()
|
||||||
|
set(LAMMPS_LIB_KOKKOS_SRC_DIR ${LAMMPS_LIB_SOURCE_DIR}/kokkos)
|
||||||
|
set(LAMMPS_LIB_KOKKOS_BIN_DIR ${LAMMPS_LIB_BINARY_DIR}/kokkos)
|
||||||
|
add_subdirectory(${LAMMPS_LIB_KOKKOS_SRC_DIR} ${LAMMPS_LIB_KOKKOS_BIN_DIR})
|
||||||
|
|
||||||
|
set(Kokkos_INCLUDE_DIRS ${LAMMPS_LIB_KOKKOS_SRC_DIR}/core/src
|
||||||
|
${LAMMPS_LIB_KOKKOS_SRC_DIR}/containers/src
|
||||||
|
${LAMMPS_LIB_KOKKOS_SRC_DIR}/algorithms/src
|
||||||
|
${LAMMPS_LIB_KOKKOS_BIN_DIR})
|
||||||
|
target_include_directories(lammps PRIVATE ${Kokkos_INCLUDE_DIRS})
|
||||||
|
target_link_libraries(lammps PRIVATE kokkos)
|
||||||
|
endif()
|
||||||
|
target_compile_definitions(lammps PRIVATE -DLMP_KOKKOS)
|
||||||
|
|
||||||
|
set(KOKKOS_PKG_SOURCES_DIR ${LAMMPS_SOURCE_DIR}/KOKKOS)
|
||||||
|
set(KOKKOS_PKG_SOURCES ${KOKKOS_PKG_SOURCES_DIR}/kokkos.cpp
|
||||||
|
${KOKKOS_PKG_SOURCES_DIR}/atom_kokkos.cpp
|
||||||
|
${KOKKOS_PKG_SOURCES_DIR}/atom_vec_kokkos.cpp
|
||||||
|
${KOKKOS_PKG_SOURCES_DIR}/comm_kokkos.cpp
|
||||||
|
${KOKKOS_PKG_SOURCES_DIR}/comm_tiled_kokkos.cpp
|
||||||
|
${KOKKOS_PKG_SOURCES_DIR}/min_kokkos.cpp
|
||||||
|
${KOKKOS_PKG_SOURCES_DIR}/min_linesearch_kokkos.cpp
|
||||||
|
${KOKKOS_PKG_SOURCES_DIR}/neighbor_kokkos.cpp
|
||||||
|
${KOKKOS_PKG_SOURCES_DIR}/neigh_list_kokkos.cpp
|
||||||
|
${KOKKOS_PKG_SOURCES_DIR}/neigh_bond_kokkos.cpp
|
||||||
|
${KOKKOS_PKG_SOURCES_DIR}/fix_nh_kokkos.cpp
|
||||||
|
${KOKKOS_PKG_SOURCES_DIR}/nbin_kokkos.cpp
|
||||||
|
${KOKKOS_PKG_SOURCES_DIR}/npair_kokkos.cpp
|
||||||
|
${KOKKOS_PKG_SOURCES_DIR}/npair_halffull_kokkos.cpp
|
||||||
|
${KOKKOS_PKG_SOURCES_DIR}/domain_kokkos.cpp
|
||||||
|
${KOKKOS_PKG_SOURCES_DIR}/modify_kokkos.cpp)
|
||||||
|
|
||||||
|
if(PKG_KSPACE)
|
||||||
|
list(APPEND KOKKOS_PKG_SOURCES ${KOKKOS_PKG_SOURCES_DIR}/fft3d_kokkos.cpp
|
||||||
|
${KOKKOS_PKG_SOURCES_DIR}/gridcomm_kokkos.cpp
|
||||||
|
${KOKKOS_PKG_SOURCES_DIR}/remap_kokkos.cpp)
|
||||||
|
if(Kokkos_ENABLE_CUDA)
|
||||||
|
if(NOT ${FFT} STREQUAL "KISS")
|
||||||
|
target_compile_definitions(lammps PRIVATE -DFFT_CUFFT)
|
||||||
|
target_link_libraries(lammps PRIVATE cufft)
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
set_property(GLOBAL PROPERTY "KOKKOS_PKG_SOURCES" "${KOKKOS_PKG_SOURCES}")
|
||||||
|
|
||||||
|
# detects styles which have KOKKOS version
|
||||||
|
RegisterStylesExt(${KOKKOS_PKG_SOURCES_DIR} kokkos KOKKOS_PKG_SOURCES)
|
||||||
|
|
||||||
|
# register kokkos-only styles
|
||||||
|
RegisterNBinStyle(${KOKKOS_PKG_SOURCES_DIR}/nbin_kokkos.h)
|
||||||
|
RegisterNPairStyle(${KOKKOS_PKG_SOURCES_DIR}/npair_kokkos.h)
|
||||||
|
RegisterNPairStyle(${KOKKOS_PKG_SOURCES_DIR}/npair_halffull_kokkos.h)
|
||||||
|
|
||||||
|
if(PKG_USER-DPD)
|
||||||
|
get_property(KOKKOS_PKG_SOURCES GLOBAL PROPERTY KOKKOS_PKG_SOURCES)
|
||||||
|
list(APPEND KOKKOS_PKG_SOURCES ${KOKKOS_PKG_SOURCES_DIR}/npair_ssa_kokkos.cpp)
|
||||||
|
RegisterNPairStyle(${KOKKOS_PKG_SOURCES_DIR}/npair_ssa_kokkos.h)
|
||||||
|
set_property(GLOBAL PROPERTY "KOKKOS_PKG_SOURCES" "${KOKKOS_PKG_SOURCES}")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
get_property(KOKKOS_PKG_SOURCES GLOBAL PROPERTY KOKKOS_PKG_SOURCES)
|
||||||
|
|
||||||
|
target_sources(lammps PRIVATE ${KOKKOS_PKG_SOURCES})
|
||||||
|
target_include_directories(lammps PRIVATE ${KOKKOS_PKG_SOURCES_DIR})
|
||||||
|
|||||||
@ -1,42 +1,56 @@
|
|||||||
if(PKG_KSPACE)
|
option(FFT_SINGLE "Use single precision FFTs instead of double precision FFTs" OFF)
|
||||||
option(FFT_SINGLE "Use single precision FFTs instead of double precision FFTs" OFF)
|
set(FFTW "FFTW3")
|
||||||
set(FFTW "FFTW3")
|
if(FFT_SINGLE)
|
||||||
if(FFT_SINGLE)
|
set(FFTW "FFTW3F")
|
||||||
set(FFTW "FFTW3F")
|
target_compile_definitions(lammps PRIVATE -DFFT_SINGLE)
|
||||||
add_definitions(-DFFT_SINGLE)
|
endif()
|
||||||
endif()
|
find_package(${FFTW} QUIET)
|
||||||
find_package(${FFTW} QUIET)
|
if(${FFTW}_FOUND)
|
||||||
if(${FFTW}_FOUND)
|
set(FFT "FFTW3" CACHE STRING "FFT library for KSPACE package")
|
||||||
set(FFT "FFTW3" CACHE STRING "FFT library for KSPACE package")
|
else()
|
||||||
else()
|
set(FFT "KISS" CACHE STRING "FFT library for KSPACE package")
|
||||||
set(FFT "KISS" CACHE STRING "FFT library for KSPACE package")
|
endif()
|
||||||
endif()
|
set(FFT_VALUES KISS FFTW3 MKL)
|
||||||
set(FFT_VALUES KISS FFTW3 MKL)
|
set_property(CACHE FFT PROPERTY STRINGS ${FFT_VALUES})
|
||||||
set_property(CACHE FFT PROPERTY STRINGS ${FFT_VALUES})
|
validate_option(FFT FFT_VALUES)
|
||||||
validate_option(FFT FFT_VALUES)
|
string(TOUPPER ${FFT} FFT)
|
||||||
string(TOUPPER ${FFT} FFT)
|
|
||||||
|
if(FFT STREQUAL "FFTW3")
|
||||||
if(FFT STREQUAL "FFTW3")
|
find_package(${FFTW} REQUIRED)
|
||||||
find_package(${FFTW} REQUIRED)
|
target_compile_definitions(lammps PRIVATE -DFFT_FFTW3)
|
||||||
add_definitions(-DFFT_FFTW3)
|
target_link_libraries(lammps PRIVATE ${FFTW}::${FFTW})
|
||||||
include_directories(${${FFTW}_INCLUDE_DIRS})
|
if(FFTW3_OMP_LIBRARY OR FFTW3F_OMP_LIBRARY)
|
||||||
list(APPEND LAMMPS_LINK_LIBS ${${FFTW}_LIBRARIES})
|
option(FFT_FFTW_THREADS "Use threaded FFTW library" ON)
|
||||||
elseif(FFT STREQUAL "MKL")
|
else()
|
||||||
find_package(MKL REQUIRED)
|
option(FFT_FFTW_THREADS "Use threaded FFT library" OFF)
|
||||||
add_definitions(-DFFT_MKL)
|
endif()
|
||||||
include_directories(${MKL_INCLUDE_DIRS})
|
|
||||||
list(APPEND LAMMPS_LINK_LIBS ${MKL_LIBRARIES})
|
if(FFT_FFTW_THREADS)
|
||||||
else()
|
if(FFTW3_OMP_LIBRARY OR FFTW3F_OMP_LIBRARY)
|
||||||
# last option is KISSFFT
|
target_compile_definitions(lammps PRIVATE -DFFT_FFTW_THREADS)
|
||||||
add_definitions(-DFFT_KISS)
|
target_link_libraries(lammps PRIVATE ${FFTW}::${FFTW}_OMP)
|
||||||
endif()
|
else()
|
||||||
|
message(FATAL_ERROR "Need OpenMP enabled FFTW3 library for FFT_THREADS")
|
||||||
set(FFT_PACK "array" CACHE STRING "Optimization for FFT")
|
endif()
|
||||||
set(FFT_PACK_VALUES array pointer memcpy)
|
endif()
|
||||||
set_property(CACHE FFT_PACK PROPERTY STRINGS ${FFT_PACK_VALUES})
|
elseif(FFT STREQUAL "MKL")
|
||||||
validate_option(FFT_PACK FFT_PACK_VALUES)
|
find_package(MKL REQUIRED)
|
||||||
if(NOT FFT_PACK STREQUAL "array")
|
target_compile_definitions(lammps PRIVATE -DFFT_MKL)
|
||||||
string(TOUPPER ${FFT_PACK} FFT_PACK)
|
option(FFT_MKL_THREADS "Use threaded MKL FFT" ON)
|
||||||
add_definitions(-DFFT_PACK_${FFT_PACK})
|
if(FFT_MKL_THREADS)
|
||||||
endif()
|
target_compile_definitions(lammps PRIVATE -DFFT_MKL_THREADS)
|
||||||
|
endif()
|
||||||
|
target_link_libraries(lammps PRIVATE MKL::MKL)
|
||||||
|
else()
|
||||||
|
# last option is KISSFFT
|
||||||
|
target_compile_definitions(lammps PRIVATE -DFFT_KISS)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
set(FFT_PACK "array" CACHE STRING "Optimization for FFT")
|
||||||
|
set(FFT_PACK_VALUES array pointer memcpy)
|
||||||
|
set_property(CACHE FFT_PACK PROPERTY STRINGS ${FFT_PACK_VALUES})
|
||||||
|
validate_option(FFT_PACK FFT_PACK_VALUES)
|
||||||
|
if(NOT FFT_PACK STREQUAL "array")
|
||||||
|
string(TOUPPER ${FFT_PACK} FFT_PACK)
|
||||||
|
target_compile_definitions(lammps PRIVATE -DFFT_PACK_${FFT_PACK})
|
||||||
endif()
|
endif()
|
||||||
|
|||||||
@ -1,38 +1,40 @@
|
|||||||
if(PKG_LATTE)
|
enable_language(Fortran)
|
||||||
enable_language(Fortran)
|
|
||||||
find_package(LATTE)
|
# using lammps in a super-build setting
|
||||||
if(LATTE_FOUND)
|
if(TARGET LATTE::latte)
|
||||||
set(DOWNLOAD_LATTE_DEFAULT OFF)
|
target_link_libraries(lammps PRIVATE LATTE::latte)
|
||||||
else()
|
return()
|
||||||
set(DOWNLOAD_LATTE_DEFAULT ON)
|
endif()
|
||||||
endif()
|
|
||||||
option(DOWNLOAD_LATTE "Download the LATTE library instead of using an already installed one" ${DOWNLOAD_LATTE_DEFAULT})
|
find_package(LATTE 1.2.2 CONFIG)
|
||||||
if(DOWNLOAD_LATTE)
|
if(LATTE_FOUND)
|
||||||
if (CMAKE_VERSION VERSION_LESS "3.7") # due to SOURCE_SUBDIR
|
set(DOWNLOAD_LATTE_DEFAULT OFF)
|
||||||
message(FATAL_ERROR "For downlading LATTE you need at least cmake-3.7")
|
else()
|
||||||
endif()
|
set(DOWNLOAD_LATTE_DEFAULT ON)
|
||||||
if(CMAKE_GENERATOR STREQUAL "Ninja")
|
endif()
|
||||||
message(FATAL_ERROR "Cannot build downloaded LATTE library with Ninja build tool")
|
option(DOWNLOAD_LATTE "Download the LATTE library instead of using an already installed one" ${DOWNLOAD_LATTE_DEFAULT})
|
||||||
endif()
|
if(DOWNLOAD_LATTE)
|
||||||
message(STATUS "LATTE download requested - we will build our own")
|
message(STATUS "LATTE download requested - we will build our own")
|
||||||
include(ExternalProject)
|
include(ExternalProject)
|
||||||
ExternalProject_Add(latte_build
|
ExternalProject_Add(latte_build
|
||||||
URL https://github.com/lanl/LATTE/archive/v1.2.1.tar.gz
|
URL https://github.com/lanl/LATTE/archive/v1.2.2.tar.gz
|
||||||
URL_MD5 85ac414fdada2d04619c8f936344df14
|
URL_MD5 820e73a457ced178c08c71389a385de7
|
||||||
SOURCE_SUBDIR cmake
|
SOURCE_SUBDIR cmake
|
||||||
CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=<INSTALL_DIR> ${CMAKE_REQUEST_PIC}
|
CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=<INSTALL_DIR> ${CMAKE_REQUEST_PIC} -DCMAKE_INSTALL_LIBDIR=lib
|
||||||
-DBLAS_LIBRARIES=${BLAS_LIBRARIES} -DLAPACK_LIBRARIES=${LAPACK_LIBRARIES}
|
-DBLAS_LIBRARIES=${BLAS_LIBRARIES} -DLAPACK_LIBRARIES=${LAPACK_LIBRARIES}
|
||||||
-DCMAKE_Fortran_COMPILER=${CMAKE_Fortran_COMPILER} -DCMAKE_Fortran_FLAGS=${CMAKE_Fortran_FLAGS}
|
-DCMAKE_Fortran_COMPILER=${CMAKE_Fortran_COMPILER} -DCMAKE_Fortran_FLAGS=${CMAKE_Fortran_FLAGS}
|
||||||
-DCMAKE_Fortran_FLAGS_${BTYPE}=${CMAKE_Fortran_FLAGS_${BTYPE}} -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
|
-DCMAKE_Fortran_FLAGS_${BTYPE}=${CMAKE_Fortran_FLAGS_${BTYPE}} -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
|
||||||
)
|
-DCMAKE_MAKE_PROGRAM=${CMAKE_MAKE_PROGRAM} -DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE}
|
||||||
ExternalProject_get_property(latte_build INSTALL_DIR)
|
BUILD_BYPRODUCTS <INSTALL_DIR>/lib/liblatte.a
|
||||||
set(LATTE_LIBRARIES ${INSTALL_DIR}/${CMAKE_INSTALL_LIBDIR}/liblatte.a)
|
)
|
||||||
list(APPEND LAMMPS_DEPS latte_build)
|
ExternalProject_get_property(latte_build INSTALL_DIR)
|
||||||
else()
|
add_library(LAMMPS::LATTE UNKNOWN IMPORTED)
|
||||||
find_package(LATTE)
|
set_target_properties(LAMMPS::LATTE PROPERTIES
|
||||||
if(NOT LATTE_FOUND)
|
IMPORTED_LOCATION "${INSTALL_DIR}/lib/liblatte.a"
|
||||||
message(FATAL_ERROR "LATTE library not found, help CMake to find it by setting LATTE_LIBRARY, or set DOWNLOAD_LATTE=ON to download it")
|
INTERFACE_LINK_LIBRARIES "${LAPACK_LIBRARIES}")
|
||||||
endif()
|
target_link_libraries(lammps PRIVATE LAMMPS::LATTE)
|
||||||
endif()
|
add_dependencies(LAMMPS::LATTE latte_build)
|
||||||
list(APPEND LAMMPS_LINK_LIBS ${LATTE_LIBRARIES} ${LAPACK_LIBRARIES})
|
else()
|
||||||
|
find_package(LATTE 1.2.2 REQUIRED CONFIG)
|
||||||
|
target_link_libraries(lammps PRIVATE LATTE::latte)
|
||||||
endif()
|
endif()
|
||||||
|
|||||||
@ -1,32 +1,32 @@
|
|||||||
if(PKG_MESSAGE)
|
if(LAMMPS_SIZES STREQUAL BIGBIG)
|
||||||
if(LAMMPS_SIZES STREQUAL BIGBIG)
|
message(FATAL_ERROR "The MESSAGE Package is not compatible with -DLAMMPS_BIGBIG")
|
||||||
message(FATAL_ERROR "The MESSAGE Package is not compatible with -DLAMMPS_BIGBIG")
|
|
||||||
endif()
|
|
||||||
option(MESSAGE_ZMQ "Use ZeroMQ in MESSAGE package" OFF)
|
|
||||||
file(GLOB_RECURSE cslib_SOURCES ${LAMMPS_LIB_SOURCE_DIR}/message/cslib/[^.]*.F
|
|
||||||
${LAMMPS_LIB_SOURCE_DIR}/message/cslib/[^.]*.c
|
|
||||||
${LAMMPS_LIB_SOURCE_DIR}/message/cslib/[^.]*.cpp)
|
|
||||||
|
|
||||||
add_library(cslib STATIC ${cslib_SOURCES})
|
|
||||||
if(BUILD_MPI)
|
|
||||||
target_compile_definitions(cslib PRIVATE -DMPI_YES)
|
|
||||||
set_target_properties(cslib PROPERTIES OUTPUT_NAME "csmpi")
|
|
||||||
else()
|
|
||||||
target_compile_definitions(cslib PRIVATE -DMPI_NO)
|
|
||||||
target_include_directories(cslib PRIVATE ${LAMMPS_LIB_SOURCE_DIR}/message/cslib/src/STUBS_MPI)
|
|
||||||
set_target_properties(cslib PROPERTIES OUTPUT_NAME "csnompi")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(MESSAGE_ZMQ)
|
|
||||||
target_compile_definitions(cslib PRIVATE -DZMQ_YES)
|
|
||||||
find_package(ZMQ REQUIRED)
|
|
||||||
target_include_directories(cslib PRIVATE ${ZMQ_INCLUDE_DIRS})
|
|
||||||
target_link_libraries(cslib PUBLIC ${ZMQ_LIBRARIES})
|
|
||||||
else()
|
|
||||||
target_compile_definitions(cslib PRIVATE -DZMQ_NO)
|
|
||||||
target_include_directories(cslib PRIVATE ${LAMMPS_LIB_SOURCE_DIR}/message/cslib/src/STUBS_ZMQ)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
list(APPEND LAMMPS_LINK_LIBS cslib)
|
|
||||||
include_directories(${LAMMPS_LIB_SOURCE_DIR}/message/cslib/src)
|
|
||||||
endif()
|
endif()
|
||||||
|
option(MESSAGE_ZMQ "Use ZeroMQ in MESSAGE package" OFF)
|
||||||
|
file(GLOB_RECURSE cslib_SOURCES ${LAMMPS_LIB_SOURCE_DIR}/message/cslib/[^.]*.F
|
||||||
|
${LAMMPS_LIB_SOURCE_DIR}/message/cslib/[^.]*.c
|
||||||
|
${LAMMPS_LIB_SOURCE_DIR}/message/cslib/[^.]*.cpp)
|
||||||
|
|
||||||
|
add_library(cslib STATIC ${cslib_SOURCES})
|
||||||
|
target_compile_definitions(cslib PRIVATE -DLAMMPS_${LAMMPS_SIZES})
|
||||||
|
set_target_properties(cslib PROPERTIES OUTPUT_NAME lammps_cslib${LAMMPS_MACHINE})
|
||||||
|
if(BUILD_MPI)
|
||||||
|
target_compile_definitions(cslib PRIVATE -DMPI_YES)
|
||||||
|
set_target_properties(cslib PROPERTIES OUTPUT_NAME "csmpi")
|
||||||
|
target_link_libraries(cslib PRIVATE MPI::MPI_CXX)
|
||||||
|
else()
|
||||||
|
target_compile_definitions(cslib PRIVATE -DMPI_NO)
|
||||||
|
target_include_directories(cslib PRIVATE ${LAMMPS_LIB_SOURCE_DIR}/message/cslib/src/STUBS_MPI)
|
||||||
|
set_target_properties(cslib PROPERTIES OUTPUT_NAME "csnompi")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(MESSAGE_ZMQ)
|
||||||
|
target_compile_definitions(cslib PRIVATE -DZMQ_YES)
|
||||||
|
find_package(ZMQ REQUIRED)
|
||||||
|
target_link_libraries(cslib PUBLIC ZMQ::ZMQ)
|
||||||
|
else()
|
||||||
|
target_compile_definitions(cslib PRIVATE -DZMQ_NO)
|
||||||
|
target_include_directories(cslib PRIVATE ${LAMMPS_LIB_SOURCE_DIR}/message/cslib/src/STUBS_ZMQ)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
target_link_libraries(lammps PRIVATE cslib)
|
||||||
|
target_include_directories(lammps PRIVATE ${LAMMPS_LIB_SOURCE_DIR}/message/cslib/src)
|
||||||
|
|||||||
@ -1,45 +1,45 @@
|
|||||||
if(PKG_MSCG)
|
find_package(GSL REQUIRED)
|
||||||
find_package(GSL REQUIRED)
|
find_package(MSCG QUIET)
|
||||||
find_package(MSCG QUIET)
|
if(MSGC_FOUND)
|
||||||
if(MSGC_FOUND)
|
set(DOWNLOAD_MSCG_DEFAULT OFF)
|
||||||
set(DOWNLOAD_MSCG_DEFAULT OFF)
|
else()
|
||||||
else()
|
set(DOWNLOAD_MSCG_DEFAULT ON)
|
||||||
set(DOWNLOAD_MSCG_DEFAULT ON)
|
|
||||||
endif()
|
|
||||||
option(DOWNLOAD_MSCG "Download MSCG library instead of using an already installed one)" ${DOWNLOAD_MSCG_DEFAULT})
|
|
||||||
if(DOWNLOAD_MSCG)
|
|
||||||
if (CMAKE_VERSION VERSION_LESS "3.7") # due to SOURCE_SUBDIR
|
|
||||||
message(FATAL_ERROR "For downlading MSCG you need at least cmake-3.7")
|
|
||||||
endif()
|
|
||||||
if(CMAKE_GENERATOR STREQUAL "Ninja")
|
|
||||||
message(FATAL_ERROR "Cannot build downloaded MSCG library with Ninja build tool")
|
|
||||||
endif()
|
|
||||||
include(ExternalProject)
|
|
||||||
if(NOT LAPACK_FOUND)
|
|
||||||
set(EXTRA_MSCG_OPTS "-DLAPACK_LIBRARIES=${CMAKE_CURRENT_BINARY_DIR}/liblinalg.a")
|
|
||||||
endif()
|
|
||||||
ExternalProject_Add(mscg_build
|
|
||||||
URL https://github.com/uchicago-voth/MSCG-release/archive/1.7.3.1.tar.gz
|
|
||||||
URL_MD5 8c45e269ee13f60b303edd7823866a91
|
|
||||||
SOURCE_SUBDIR src/CMake
|
|
||||||
CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=<INSTALL_DIR> ${CMAKE_REQUEST_PIC} ${EXTRA_MSCG_OPTS}
|
|
||||||
BUILD_COMMAND make mscg INSTALL_COMMAND ""
|
|
||||||
)
|
|
||||||
ExternalProject_get_property(mscg_build BINARY_DIR)
|
|
||||||
set(MSCG_LIBRARIES ${BINARY_DIR}/libmscg.a)
|
|
||||||
ExternalProject_get_property(mscg_build SOURCE_DIR)
|
|
||||||
set(MSCG_INCLUDE_DIRS ${SOURCE_DIR}/src)
|
|
||||||
list(APPEND LAMMPS_DEPS mscg_build)
|
|
||||||
if(NOT LAPACK_FOUND)
|
|
||||||
file(MAKE_DIRECTORY ${MSCG_INCLUDE_DIRS})
|
|
||||||
add_dependencies(mscg_build linalg)
|
|
||||||
endif()
|
|
||||||
else()
|
|
||||||
find_package(MSCG)
|
|
||||||
if(NOT MSCG_FOUND)
|
|
||||||
message(FATAL_ERROR "MSCG not found, help CMake to find it by setting MSCG_LIBRARY and MSCG_INCLUDE_DIRS, or set DOWNLOAD_MSCG=ON to download it")
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
list(APPEND LAMMPS_LINK_LIBS ${MSCG_LIBRARIES} ${GSL_LIBRARIES} ${LAPACK_LIBRARIES})
|
|
||||||
include_directories(${MSCG_INCLUDE_DIRS})
|
|
||||||
endif()
|
endif()
|
||||||
|
option(DOWNLOAD_MSCG "Download MSCG library instead of using an already installed one)" ${DOWNLOAD_MSCG_DEFAULT})
|
||||||
|
if(DOWNLOAD_MSCG)
|
||||||
|
include(ExternalProject)
|
||||||
|
ExternalProject_Add(mscg_build
|
||||||
|
URL https://github.com/uchicago-voth/MSCG-release/archive/1.7.3.1.tar.gz
|
||||||
|
URL_MD5 8c45e269ee13f60b303edd7823866a91
|
||||||
|
SOURCE_SUBDIR src/CMake
|
||||||
|
CMAKE_ARGS ${CMAKE_REQUEST_PIC} ${EXTRA_MSCG_OPTS}
|
||||||
|
-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
|
||||||
|
-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
|
||||||
|
-DCMAKE_Fortran_COMPILER=${CMAKE_Fortran_COMPILER}
|
||||||
|
-DBLAS_LIBRARIES=${BLAS_LIBRARIES} -DLAPACK_LIBRARIES=${LAPACK_LIBRARIES}
|
||||||
|
-DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>
|
||||||
|
-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
|
||||||
|
-DCMAKE_MAKE_PROGRAM=${CMAKE_MAKE_PROGRAM}
|
||||||
|
-DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE}
|
||||||
|
BUILD_COMMAND ${CMAKE_COMMAND} --build . --target mscg
|
||||||
|
INSTALL_COMMAND ""
|
||||||
|
BUILD_BYPRODUCTS <BINARY_DIR>/libmscg.a
|
||||||
|
)
|
||||||
|
ExternalProject_get_property(mscg_build BINARY_DIR)
|
||||||
|
ExternalProject_get_property(mscg_build SOURCE_DIR)
|
||||||
|
file(MAKE_DIRECTORY ${SOURCE_DIR}/src)
|
||||||
|
add_library(LAMMPS::MSCG UNKNOWN IMPORTED)
|
||||||
|
set_target_properties(LAMMPS::MSCG PROPERTIES
|
||||||
|
IMPORTED_LOCATION "${BINARY_DIR}/libmscg.a"
|
||||||
|
INTERFACE_INCLUDE_DIRECTORIES "${SOURCE_DIR}/src"
|
||||||
|
INTERFACE_LINK_LIBRARIES "${LAPACK_LIBRARIES}")
|
||||||
|
target_link_libraries(lammps PRIVATE LAMMPS::MSCG)
|
||||||
|
add_dependencies(LAMMPS::MSCG mscg_build)
|
||||||
|
else()
|
||||||
|
find_package(MSCG)
|
||||||
|
if(NOT MSCG_FOUND)
|
||||||
|
message(FATAL_ERROR "MSCG not found, help CMake to find it by setting MSCG_LIBRARY and MSCG_INCLUDE_DIRS, or set DOWNLOAD_MSCG=ON to download it")
|
||||||
|
endif()
|
||||||
|
target_link_libraries(lammps PRIVATE MSCG::MSCG)
|
||||||
|
endif()
|
||||||
|
target_link_libraries(lammps PRIVATE GSL::gsl ${LAPACK_LIBRARIES})
|
||||||
|
|||||||
@ -1,13 +1,11 @@
|
|||||||
if(PKG_OPT)
|
set(OPT_SOURCES_DIR ${LAMMPS_SOURCE_DIR}/OPT)
|
||||||
set(OPT_SOURCES_DIR ${LAMMPS_SOURCE_DIR}/OPT)
|
set(OPT_SOURCES)
|
||||||
set(OPT_SOURCES)
|
set_property(GLOBAL PROPERTY "OPT_SOURCES" "${OPT_SOURCES}")
|
||||||
set_property(GLOBAL PROPERTY "OPT_SOURCES" "${OPT_SOURCES}")
|
|
||||||
|
|
||||||
# detects styles which have OPT version
|
# detects styles which have OPT version
|
||||||
RegisterStylesExt(${OPT_SOURCES_DIR} opt OPT_SOURCES)
|
RegisterStylesExt(${OPT_SOURCES_DIR} opt OPT_SOURCES)
|
||||||
|
|
||||||
get_property(OPT_SOURCES GLOBAL PROPERTY OPT_SOURCES)
|
get_property(OPT_SOURCES GLOBAL PROPERTY OPT_SOURCES)
|
||||||
|
|
||||||
list(APPEND LIB_SOURCES ${OPT_SOURCES})
|
target_sources(lammps PRIVATE ${OPT_SOURCES})
|
||||||
include_directories(${OPT_SOURCES_DIR})
|
target_include_directories(lammps PRIVATE ${OPT_SOURCES_DIR})
|
||||||
endif()
|
|
||||||
|
|||||||
@ -1,6 +1,9 @@
|
|||||||
if(PKG_PYTHON)
|
if(CMAKE_VERSION VERSION_LESS 3.12)
|
||||||
find_package(PythonLibs REQUIRED)
|
find_package(PythonLibs REQUIRED) # Deprecated since version 3.12
|
||||||
add_definitions(-DLMP_PYTHON)
|
target_include_directories(lammps PRIVATE ${PYTHON_INCLUDE_DIR})
|
||||||
include_directories(${PYTHON_INCLUDE_DIR})
|
target_link_libraries(lammps PRIVATE ${PYTHON_LIBRARY})
|
||||||
list(APPEND LAMMPS_LINK_LIBS ${PYTHON_LIBRARY})
|
else()
|
||||||
|
find_package(Python REQUIRED COMPONENTS Development)
|
||||||
|
target_link_libraries(lammps PRIVATE Python::Python)
|
||||||
endif()
|
endif()
|
||||||
|
target_compile_definitions(lammps PRIVATE -DLMP_PYTHON)
|
||||||
|
|||||||
@ -1,20 +1,18 @@
|
|||||||
# Fix qeq/fire requires MANYBODY (i.e. COMB and COMB3) to be installed
|
# Fix qeq/fire requires MANYBODY (i.e. COMB and COMB3) to be installed
|
||||||
if(PKG_QEQ)
|
set(QEQ_SOURCES_DIR ${LAMMPS_SOURCE_DIR}/QEQ)
|
||||||
set(QEQ_SOURCES_DIR ${LAMMPS_SOURCE_DIR}/QEQ)
|
file(GLOB QEQ_HEADERS ${QEQ_SOURCES_DIR}/fix*.h)
|
||||||
file(GLOB QEQ_HEADERS ${QEQ_SOURCES_DIR}/fix*.h)
|
file(GLOB QEQ_SOURCES ${QEQ_SOURCES_DIR}/fix*.cpp)
|
||||||
file(GLOB QEQ_SOURCES ${QEQ_SOURCES_DIR}/fix*.cpp)
|
|
||||||
|
|
||||||
if(NOT PKG_MANYBODY)
|
if(NOT PKG_MANYBODY)
|
||||||
list(REMOVE_ITEM QEQ_HEADERS ${QEQ_SOURCES_DIR}/fix_qeq_fire.h)
|
list(REMOVE_ITEM QEQ_HEADERS ${QEQ_SOURCES_DIR}/fix_qeq_fire.h)
|
||||||
list(REMOVE_ITEM QEQ_SOURCES ${QEQ_SOURCES_DIR}/fix_qeq_fire.cpp)
|
list(REMOVE_ITEM QEQ_SOURCES ${QEQ_SOURCES_DIR}/fix_qeq_fire.cpp)
|
||||||
endif()
|
|
||||||
set_property(GLOBAL PROPERTY "QEQ_SOURCES" "${QEQ_SOURCES}")
|
|
||||||
|
|
||||||
foreach(MY_HEADER ${QEQ_HEADERS})
|
|
||||||
AddStyleHeader(${MY_HEADER} FIX)
|
|
||||||
endforeach()
|
|
||||||
|
|
||||||
get_property(QEQ_SOURCES GLOBAL PROPERTY QEQ_SOURCES)
|
|
||||||
list(APPEND LIB_SOURCES ${QEQ_SOURCES})
|
|
||||||
include_directories(${QEQ_SOURCES_DIR})
|
|
||||||
endif()
|
endif()
|
||||||
|
set_property(GLOBAL PROPERTY "QEQ_SOURCES" "${QEQ_SOURCES}")
|
||||||
|
|
||||||
|
foreach(MY_HEADER ${QEQ_HEADERS})
|
||||||
|
AddStyleHeader(${MY_HEADER} FIX)
|
||||||
|
endforeach()
|
||||||
|
|
||||||
|
get_property(QEQ_SOURCES GLOBAL PROPERTY QEQ_SOURCES)
|
||||||
|
target_sources(lammps PRIVATE ${QEQ_SOURCES})
|
||||||
|
target_include_directories(lammps PRIVATE ${QEQ_SOURCES_DIR})
|
||||||
|
|||||||
@ -1,42 +1,30 @@
|
|||||||
if(PKG_USER-COLVARS)
|
set(COLVARS_SOURCE_DIR ${LAMMPS_LIB_SOURCE_DIR}/colvars)
|
||||||
|
|
||||||
set(COLVARS_SOURCE_DIR ${LAMMPS_LIB_SOURCE_DIR}/colvars)
|
file(GLOB COLVARS_SOURCES ${COLVARS_SOURCE_DIR}/[^.]*.cpp)
|
||||||
|
|
||||||
file(GLOB COLVARS_SOURCES ${COLVARS_SOURCE_DIR}/[^.]*.cpp)
|
# Build Lepton by default
|
||||||
|
option(COLVARS_LEPTON "Build and link the Lepton library" ON)
|
||||||
# Build Lepton by default
|
|
||||||
set(COLVARS_LEPTON_DEFAULT ON)
|
|
||||||
# but not if C++11 is disabled per user request
|
|
||||||
if(DEFINED DISABLE_CXX11_REQUIREMENT)
|
|
||||||
if(DISABLE_CXX11_REQUIREMENT)
|
|
||||||
set(COLVARS_LEPTON_DEFAULT OFF)
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
option(COLVARS_LEPTON "Build and link the Lepton library" ${COLVARS_LEPTON_DEFAULT})
|
|
||||||
|
|
||||||
# Verify that the user's choice is consistent
|
|
||||||
if(DEFINED DISABLE_CXX11_REQUIREMENT)
|
|
||||||
if((DISABLE_CXX11_REQUIREMENT) AND (COLVARS_LEPTON))
|
|
||||||
message(FATAL_ERROR "Building the Lepton library requires C++11 or later.")
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(COLVARS_LEPTON)
|
|
||||||
set(LEPTON_DIR ${LAMMPS_LIB_SOURCE_DIR}/colvars/lepton)
|
|
||||||
file(GLOB LEPTON_SOURCES ${LEPTON_DIR}/src/[^.]*.cpp)
|
|
||||||
add_library(lepton STATIC ${LEPTON_SOURCES})
|
|
||||||
target_include_directories(lepton PRIVATE ${LEPTON_DIR}/include)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
add_library(colvars STATIC ${COLVARS_SOURCES})
|
|
||||||
target_include_directories(colvars PUBLIC ${LAMMPS_LIB_SOURCE_DIR}/colvars)
|
|
||||||
list(APPEND LAMMPS_LINK_LIBS colvars)
|
|
||||||
|
|
||||||
if(COLVARS_LEPTON)
|
|
||||||
list(APPEND LAMMPS_LINK_LIBS lepton)
|
|
||||||
target_compile_options(colvars PRIVATE -DLEPTON)
|
|
||||||
target_include_directories(colvars PUBLIC ${LEPTON_DIR}/include)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
|
if(COLVARS_LEPTON)
|
||||||
|
set(LEPTON_DIR ${LAMMPS_LIB_SOURCE_DIR}/colvars/lepton)
|
||||||
|
file(GLOB LEPTON_SOURCES ${LEPTON_DIR}/src/[^.]*.cpp)
|
||||||
|
add_library(lepton STATIC ${LEPTON_SOURCES})
|
||||||
|
# Change the define below to LEPTON_BUILDING_SHARED_LIBRARY when linking Lepton as a DLL with MSVC
|
||||||
|
target_compile_definitions(lepton PRIVATE -DLEPTON_BUILDING_STATIC_LIBRARY)
|
||||||
|
set_target_properties(lepton PROPERTIES OUTPUT_NAME lammps_lepton${LAMMPS_MACHINE})
|
||||||
|
target_include_directories(lepton PRIVATE ${LEPTON_DIR}/include)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
add_library(colvars STATIC ${COLVARS_SOURCES})
|
||||||
|
target_compile_definitions(colvars PRIVATE -DLAMMPS_${LAMMPS_SIZES})
|
||||||
|
set_target_properties(colvars PROPERTIES OUTPUT_NAME lammps_colvars${LAMMPS_MACHINE})
|
||||||
|
target_include_directories(colvars PUBLIC ${LAMMPS_LIB_SOURCE_DIR}/colvars)
|
||||||
|
target_link_libraries(lammps PRIVATE colvars)
|
||||||
|
|
||||||
|
if(COLVARS_LEPTON)
|
||||||
|
target_link_libraries(lammps PRIVATE lepton)
|
||||||
|
target_compile_definitions(colvars PRIVATE -DLEPTON)
|
||||||
|
# Disable the line below when linking Lepton as a DLL with MSVC
|
||||||
|
target_compile_definitions(colvars PRIVATE -DLEPTON_USE_STATIC_LIBRARIES)
|
||||||
|
target_include_directories(colvars PUBLIC ${LEPTON_DIR}/include)
|
||||||
endif()
|
endif()
|
||||||
|
|||||||
@ -1,8 +1,5 @@
|
|||||||
if(PKG_USER-H5MD)
|
enable_language(C)
|
||||||
enable_language(C)
|
|
||||||
|
|
||||||
find_package(HDF5 REQUIRED)
|
find_package(HDF5 REQUIRED)
|
||||||
target_link_libraries(h5md ${HDF5_LIBRARIES})
|
target_link_libraries(h5md PRIVATE ${HDF5_LIBRARIES})
|
||||||
target_include_directories(h5md PRIVATE ${HDF5_INCLUDE_DIRS})
|
target_include_directories(h5md PUBLIC ${HDF5_INCLUDE_DIRS})
|
||||||
include_directories(${HDF5_INCLUDE_DIRS})
|
|
||||||
endif()
|
|
||||||
|
|||||||
@ -1,118 +1,109 @@
|
|||||||
if(PKG_USER-INTEL)
|
check_include_file_cxx(immintrin.h FOUND_IMMINTRIN)
|
||||||
check_include_file_cxx(immintrin.h FOUND_IMMINTRIN)
|
if(NOT FOUND_IMMINTRIN)
|
||||||
if(NOT FOUND_IMMINTRIN)
|
message(FATAL_ERROR "immintrin.h header not found, Intel package won't work without it")
|
||||||
message(FATAL_ERROR "immintrin.h header not found, Intel package won't work without it")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
add_definitions(-DLMP_USER_INTEL)
|
|
||||||
|
|
||||||
set(INTEL_ARCH "cpu" CACHE STRING "Architectures used by USER-INTEL (cpu or knl)")
|
|
||||||
set(INTEL_ARCH_VALUES cpu knl)
|
|
||||||
set_property(CACHE INTEL_ARCH PROPERTY STRINGS ${INTEL_ARCH_VALUES})
|
|
||||||
validate_option(INTEL_ARCH INTEL_ARCH_VALUES)
|
|
||||||
string(TOUPPER ${INTEL_ARCH} INTEL_ARCH)
|
|
||||||
|
|
||||||
find_package(Threads QUIET)
|
|
||||||
if(Threads_FOUND)
|
|
||||||
set(INTEL_LRT_MODE "threads" CACHE STRING "Long-range threads mode (none, threads, or c++11)")
|
|
||||||
else()
|
|
||||||
set(INTEL_LRT_MODE "none" CACHE STRING "Long-range threads mode (none, threads, or c++11)")
|
|
||||||
endif()
|
|
||||||
set(INTEL_LRT_VALUES none threads c++11)
|
|
||||||
set_property(CACHE INTEL_LRT_MODE PROPERTY STRINGS ${INTEL_LRT_VALUES})
|
|
||||||
validate_option(INTEL_LRT_MODE INTEL_LRT_VALUES)
|
|
||||||
string(TOUPPER ${INTEL_LRT_MODE} INTEL_LRT_MODE)
|
|
||||||
if(INTEL_LRT_MODE STREQUAL "THREADS")
|
|
||||||
if(Threads_FOUND)
|
|
||||||
add_definitions(-DLMP_INTEL_USELRT)
|
|
||||||
list(APPEND LAMMPS_LINK_LIBS ${CMAKE_THREAD_LIBS_INIT})
|
|
||||||
else()
|
|
||||||
message(FATAL_ERROR "Must have working threads library for Long-range thread support")
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
if(INTEL_LRT_MODE STREQUAL "C++11")
|
|
||||||
add_definitions(-DLMP_INTEL_USERLRT -DLMP_INTEL_LRT11)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(CMAKE_CXX_COMPILER_ID STREQUAL "Intel")
|
|
||||||
if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS 16)
|
|
||||||
message(FATAL_ERROR "USER-INTEL needs at least a 2016 Intel compiler, found ${CMAKE_CXX_COMPILER_VERSION}")
|
|
||||||
endif()
|
|
||||||
else()
|
|
||||||
message(WARNING "USER-INTEL gives best performance with Intel compilers")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
find_package(TBB QUIET)
|
|
||||||
if(TBB_FOUND)
|
|
||||||
list(APPEND LAMMPS_LINK_LIBS ${TBB_MALLOC_LIBRARIES})
|
|
||||||
else()
|
|
||||||
add_definitions(-DLMP_INTEL_NO_TBB)
|
|
||||||
if(CMAKE_CXX_COMPILER_ID STREQUAL "Intel")
|
|
||||||
message(WARNING "USER-INTEL with Intel compilers should use TBB malloc libraries")
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
find_package(MKL QUIET)
|
|
||||||
if(MKL_FOUND)
|
|
||||||
add_definitions(-DLMP_USE_MKL_RNG)
|
|
||||||
list(APPEND LAMMPS_LINK_LIBS ${MKL_LIBRARIES})
|
|
||||||
else()
|
|
||||||
message(STATUS "Pair style dpd/intel will be faster with MKL libraries")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if((NOT ${CMAKE_SYSTEM_NAME} STREQUAL "Windows") AND (NOT ${LAMMPS_MEMALIGN} STREQUAL "64") AND (NOT ${LAMMPS_MEMALIGN} STREQUAL "128") AND (NOT ${LAMMPS_MEMALIGN} STREQUAL "256"))
|
|
||||||
message(FATAL_ERROR "USER-INTEL only supports memory alignment of 64, 128 or 256 on this platform")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(INTEL_ARCH STREQUAL "KNL")
|
|
||||||
if(NOT CMAKE_CXX_COMPILER_ID STREQUAL "Intel")
|
|
||||||
message(FATAL_ERROR "Must use Intel compiler with USER-INTEL for KNL architecture")
|
|
||||||
endif()
|
|
||||||
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -xHost -qopenmp -qoffload")
|
|
||||||
set(MIC_OPTIONS "-qoffload-option,mic,compiler,\"-fp-model fast=2 -mGLOB_default_function_attrs=\\\"gather_scatter_loop_unroll=4\\\"\"")
|
|
||||||
add_compile_options(-xMIC-AVX512 -qoffload -fno-alias -ansi-alias -restrict -qoverride-limits ${MIC_OPTIONS})
|
|
||||||
add_definitions(-DLMP_INTEL_OFFLOAD)
|
|
||||||
else()
|
|
||||||
if(CMAKE_CXX_COMPILER_ID STREQUAL "Intel")
|
|
||||||
if(CMAKE_CXX_COMPILER_VERSION VERSION_EQUAL 17.3 OR CMAKE_CXX_COMPILER_VERSION VERSION_EQUAL 17.4)
|
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -xCOMMON-AVX512")
|
|
||||||
else()
|
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -xHost")
|
|
||||||
endif()
|
|
||||||
include(CheckCXXCompilerFlag)
|
|
||||||
foreach(_FLAG -O2 -fp-model fast=2 -no-prec-div -qoverride-limits -qopt-zmm-usage=high -qno-offload -fno-alias -ansi-alias -restrict)
|
|
||||||
check_cxx_compiler_flag("${__FLAG}" COMPILER_SUPPORTS${_FLAG})
|
|
||||||
if(COMPILER_SUPPORTS${_FLAG})
|
|
||||||
add_compile_options(${_FLAG})
|
|
||||||
endif()
|
|
||||||
endforeach()
|
|
||||||
else()
|
|
||||||
add_compile_options(-O3 -ffast-math)
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# collect sources
|
|
||||||
set(USER-INTEL_SOURCES_DIR ${LAMMPS_SOURCE_DIR}/USER-INTEL)
|
|
||||||
set(USER-INTEL_SOURCES ${USER-INTEL_SOURCES_DIR}/fix_intel.cpp
|
|
||||||
${USER-INTEL_SOURCES_DIR}/fix_nh_intel.cpp
|
|
||||||
${USER-INTEL_SOURCES_DIR}/intel_buffers.cpp
|
|
||||||
${USER-INTEL_SOURCES_DIR}/nbin_intel.cpp
|
|
||||||
${USER-INTEL_SOURCES_DIR}/npair_intel.cpp)
|
|
||||||
|
|
||||||
set_property(GLOBAL PROPERTY "USER-INTEL_SOURCES" "${USER-INTEL_SOURCES}")
|
|
||||||
|
|
||||||
# detect styles which have a USER-INTEL version
|
|
||||||
RegisterStylesExt(${USER-INTEL_SOURCES_DIR} intel USER-INTEL_SOURCES)
|
|
||||||
RegisterNBinStyle(${USER-INTEL_SOURCES_DIR}/nbin_intel.h)
|
|
||||||
RegisterNPairStyle(${USER-INTEL_SOURCES_DIR}/npair_intel.h)
|
|
||||||
RegisterFixStyle(${USER-INTEL_SOURCES_DIR}/fix_intel.h)
|
|
||||||
|
|
||||||
get_property(USER-INTEL_SOURCES GLOBAL PROPERTY USER-INTEL_SOURCES)
|
|
||||||
if(PKG_KSPACE)
|
|
||||||
list(APPEND USER-INTEL_SOURCES ${USER-INTEL_SOURCES_DIR}/verlet_lrt_intel.cpp)
|
|
||||||
RegisterIntegrateStyle(${USER-INTEL_SOURCES_DIR}/verlet_lrt_intel.h)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
list(APPEND LIB_SOURCES ${USER-INTEL_SOURCES})
|
|
||||||
include_directories(${USER-INTEL_SOURCES_DIR})
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
target_compile_definitions(lammps PRIVATE -DLMP_USER_INTEL)
|
||||||
|
|
||||||
|
set(INTEL_ARCH "cpu" CACHE STRING "Architectures used by USER-INTEL (cpu or knl)")
|
||||||
|
set(INTEL_ARCH_VALUES cpu knl)
|
||||||
|
set_property(CACHE INTEL_ARCH PROPERTY STRINGS ${INTEL_ARCH_VALUES})
|
||||||
|
validate_option(INTEL_ARCH INTEL_ARCH_VALUES)
|
||||||
|
string(TOUPPER ${INTEL_ARCH} INTEL_ARCH)
|
||||||
|
|
||||||
|
find_package(Threads QUIET)
|
||||||
|
if(Threads_FOUND)
|
||||||
|
set(INTEL_LRT_MODE "threads" CACHE STRING "Long-range threads mode (none, threads, or c++11)")
|
||||||
|
else()
|
||||||
|
set(INTEL_LRT_MODE "none" CACHE STRING "Long-range threads mode (none, threads, or c++11)")
|
||||||
|
endif()
|
||||||
|
set(INTEL_LRT_VALUES none threads c++11)
|
||||||
|
set_property(CACHE INTEL_LRT_MODE PROPERTY STRINGS ${INTEL_LRT_VALUES})
|
||||||
|
validate_option(INTEL_LRT_MODE INTEL_LRT_VALUES)
|
||||||
|
string(TOUPPER ${INTEL_LRT_MODE} INTEL_LRT_MODE)
|
||||||
|
if(INTEL_LRT_MODE STREQUAL "THREADS")
|
||||||
|
if(Threads_FOUND)
|
||||||
|
target_compile_definitions(lammps PRIVATE -DLMP_INTEL_USELRT)
|
||||||
|
target_link_libraries(lammps PRIVATE Threads::Threads)
|
||||||
|
else()
|
||||||
|
message(FATAL_ERROR "Must have working threads library for Long-range thread support")
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
if(INTEL_LRT_MODE STREQUAL "C++11")
|
||||||
|
target_compile_definitions(lammps PRIVATE -DLMP_INTEL_USELRT -DLMP_INTEL_LRT11)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(CMAKE_CXX_COMPILER_ID STREQUAL "Intel")
|
||||||
|
if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS 16)
|
||||||
|
message(FATAL_ERROR "USER-INTEL needs at least a 2016 Intel compiler, found ${CMAKE_CXX_COMPILER_VERSION}")
|
||||||
|
endif()
|
||||||
|
else()
|
||||||
|
message(WARNING "USER-INTEL gives best performance with Intel compilers")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
find_package(TBB_MALLOC QUIET)
|
||||||
|
if(TBB_MALLOC_FOUND)
|
||||||
|
target_link_libraries(lammps PRIVATE TBB::TBB_MALLOC)
|
||||||
|
else()
|
||||||
|
target_compile_definitions(lammps PRIVATE -DLMP_INTEL_NO_TBB)
|
||||||
|
if(CMAKE_CXX_COMPILER_ID STREQUAL "Intel")
|
||||||
|
message(WARNING "USER-INTEL with Intel compilers should use TBB malloc libraries")
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
find_package(MKL QUIET)
|
||||||
|
if(MKL_FOUND)
|
||||||
|
target_compile_definitions(lammps PRIVATE -DLMP_USE_MKL_RNG)
|
||||||
|
target_link_libraries(lammps PRIVATE MKL::MKL)
|
||||||
|
else()
|
||||||
|
message(STATUS "Pair style dpd/intel will be faster with MKL libraries")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if((NOT ${CMAKE_SYSTEM_NAME} STREQUAL "Windows") AND (NOT ${LAMMPS_MEMALIGN} STREQUAL "64") AND (NOT ${LAMMPS_MEMALIGN} STREQUAL "128") AND (NOT ${LAMMPS_MEMALIGN} STREQUAL "256"))
|
||||||
|
message(FATAL_ERROR "USER-INTEL only supports memory alignment of 64, 128 or 256 on this platform")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(INTEL_ARCH STREQUAL "KNL")
|
||||||
|
if(NOT CMAKE_CXX_COMPILER_ID STREQUAL "Intel")
|
||||||
|
message(FATAL_ERROR "Must use Intel compiler with USER-INTEL for KNL architecture")
|
||||||
|
endif()
|
||||||
|
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -xHost -qopenmp -qoffload")
|
||||||
|
set(MIC_OPTIONS "-qoffload-option,mic,compiler,\"-fp-model fast=2 -mGLOB_default_function_attrs=\\\"gather_scatter_loop_unroll=4\\\"\"")
|
||||||
|
target_compile_options(lammps PRIVATE -xMIC-AVX512 -qoffload -fno-alias -ansi-alias -restrict -qoverride-limits ${MIC_OPTIONS})
|
||||||
|
target_compile_definitions(lammps PRIVATE -DLMP_INTEL_OFFLOAD)
|
||||||
|
else()
|
||||||
|
if(CMAKE_CXX_COMPILER_ID STREQUAL "Intel")
|
||||||
|
include(CheckCXXCompilerFlag)
|
||||||
|
foreach(_FLAG -O2 -fp-model fast=2 -no-prec-div -qoverride-limits -qopt-zmm-usage=high -qno-offload -fno-alias -ansi-alias -restrict)
|
||||||
|
check_cxx_compiler_flag("${_FLAG}" COMPILER_SUPPORTS${_FLAG})
|
||||||
|
if(COMPILER_SUPPORTS${_FLAG})
|
||||||
|
target_compile_options(lammps PRIVATE ${_FLAG})
|
||||||
|
endif()
|
||||||
|
endforeach()
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# collect sources
|
||||||
|
set(USER-INTEL_SOURCES_DIR ${LAMMPS_SOURCE_DIR}/USER-INTEL)
|
||||||
|
set(USER-INTEL_SOURCES ${USER-INTEL_SOURCES_DIR}/fix_intel.cpp
|
||||||
|
${USER-INTEL_SOURCES_DIR}/fix_nh_intel.cpp
|
||||||
|
${USER-INTEL_SOURCES_DIR}/intel_buffers.cpp
|
||||||
|
${USER-INTEL_SOURCES_DIR}/nbin_intel.cpp
|
||||||
|
${USER-INTEL_SOURCES_DIR}/npair_intel.cpp)
|
||||||
|
|
||||||
|
set_property(GLOBAL PROPERTY "USER-INTEL_SOURCES" "${USER-INTEL_SOURCES}")
|
||||||
|
|
||||||
|
# detect styles which have a USER-INTEL version
|
||||||
|
RegisterStylesExt(${USER-INTEL_SOURCES_DIR} intel USER-INTEL_SOURCES)
|
||||||
|
RegisterNBinStyle(${USER-INTEL_SOURCES_DIR}/nbin_intel.h)
|
||||||
|
RegisterNPairStyle(${USER-INTEL_SOURCES_DIR}/npair_intel.h)
|
||||||
|
RegisterFixStyle(${USER-INTEL_SOURCES_DIR}/fix_intel.h)
|
||||||
|
|
||||||
|
get_property(USER-INTEL_SOURCES GLOBAL PROPERTY USER-INTEL_SOURCES)
|
||||||
|
if(PKG_KSPACE)
|
||||||
|
list(APPEND USER-INTEL_SOURCES ${USER-INTEL_SOURCES_DIR}/verlet_lrt_intel.cpp)
|
||||||
|
RegisterIntegrateStyle(${USER-INTEL_SOURCES_DIR}/verlet_lrt_intel.h)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
target_sources(lammps PRIVATE ${USER-INTEL_SOURCES})
|
||||||
|
target_include_directories(lammps PRIVATE ${USER-INTEL_SOURCES_DIR})
|
||||||
|
|||||||
@ -1,14 +1,8 @@
|
|||||||
if(PKG_USER-MOLFILE)
|
set(MOLFILE_INCLUDE_DIRS "${LAMMPS_LIB_SOURCE_DIR}/molfile" CACHE STRING "Path to VMD molfile plugin headers")
|
||||||
if (CMAKE_VERSION VERSION_LESS "3.10") # due to INTERFACE without a library
|
add_library(molfile INTERFACE)
|
||||||
message(FATAL_ERROR "For configuring USER-MOLFILE you need CMake 3.10 or later")
|
target_include_directories(molfile INTERFACE ${MOLFILE_INCLUDE_DIRS})
|
||||||
endif()
|
# no need to link with -ldl on windows
|
||||||
|
if(NOT ${CMAKE_SYSTEM_NAME} STREQUAL "Windows")
|
||||||
set(MOLFILE_INCLUDE_DIRS "${LAMMPS_LIB_SOURCE_DIR}/molfile" CACHE STRING "Path to VMD molfile plugin headers")
|
target_link_libraries(molfile INTERFACE ${CMAKE_DL_LIBS})
|
||||||
add_library(molfile INTERFACE)
|
|
||||||
target_include_directories(molfile INTERFACE ${MOLFILE_INCLUDE_DIRS})
|
|
||||||
# no need to link with -ldl on windows
|
|
||||||
if(NOT ${CMAKE_SYSTEM_NAME} STREQUAL "Windows")
|
|
||||||
target_link_libraries(molfile INTERFACE ${CMAKE_DL_LIBS})
|
|
||||||
endif()
|
|
||||||
list(APPEND LAMMPS_LINK_LIBS molfile)
|
|
||||||
endif()
|
endif()
|
||||||
|
target_link_libraries(lammps PRIVATE molfile)
|
||||||
|
|||||||
@ -1,6 +1,26 @@
|
|||||||
if(PKG_USER-NETCDF)
|
# USER-NETCDF can use NetCDF, Parallel NetCDF (PNetCDF), or both. At least one necessary.
|
||||||
|
# NetCDF library enables dump style "netcdf", while PNetCDF enables dump style "netcdf/mpiio"
|
||||||
|
|
||||||
|
# may use NetCDF or PNetCDF with MPI, but must have NetCDF without
|
||||||
|
if(NOT BUILD_MPI)
|
||||||
find_package(NetCDF REQUIRED)
|
find_package(NetCDF REQUIRED)
|
||||||
include_directories(${NETCDF_INCLUDE_DIRS})
|
else()
|
||||||
list(APPEND LAMMPS_LINK_LIBS ${NETCDF_LIBRARIES})
|
find_package(NetCDF)
|
||||||
add_definitions(-DLMP_HAS_NETCDF -DNC_64BIT_DATA=0x0020)
|
if(NETCDF_FOUND)
|
||||||
|
find_package(PNetCDF)
|
||||||
|
else()
|
||||||
|
find_package(PNetCDF REQUIRED)
|
||||||
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
if(NETCDF_FOUND)
|
||||||
|
target_link_libraries(lammps PRIVATE NetCDF::NetCDF)
|
||||||
|
target_compile_definitions(lammps PRIVATE -DLMP_HAS_NETCDF)
|
||||||
|
endif(NETCDF_FOUND)
|
||||||
|
|
||||||
|
if(PNETCDF_FOUND)
|
||||||
|
target_link_libraries(lammps PRIVATE PNetCDF::PNetCDF)
|
||||||
|
target_compile_definitions(lammps PRIVATE -DLMP_HAS_PNETCDF)
|
||||||
|
endif(PNETCDF_FOUND)
|
||||||
|
|
||||||
|
target_compile_definitions(lammps PRIVATE -DNC_64BIT_DATA=0x0020)
|
||||||
|
|||||||
@ -1,42 +1,40 @@
|
|||||||
if(PKG_USER-OMP)
|
set(USER-OMP_SOURCES_DIR ${LAMMPS_SOURCE_DIR}/USER-OMP)
|
||||||
set(USER-OMP_SOURCES_DIR ${LAMMPS_SOURCE_DIR}/USER-OMP)
|
set(USER-OMP_SOURCES ${USER-OMP_SOURCES_DIR}/thr_data.cpp
|
||||||
set(USER-OMP_SOURCES ${USER-OMP_SOURCES_DIR}/thr_data.cpp
|
${USER-OMP_SOURCES_DIR}/thr_omp.cpp
|
||||||
${USER-OMP_SOURCES_DIR}/thr_omp.cpp
|
${USER-OMP_SOURCES_DIR}/fix_omp.cpp
|
||||||
${USER-OMP_SOURCES_DIR}/fix_omp.cpp
|
${USER-OMP_SOURCES_DIR}/fix_nh_omp.cpp
|
||||||
${USER-OMP_SOURCES_DIR}/fix_nh_omp.cpp
|
${USER-OMP_SOURCES_DIR}/fix_nh_sphere_omp.cpp
|
||||||
${USER-OMP_SOURCES_DIR}/fix_nh_sphere_omp.cpp
|
${USER-OMP_SOURCES_DIR}/domain_omp.cpp)
|
||||||
${USER-OMP_SOURCES_DIR}/domain_omp.cpp)
|
target_compile_definitions(lammps PRIVATE -DLMP_USER_OMP)
|
||||||
add_definitions(-DLMP_USER_OMP)
|
set_property(GLOBAL PROPERTY "OMP_SOURCES" "${USER-OMP_SOURCES}")
|
||||||
set_property(GLOBAL PROPERTY "OMP_SOURCES" "${USER-OMP_SOURCES}")
|
|
||||||
|
|
||||||
# detects styles which have USER-OMP version
|
# detects styles which have USER-OMP version
|
||||||
RegisterStylesExt(${USER-OMP_SOURCES_DIR} omp OMP_SOURCES)
|
RegisterStylesExt(${USER-OMP_SOURCES_DIR} omp OMP_SOURCES)
|
||||||
RegisterFixStyle(${USER-OMP_SOURCES_DIR}/fix_omp.h)
|
RegisterFixStyle(${USER-OMP_SOURCES_DIR}/fix_omp.h)
|
||||||
|
|
||||||
get_property(USER-OMP_SOURCES GLOBAL PROPERTY OMP_SOURCES)
|
get_property(USER-OMP_SOURCES GLOBAL PROPERTY OMP_SOURCES)
|
||||||
|
|
||||||
# manually add package dependent source files from USER-OMP that do not provide styles
|
# manually add package dependent source files from USER-OMP that do not provide styles
|
||||||
|
|
||||||
if(PKG_ASPHERE)
|
if(PKG_ASPHERE)
|
||||||
list(APPEND USER-OMP_SOURCES ${USER-OMP_SOURCES_DIR}/fix_nh_asphere_omp.cpp)
|
list(APPEND USER-OMP_SOURCES ${USER-OMP_SOURCES_DIR}/fix_nh_asphere_omp.cpp)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(PKG_RIGID)
|
if(PKG_RIGID)
|
||||||
list(APPEND USER-OMP_SOURCES ${USER-OMP_SOURCES_DIR}/fix_rigid_nh_omp.cpp)
|
list(APPEND USER-OMP_SOURCES ${USER-OMP_SOURCES_DIR}/fix_rigid_nh_omp.cpp)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(PKG_USER-REAXC)
|
if(PKG_USER-REAXC)
|
||||||
list(APPEND USER-OMP_SOURCES ${USER-OMP_SOURCES_DIR}/reaxc_bond_orders_omp.cpp
|
list(APPEND USER-OMP_SOURCES ${USER-OMP_SOURCES_DIR}/reaxc_bond_orders_omp.cpp
|
||||||
${USER-OMP_SOURCES_DIR}/reaxc_hydrogen_bonds_omp.cpp
|
${USER-OMP_SOURCES_DIR}/reaxc_hydrogen_bonds_omp.cpp
|
||||||
${USER-OMP_SOURCES_DIR}/reaxc_nonbonded_omp.cpp
|
${USER-OMP_SOURCES_DIR}/reaxc_nonbonded_omp.cpp
|
||||||
${USER-OMP_SOURCES_DIR}/reaxc_bonds_omp.cpp
|
${USER-OMP_SOURCES_DIR}/reaxc_bonds_omp.cpp
|
||||||
${USER-OMP_SOURCES_DIR}/reaxc_init_md_omp.cpp
|
${USER-OMP_SOURCES_DIR}/reaxc_init_md_omp.cpp
|
||||||
${USER-OMP_SOURCES_DIR}/reaxc_torsion_angles_omp.cpp
|
${USER-OMP_SOURCES_DIR}/reaxc_torsion_angles_omp.cpp
|
||||||
${USER-OMP_SOURCES_DIR}/reaxc_forces_omp.cpp
|
${USER-OMP_SOURCES_DIR}/reaxc_forces_omp.cpp
|
||||||
${USER-OMP_SOURCES_DIR}/reaxc_multi_body_omp.cpp
|
${USER-OMP_SOURCES_DIR}/reaxc_multi_body_omp.cpp
|
||||||
${USER-OMP_SOURCES_DIR}/reaxc_valence_angles_omp.cpp)
|
${USER-OMP_SOURCES_DIR}/reaxc_valence_angles_omp.cpp)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
list(APPEND LIB_SOURCES ${USER-OMP_SOURCES})
|
target_sources(lammps PRIVATE ${USER-OMP_SOURCES})
|
||||||
include_directories(${USER-OMP_SOURCES_DIR})
|
target_include_directories(lammps PRIVATE ${USER-OMP_SOURCES_DIR})
|
||||||
endif()
|
|
||||||
|
|||||||
@ -1,91 +1,98 @@
|
|||||||
if(PKG_USER-PLUMED)
|
set(PLUMED_MODE "static" CACHE STRING "Linkage mode for Plumed2 library")
|
||||||
set(PLUMED_MODE "static" CACHE STRING "Linkage mode for Plumed2 library")
|
set(PLUMED_MODE_VALUES static shared runtime)
|
||||||
set(PLUMED_MODE_VALUES static shared runtime)
|
set_property(CACHE PLUMED_MODE PROPERTY STRINGS ${PLUMED_MODE_VALUES})
|
||||||
set_property(CACHE PLUMED_MODE PROPERTY STRINGS ${PLUMED_MODE_VALUES})
|
validate_option(PLUMED_MODE PLUMED_MODE_VALUES)
|
||||||
validate_option(PLUMED_MODE PLUMED_MODE_VALUES)
|
string(TOUPPER ${PLUMED_MODE} PLUMED_MODE)
|
||||||
string(TOUPPER ${PLUMED_MODE} PLUMED_MODE)
|
|
||||||
|
|
||||||
set(PLUMED_LINK_LIBS "")
|
set(PLUMED_LINK_LIBS)
|
||||||
if(PLUMED_MODE STREQUAL "STATIC")
|
if(PLUMED_MODE STREQUAL "STATIC")
|
||||||
find_package(LAPACK REQUIRED)
|
find_package(LAPACK REQUIRED)
|
||||||
find_package(BLAS REQUIRED)
|
find_package(BLAS REQUIRED)
|
||||||
find_package(GSL REQUIRED)
|
find_package(GSL REQUIRED)
|
||||||
list(APPEND LAPACK_LIBRARIES ${BLAS_LIBRARIES})
|
list(APPEND PLUMED_LINK_LIBS ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES} GSL::gsl)
|
||||||
list(APPEND PLUMED_LINK_LIBS ${LAPACK_LIBRARIES} ${GSL_LIBRARIES})
|
find_package(ZLIB QUIET)
|
||||||
find_package(ZLIB QUIET)
|
if(ZLIB_FOUND)
|
||||||
if(ZLIB_FOUND)
|
list(APPEND PLUMED_LINK_LIBS ZLIB::ZLIB)
|
||||||
list(APPEND PLUMED_LINK_LIBS ${ZLIB_LIBRARIES})
|
|
||||||
endif()
|
|
||||||
endif()
|
endif()
|
||||||
|
find_package(FFTW3 QUIET)
|
||||||
find_package(PkgConfig QUIET)
|
if(FFTW3_FOUND)
|
||||||
set(DOWNLOAD_PLUMED_DEFAULT ON)
|
list(APPEND PLUMED_LINK_LIBS FFTW3::FFTW3)
|
||||||
if(PKG_CONFIG_FOUND)
|
|
||||||
pkg_check_modules(PLUMED QUIET plumed)
|
|
||||||
if(PLUMED_FOUND)
|
|
||||||
set(DOWNLOAD_PLUMED_DEFAULT OFF)
|
|
||||||
endif()
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
option(DOWNLOAD_PLUMED "Download Plumed package instead of using an already installed one" ${DOWNLOAD_PLUMED_DEFAULT})
|
|
||||||
if(DOWNLOAD_PLUMED)
|
|
||||||
if(CMAKE_GENERATOR STREQUAL "Ninja")
|
|
||||||
message(FATAL_ERROR "Cannot build downloaded Plumed library with Ninja build tool")
|
|
||||||
endif()
|
|
||||||
if(BUILD_MPI)
|
|
||||||
set(PLUMED_CONFIG_MPI "--enable-mpi")
|
|
||||||
set(PLUMED_CONFIG_CC ${CMAKE_MPI_C_COMPILER})
|
|
||||||
set(PLUMED_CONFIG_CXX ${CMAKE_MPI_CXX_COMPILER})
|
|
||||||
else()
|
|
||||||
set(PLUMED_CONFIG_MPI "--disable-mpi")
|
|
||||||
set(PLUMED_CONFIG_CC ${CMAKE_C_COMPILER})
|
|
||||||
set(PLUMED_CONFIG_CXX ${CMAKE_CXX_COMPILER})
|
|
||||||
endif()
|
|
||||||
if(BUILD_OMP)
|
|
||||||
set(PLUMED_CONFIG_OMP "--enable-openmp")
|
|
||||||
else()
|
|
||||||
set(PLUMED_CONFIG_OMP "--disable-openmp")
|
|
||||||
endif()
|
|
||||||
message(STATUS "PLUMED download requested - we will build our own")
|
|
||||||
include(ExternalProject)
|
|
||||||
ExternalProject_Add(plumed_build
|
|
||||||
URL https://github.com/plumed/plumed2/releases/download/v2.5.3/plumed-src-2.5.3.tgz
|
|
||||||
URL_MD5 de30d6e7c2dcc0973298e24a6da24286
|
|
||||||
BUILD_IN_SOURCE 1
|
|
||||||
CONFIGURE_COMMAND <SOURCE_DIR>/configure --prefix=<INSTALL_DIR>
|
|
||||||
${CONFIGURE_REQUEST_PIC}
|
|
||||||
--enable-modules=all
|
|
||||||
${PLUMED_CONFIG_MPI}
|
|
||||||
${PLUMED_CONFIG_OMP}
|
|
||||||
CXX=${PLUMED_CONFIG_CXX}
|
|
||||||
CC=${PLUMED_CONFIG_CC}
|
|
||||||
)
|
|
||||||
ExternalProject_get_property(plumed_build INSTALL_DIR)
|
|
||||||
set(PLUMED_INSTALL_DIR ${INSTALL_DIR})
|
|
||||||
list(APPEND LAMMPS_DEPS plumed_build)
|
|
||||||
if(PLUMED_MODE STREQUAL "STATIC")
|
|
||||||
add_definitions(-D__PLUMED_WRAPPER_CXX=1)
|
|
||||||
list(APPEND LAMMPS_LINK_LIBS ${PLUMED_INSTALL_DIR}/lib/libplumed.a ${PLUMED_LINK_LIBS} ${CMAKE_DL_LIBS})
|
|
||||||
elseif(PLUMED_MODE STREQUAL "SHARED")
|
|
||||||
list(APPEND LAMMPS_LINK_LIBS ${PLUMED_INSTALL_DIR}/lib/libplumed${CMAKE_SHARED_LIBRARY_SUFFIX} ${PLUMED_INSTALL_DIR}/lib/libplumedKernel${CMAKE_SHARED_LIBRARY_SUFFIX} ${CMAKE_DL_LIBS})
|
|
||||||
elseif(PLUMED_MODE STREQUAL "RUNTIME")
|
|
||||||
add_definitions(-D__PLUMED_HAS_DLOPEN=1 -D__PLUMED_DEFAULT_KERNEL=${PLUMED_INSTALL_DIR}/lib/libplumedKernel${CMAKE_SHARED_LIBRARY_SUFFIX})
|
|
||||||
list(APPEND LAMMPS_LINK_LIBS ${PLUMED_INSTALL_DIR}/lib/libplumedWrapper.a -rdynamic ${CMAKE_DL_LIBS})
|
|
||||||
endif()
|
|
||||||
set(PLUMED_INCLUDE_DIRS "${PLUMED_INSTALL_DIR}/include")
|
|
||||||
else()
|
|
||||||
find_package(PkgConfig REQUIRED)
|
|
||||||
pkg_check_modules(PLUMED REQUIRED plumed)
|
|
||||||
if(PLUMED_MODE STREQUAL "STATIC")
|
|
||||||
add_definitions(-D__PLUMED_WRAPPER_CXX=1)
|
|
||||||
include(${PLUMED_LIBDIR}/plumed/src/lib/Plumed.cmake.static)
|
|
||||||
elseif(PLUMED_MODE STREQUAL "SHARED")
|
|
||||||
include(${PLUMED_LIBDIR}/plumed/src/lib/Plumed.cmake.shared)
|
|
||||||
elseif(PLUMED_MODE STREQUAL "RUNTIME")
|
|
||||||
add_definitions(-D__PLUMED_HAS_DLOPEN=1 -D__PLUMED_DEFAULT_KERNEL=${PLUMED_LIBDIR}/libplumedKernel${CMAKE_SHARED_LIBRARY_SUFFIX})
|
|
||||||
include(${PLUMED_LIBDIR}/plumed/src/lib/Plumed.cmake.runtime)
|
|
||||||
endif()
|
|
||||||
list(APPEND LAMMPS_LINK_LIBS ${PLUMED_LOAD})
|
|
||||||
endif()
|
|
||||||
include_directories(${PLUMED_INCLUDE_DIRS})
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
find_package(PkgConfig QUIET)
|
||||||
|
set(DOWNLOAD_PLUMED_DEFAULT ON)
|
||||||
|
if(PKG_CONFIG_FOUND)
|
||||||
|
pkg_check_modules(PLUMED QUIET plumed)
|
||||||
|
if(PLUMED_FOUND)
|
||||||
|
set(DOWNLOAD_PLUMED_DEFAULT OFF)
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
option(DOWNLOAD_PLUMED "Download Plumed package instead of using an already installed one" ${DOWNLOAD_PLUMED_DEFAULT})
|
||||||
|
if(DOWNLOAD_PLUMED)
|
||||||
|
if(BUILD_MPI)
|
||||||
|
set(PLUMED_CONFIG_MPI "--enable-mpi")
|
||||||
|
set(PLUMED_CONFIG_CC ${CMAKE_MPI_C_COMPILER})
|
||||||
|
set(PLUMED_CONFIG_CXX ${CMAKE_MPI_CXX_COMPILER})
|
||||||
|
else()
|
||||||
|
set(PLUMED_CONFIG_MPI "--disable-mpi")
|
||||||
|
set(PLUMED_CONFIG_CC ${CMAKE_C_COMPILER})
|
||||||
|
set(PLUMED_CONFIG_CXX ${CMAKE_CXX_COMPILER})
|
||||||
|
endif()
|
||||||
|
if(BUILD_OMP)
|
||||||
|
set(PLUMED_CONFIG_OMP "--enable-openmp")
|
||||||
|
else()
|
||||||
|
set(PLUMED_CONFIG_OMP "--disable-openmp")
|
||||||
|
endif()
|
||||||
|
message(STATUS "PLUMED download requested - we will build our own")
|
||||||
|
if(PLUMED_MODE STREQUAL "STATIC")
|
||||||
|
set(PLUMED_BUILD_BYPRODUCTS "<INSTALL_DIR>/lib/libplumed.a")
|
||||||
|
elseif(PLUMED_MODE STREQUAL "SHARED")
|
||||||
|
set(PLUMED_BUILD_BYPRODUCTS "<INSTALL_DIR>/lib/libplumed${CMAKE_SHARED_LIBRARY_SUFFIX};<INSTALL_DIR>/lib/libplumedKernel${CMAKE_SHARED_LIBRARY_SUFFIX}")
|
||||||
|
elseif(PLUMED_MODE STREQUAL "RUNTIME")
|
||||||
|
set(PLUMED_BUILD_BYPRODUCTS "<INSTALL_DIR>/lib/libplumedWrapper.a")
|
||||||
|
endif()
|
||||||
|
include(ExternalProject)
|
||||||
|
ExternalProject_Add(plumed_build
|
||||||
|
URL https://github.com/plumed/plumed2/releases/download/v2.6.0/plumed-src-2.6.0.tgz
|
||||||
|
URL_MD5 204d2edae58d9b10ba3ad460cad64191
|
||||||
|
BUILD_IN_SOURCE 1
|
||||||
|
CONFIGURE_COMMAND <SOURCE_DIR>/configure --prefix=<INSTALL_DIR>
|
||||||
|
${CONFIGURE_REQUEST_PIC}
|
||||||
|
--enable-modules=all
|
||||||
|
${PLUMED_CONFIG_MPI}
|
||||||
|
${PLUMED_CONFIG_OMP}
|
||||||
|
CXX=${PLUMED_CONFIG_CXX}
|
||||||
|
CC=${PLUMED_CONFIG_CC}
|
||||||
|
BUILD_BYPRODUCTS ${PLUMED_BUILD_BYPRODUCTS}
|
||||||
|
)
|
||||||
|
ExternalProject_get_property(plumed_build INSTALL_DIR)
|
||||||
|
add_library(LAMMPS::PLUMED UNKNOWN IMPORTED)
|
||||||
|
add_dependencies(LAMMPS::PLUMED plumed_build)
|
||||||
|
if(PLUMED_MODE STREQUAL "STATIC")
|
||||||
|
set_target_properties(LAMMPS::PLUMED PROPERTIES IMPORTED_LOCATION ${INSTALL_DIR}/lib/libplumed.a INTERFACE_LINK_LIBRARIES "${PLUMED_LINK_LIBS};${CMAKE_DL_LIBS}")
|
||||||
|
elseif(PLUMED_MODE STREQUAL "SHARED")
|
||||||
|
set_target_properties(LAMMPS::PLUMED PROPERTIES IMPORTED_LOCATION ${INSTALL_DIR}/lib/libplumed${CMAKE_SHARED_LIBRARY_SUFFIX} INTERFACE_LINK_LIBRARIES "${INSTALL_DIR}/lib/libplumedKernel${CMAKE_SHARED_LIBRARY_SUFFIX};${CMAKE_DL_LIBS}")
|
||||||
|
elseif(PLUMED_MODE STREQUAL "RUNTIME")
|
||||||
|
set_target_properties(LAMMPS::PLUMED PROPERTIES INTERFACE_COMPILE_DEFINITIONS "__PLUMED_DEFAULT_KERNEL=${INSTALL_DIR}/lib/libplumedKernel${CMAKE_SHARED_LIBRARY_SUFFIX}")
|
||||||
|
set_target_properties(LAMMPS::PLUMED PROPERTIES IMPORTED_LOCATION ${INSTALL_DIR}/lib/libplumedWrapper.a INTERFACE_LINK_LIBRARIES "${CMAKE_DL_LIBS}")
|
||||||
|
endif()
|
||||||
|
set_target_properties(LAMMPS::PLUMED PROPERTIES INTERFACE_INCLUDE_DIRECTORIES ${INSTALL_DIR}/include)
|
||||||
|
file(MAKE_DIRECTORY ${INSTALL_DIR}/include)
|
||||||
|
else()
|
||||||
|
find_package(PkgConfig REQUIRED)
|
||||||
|
pkg_check_modules(PLUMED REQUIRED plumed)
|
||||||
|
add_library(LAMMPS::PLUMED INTERFACE IMPORTED)
|
||||||
|
if(PLUMED_MODE STREQUAL "STATIC")
|
||||||
|
include(${PLUMED_LIBDIR}/plumed/src/lib/Plumed.cmake.static)
|
||||||
|
elseif(PLUMED_MODE STREQUAL "SHARED")
|
||||||
|
include(${PLUMED_LIBDIR}/plumed/src/lib/Plumed.cmake.shared)
|
||||||
|
elseif(PLUMED_MODE STREQUAL "RUNTIME")
|
||||||
|
set_target_properties(LAMMPS::PLUMED PROPERTIES INTERFACE_COMPILE_DEFINITIONS "__PLUMED_DEFAULT_KERNEL=${PLUMED_LIBDIR}/libplumedKernel${CMAKE_SHARED_LIBRARY_SUFFIX}")
|
||||||
|
include(${PLUMED_LIBDIR}/plumed/src/lib/Plumed.cmake.runtime)
|
||||||
|
endif()
|
||||||
|
set_target_properties(LAMMPS::PLUMED PROPERTIES INTERFACE_LINK_LIBRARIES "${PLUMED_LOAD}")
|
||||||
|
set_target_properties(LAMMPS::PLUMED PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${PLUMED_INCLUDE_DIRS}")
|
||||||
|
endif()
|
||||||
|
target_link_libraries(lammps PRIVATE LAMMPS::PLUMED)
|
||||||
|
|||||||
@ -1,9 +1,6 @@
|
|||||||
if(PKG_USER-QMMM)
|
enable_language(C)
|
||||||
enable_language(Fortran)
|
|
||||||
enable_language(C)
|
|
||||||
|
|
||||||
message(WARNING "Building QMMM with CMake is still experimental")
|
add_library(qmmm STATIC ${LAMMPS_LIB_SOURCE_DIR}/qmmm/libqmmm.c)
|
||||||
find_package(QE REQUIRED)
|
set_target_properties(qmmm PROPERTIES OUTPUT_NAME lammps_qmmm${LAMMPS_MACHINE})
|
||||||
include_directories(${QE_INCLUDE_DIRS})
|
target_link_libraries(lammps PRIVATE qmmm)
|
||||||
list(APPEND LAMMPS_LINK_LIBS ${QE_LIBRARIES})
|
target_include_directories(qmmm PUBLIC ${LAMMPS_LIB_SOURCE_DIR}/qmmm)
|
||||||
endif()
|
|
||||||
|
|||||||
@ -1,5 +1,3 @@
|
|||||||
if(PKG_USER-QUIP)
|
enable_language(Fortran)
|
||||||
enable_language(Fortran)
|
find_package(QUIP REQUIRED)
|
||||||
find_package(QUIP REQUIRED)
|
target_link_libraries(lammps PRIVATE QUIP::QUIP ${LAPACK_LIBRARIES})
|
||||||
list(APPEND LAMMPS_LINK_LIBS ${QUIP_LIBRARIES} ${LAPACK_LIBRARIES})
|
|
||||||
endif()
|
|
||||||
|
|||||||
@ -1,62 +1,65 @@
|
|||||||
if(PKG_USER-SCAFACOS)
|
enable_language(Fortran)
|
||||||
enable_language(Fortran)
|
enable_language(C)
|
||||||
enable_language(C)
|
|
||||||
|
|
||||||
find_package(GSL REQUIRED)
|
find_package(GSL REQUIRED)
|
||||||
find_package(PkgConfig QUIET)
|
find_package(PkgConfig QUIET)
|
||||||
set(DOWNLOAD_SCAFACOS_DEFAULT ON)
|
find_package(MPI REQUIRED)
|
||||||
if(PKG_CONFIG_FOUND)
|
set(DOWNLOAD_SCAFACOS_DEFAULT ON)
|
||||||
pkg_check_modules(SCAFACOS QUIET scafacos)
|
if(PKG_CONFIG_FOUND)
|
||||||
if(SCAFACOS_FOUND)
|
pkg_check_modules(SCAFACOS QUIET scafacos)
|
||||||
set(DOWNLOAD_SCAFACOS_DEFAULT OFF)
|
if(SCAFACOS_FOUND)
|
||||||
endif()
|
set(DOWNLOAD_SCAFACOS_DEFAULT OFF)
|
||||||
endif()
|
endif()
|
||||||
option(DOWNLOAD_SCAFACOS "Download ScaFaCoS library instead of using an already installed one" ${DOWNLOAD_SCAFACOS_DEFAULT})
|
endif()
|
||||||
if(DOWNLOAD_SCAFACOS)
|
option(DOWNLOAD_SCAFACOS "Download ScaFaCoS library instead of using an already installed one" ${DOWNLOAD_SCAFACOS_DEFAULT})
|
||||||
if(CMAKE_GENERATOR STREQUAL "Ninja")
|
if(DOWNLOAD_SCAFACOS)
|
||||||
message(FATAL_ERROR "Cannot build downloaded ScaFaCoS library with Ninja build tool")
|
message(STATUS "ScaFaCoS download requested - we will build our own")
|
||||||
endif()
|
|
||||||
message(STATUS "ScaFaCoS download requested - we will build our own")
|
# version 1.0.1 needs a patch to compile and linke cleanly with GCC 10 and later.
|
||||||
include(ExternalProject)
|
file(DOWNLOAD https://download.lammps.org/thirdparty/scafacos-1.0.1-fix.diff ${CMAKE_CURRENT_BINARY_DIR}/scafacos-1.0.1.fix.diff
|
||||||
ExternalProject_Add(scafacos_build
|
EXPECTED_HASH MD5=4baa1333bb28fcce102d505e1992d032)
|
||||||
URL https://github.com/scafacos/scafacos/releases/download/v1.0.1/scafacos-1.0.1.tar.gz
|
|
||||||
URL_MD5 bd46d74e3296bd8a444d731bb10c1738
|
include(ExternalProject)
|
||||||
CONFIGURE_COMMAND <SOURCE_DIR>/configure --prefix=<INSTALL_DIR> --disable-doc
|
ExternalProject_Add(scafacos_build
|
||||||
--enable-fcs-solvers=fmm,p2nfft,direct,ewald,p3m
|
URL https://github.com/scafacos/scafacos/releases/download/v1.0.1/scafacos-1.0.1.tar.gz
|
||||||
--with-internal-fftw --with-internal-pfft
|
URL_MD5 bd46d74e3296bd8a444d731bb10c1738
|
||||||
--with-internal-pnfft ${CONFIGURE_REQUEST_PIC}
|
PATCH_COMMAND patch -p1 < ${CMAKE_CURRENT_BINARY_DIR}/scafacos-1.0.1.fix.diff
|
||||||
FC=${CMAKE_MPI_Fortran_COMPILER}
|
CONFIGURE_COMMAND <SOURCE_DIR>/configure --prefix=<INSTALL_DIR> --disable-doc
|
||||||
CXX=${CMAKE_MPI_CXX_COMPILER}
|
--enable-fcs-solvers=fmm,p2nfft,direct,ewald,p3m
|
||||||
CC=${CMAKE_MPI_C_COMPILER}
|
--with-internal-fftw --with-internal-pfft
|
||||||
F77=
|
--with-internal-pnfft ${CONFIGURE_REQUEST_PIC}
|
||||||
)
|
FC=${CMAKE_MPI_Fortran_COMPILER}
|
||||||
ExternalProject_get_property(scafacos_build INSTALL_DIR)
|
CXX=${CMAKE_MPI_CXX_COMPILER}
|
||||||
set(SCAFACOS_BUILD_DIR ${INSTALL_DIR})
|
CC=${CMAKE_MPI_C_COMPILER}
|
||||||
set(SCAFACOS_INCLUDE_DIRS ${SCAFACOS_BUILD_DIR}/include)
|
F77=
|
||||||
list(APPEND LAMMPS_DEPS scafacos_build)
|
BUILD_BYPRODUCTS
|
||||||
# list and order from pkg_config file of ScaFaCoS build
|
<INSTALL_DIR>/lib/libfcs.a
|
||||||
list(APPEND LAMMPS_LINK_LIBS ${SCAFACOS_BUILD_DIR}/lib/libfcs.a)
|
<INSTALL_DIR>/lib/libfcs_direct.a
|
||||||
list(APPEND LAMMPS_LINK_LIBS ${SCAFACOS_BUILD_DIR}/lib/libfcs_direct.a)
|
<INSTALL_DIR>/lib/libfcs_ewald.a
|
||||||
list(APPEND LAMMPS_LINK_LIBS ${SCAFACOS_BUILD_DIR}/lib/libfcs_ewald.a)
|
<INSTALL_DIR>/lib/libfcs_fmm.a
|
||||||
list(APPEND LAMMPS_LINK_LIBS ${SCAFACOS_BUILD_DIR}/lib/libfcs_fmm.a)
|
<INSTALL_DIR>/lib/libfcs_p2nfft.a
|
||||||
list(APPEND LAMMPS_LINK_LIBS ${SCAFACOS_BUILD_DIR}/lib/libfcs_p2nfft.a)
|
<INSTALL_DIR>/lib/libfcs_p3m.a
|
||||||
list(APPEND LAMMPS_LINK_LIBS ${SCAFACOS_BUILD_DIR}/lib/libfcs_p3m.a)
|
<INSTALL_DIR>/lib/libfcs_near.a
|
||||||
list(APPEND LAMMPS_LINK_LIBS ${GSL_LIBRARIES})
|
<INSTALL_DIR>/lib/libfcs_gridsort.a
|
||||||
list(APPEND LAMMPS_LINK_LIBS ${SCAFACOS_BUILD_DIR}/lib/libfcs_near.a)
|
<INSTALL_DIR>/lib/libfcs_resort.a
|
||||||
list(APPEND LAMMPS_LINK_LIBS ${SCAFACOS_BUILD_DIR}/lib/libfcs_gridsort.a)
|
<INSTALL_DIR>/lib/libfcs_redist.a
|
||||||
list(APPEND LAMMPS_LINK_LIBS ${SCAFACOS_BUILD_DIR}/lib/libfcs_resort.a)
|
<INSTALL_DIR>/lib/libfcs_common.a
|
||||||
list(APPEND LAMMPS_LINK_LIBS ${SCAFACOS_BUILD_DIR}/lib/libfcs_redist.a)
|
<INSTALL_DIR>/lib/libfcs_pnfft.a
|
||||||
list(APPEND LAMMPS_LINK_LIBS ${SCAFACOS_BUILD_DIR}/lib/libfcs_common.a)
|
<INSTALL_DIR>/lib/libfcs_pfft.a
|
||||||
list(APPEND LAMMPS_LINK_LIBS ${SCAFACOS_BUILD_DIR}/lib/libfcs_pnfft.a)
|
<INSTALL_DIR>/lib/libfcs_fftw3_mpi.a
|
||||||
list(APPEND LAMMPS_LINK_LIBS ${SCAFACOS_BUILD_DIR}/lib/libfcs_pfft.a)
|
<INSTALL_DIR>/lib/libfcs_fftw3.a
|
||||||
list(APPEND LAMMPS_LINK_LIBS ${SCAFACOS_BUILD_DIR}/lib/libfcs_fftw3_mpi.a)
|
)
|
||||||
list(APPEND LAMMPS_LINK_LIBS ${SCAFACOS_BUILD_DIR}/lib/libfcs_fftw3.a)
|
ExternalProject_get_property(scafacos_build INSTALL_DIR)
|
||||||
list(APPEND LAMMPS_LINK_LIBS ${MPI_Fortran_LIBRARIES})
|
file(MAKE_DIRECTORY ${INSTALL_DIR}/include)
|
||||||
list(APPEND LAMMPS_LINK_LIBS ${MPI_C_LIBRARIES})
|
add_library(LAMMPS::SCAFACOS UNKNOWN IMPORTED)
|
||||||
else()
|
set_target_properties(LAMMPS::SCAFACOS PROPERTIES
|
||||||
find_package(PkgConfig REQUIRED)
|
IMPORTED_LOCATION "${INSTALL_DIR}/lib/libfcs.a"
|
||||||
pkg_check_modules(SCAFACOS REQUIRED scafacos)
|
INTERFACE_INCLUDE_DIRECTORIES "${INSTALL_DIR}/include"
|
||||||
list(APPEND LAMMPS_LINK_LIBS ${SCAFACOS_LDFLAGS})
|
INTERFACE_LINK_LIBRARIES "${INSTALL_DIR}/lib/libfcs.a;${INSTALL_DIR}/lib/libfcs_direct.a;${INSTALL_DIR}/lib/libfcs_ewald.a;${INSTALL_DIR}/lib/libfcs_fmm.a;${INSTALL_DIR}/lib/libfcs_p2nfft.a;${INSTALL_DIR}/lib/libfcs_p3m.a;GSL::gsl;${INSTALL_DIR}/lib/libfcs_near.a;${INSTALL_DIR}/lib/libfcs_gridsort.a;${INSTALL_DIR}/lib/libfcs_resort.a;${INSTALL_DIR}/lib/libfcs_redist.a;${INSTALL_DIR}/lib/libfcs_common.a;${INSTALL_DIR}/lib/libfcs_pnfft.a;${INSTALL_DIR}/lib/libfcs_pfft.a;${INSTALL_DIR}/lib/libfcs_fftw3_mpi.a;${INSTALL_DIR}/lib/libfcs_fftw3.a;MPI::MPI_Fortran;MPI::MPI_C")
|
||||||
endif()
|
target_link_libraries(lammps PRIVATE LAMMPS::SCAFACOS)
|
||||||
include_directories(${SCAFACOS_INCLUDE_DIRS})
|
add_dependencies(LAMMPS::SCAFACOS scafacos_build)
|
||||||
|
else()
|
||||||
|
find_package(PkgConfig REQUIRED)
|
||||||
|
pkg_check_modules(SCAFACOS REQUIRED IMPORTED_TARGET scafacos)
|
||||||
|
target_link_libraries(lammps PRIVATE PkgConfig::SCAFACOS)
|
||||||
endif()
|
endif()
|
||||||
|
|||||||
@ -1,13 +1,13 @@
|
|||||||
# Fix rigid/meso requires RIGID to be installed
|
# Fix rigid/meso requires RIGID to be installed
|
||||||
if(PKG_USER-SDPD)
|
set(USER-SDPD_SOURCES_DIR ${LAMMPS_SOURCE_DIR}/USER-SDPD)
|
||||||
set(USER-SDPD_SOURCES_DIR ${LAMMPS_SOURCE_DIR}/USER-SDPD)
|
|
||||||
|
|
||||||
get_property(hlist GLOBAL PROPERTY FIX)
|
get_property(hlist GLOBAL PROPERTY FIX)
|
||||||
if(NOT PKG_RIGID)
|
if(NOT PKG_RIGID)
|
||||||
list(REMOVE_ITEM hlist ${USER-SDPD_SOURCES_DIR}/fix_rigid_meso.h)
|
list(REMOVE_ITEM hlist ${USER-SDPD_SOURCES_DIR}/fix_rigid_meso.h)
|
||||||
list(REMOVE_ITEM LIB_SOURCES ${USER-SDPD_SOURCES_DIR}/fix_rigid_meso.cpp)
|
get_target_property(LAMMPS_SOURCES lammps SOURCES)
|
||||||
endif()
|
list(REMOVE_ITEM LAMMPS_SOURCES ${USER-SDPD_SOURCES_DIR}/fix_rigid_meso.cpp)
|
||||||
set_property(GLOBAL PROPERTY FIX "${hlist}")
|
set_property(TARGET lammps PROPERTY SOURCES ${LAMMPS_SOURCES})
|
||||||
|
|
||||||
include_directories(${USER-SDPD_SOURCES_DIR})
|
|
||||||
endif()
|
endif()
|
||||||
|
set_property(GLOBAL PROPERTY FIX "${hlist}")
|
||||||
|
|
||||||
|
target_include_directories(lammps PRIVATE ${USER-SDPD_SOURCES_DIR})
|
||||||
|
|||||||
@ -1,28 +1,28 @@
|
|||||||
if(PKG_USER-SMD)
|
find_package(Eigen3 NO_MODULE)
|
||||||
find_package(Eigen3 NO_MODULE)
|
if(EIGEN3_FOUND)
|
||||||
if(EIGEN3_FOUND)
|
set(DOWNLOAD_EIGEN3_DEFAULT OFF)
|
||||||
set(DOWNLOAD_EIGEN3_DEFAULT OFF)
|
else()
|
||||||
else()
|
set(DOWNLOAD_EIGEN3_DEFAULT ON)
|
||||||
set(DOWNLOAD_EIGEN3_DEFAULT ON)
|
endif()
|
||||||
endif()
|
option(DOWNLOAD_EIGEN3 "Download Eigen3 instead of using an already installed one)" ${DOWNLOAD_EIGEN3_DEFAULT})
|
||||||
option(DOWNLOAD_EIGEN3 "Download Eigen3 instead of using an already installed one)" ${DOWNLOAD_EIGEN3_DEFAULT})
|
if(DOWNLOAD_EIGEN3)
|
||||||
if(DOWNLOAD_EIGEN3)
|
message(STATUS "Eigen3 download requested - we will build our own")
|
||||||
message(STATUS "Eigen3 download requested - we will build our own")
|
include(ExternalProject)
|
||||||
include(ExternalProject)
|
ExternalProject_Add(Eigen3_build
|
||||||
ExternalProject_Add(Eigen3_build
|
URL https://bitbucket.org/eigen/eigen/get/3.3.7.tar.gz
|
||||||
URL http://bitbucket.org/eigen/eigen/get/3.3.7.tar.gz
|
URL_MD5 f2a417d083fe8ca4b8ed2bc613d20f07
|
||||||
URL_MD5 f2a417d083fe8ca4b8ed2bc613d20f07
|
CONFIGURE_COMMAND "" BUILD_COMMAND "" INSTALL_COMMAND ""
|
||||||
CONFIGURE_COMMAND "" BUILD_COMMAND "" INSTALL_COMMAND ""
|
)
|
||||||
)
|
ExternalProject_get_property(Eigen3_build SOURCE_DIR)
|
||||||
ExternalProject_get_property(Eigen3_build SOURCE_DIR)
|
add_library(LAMMPS::EIGEN3 INTERFACE IMPORTED)
|
||||||
set(EIGEN3_INCLUDE_DIR ${SOURCE_DIR})
|
set_target_properties(LAMMPS::EIGEN3 PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${SOURCE_DIR}")
|
||||||
list(APPEND LAMMPS_DEPS Eigen3_build)
|
target_link_libraries(lammps PRIVATE LAMMPS::EIGEN3)
|
||||||
else()
|
add_dependencies(LAMMPS::EIGEN3 Eigen3_build)
|
||||||
find_package(Eigen3 NO_MODULE)
|
else()
|
||||||
mark_as_advanced(Eigen3_DIR)
|
find_package(Eigen3 NO_MODULE)
|
||||||
if(NOT EIGEN3_FOUND)
|
mark_as_advanced(Eigen3_DIR)
|
||||||
message(FATAL_ERROR "Eigen3 not found, help CMake to find it by setting EIGEN3_INCLUDE_DIR, or set DOWNLOAD_EIGEN3=ON to download it")
|
if(NOT EIGEN3_FOUND)
|
||||||
endif()
|
message(FATAL_ERROR "Eigen3 not found, help CMake to find it by setting EIGEN3_INCLUDE_DIR, or set DOWNLOAD_EIGEN3=ON to download it")
|
||||||
endif()
|
endif()
|
||||||
include_directories(${EIGEN3_INCLUDE_DIR})
|
target_link_libraries(lammps PRIVATE Eigen3::Eigen)
|
||||||
endif()
|
endif()
|
||||||
|
|||||||
@ -1,6 +1,4 @@
|
|||||||
if(PKG_USER-VTK)
|
find_package(VTK REQUIRED NO_MODULE)
|
||||||
find_package(VTK REQUIRED NO_MODULE)
|
include(${VTK_USE_FILE})
|
||||||
include(${VTK_USE_FILE})
|
target_compile_definitions(lammps PRIVATE -DLAMMPS_VTK)
|
||||||
add_definitions(-DLAMMPS_VTK)
|
target_link_libraries(lammps PRIVATE ${VTK_LIBRARIES})
|
||||||
list(APPEND LAMMPS_LINK_LIBS ${VTK_LIBRARIES})
|
|
||||||
endif()
|
|
||||||
|
|||||||
@ -1,45 +1,48 @@
|
|||||||
if(PKG_VORONOI)
|
find_package(VORO)
|
||||||
find_package(VORO)
|
if(VORO_FOUND)
|
||||||
if(VORO_FOUND)
|
set(DOWNLOAD_VORO_DEFAULT OFF)
|
||||||
set(DOWNLOAD_VORO_DEFAULT OFF)
|
else()
|
||||||
else()
|
set(DOWNLOAD_VORO_DEFAULT ON)
|
||||||
set(DOWNLOAD_VORO_DEFAULT ON)
|
endif()
|
||||||
endif()
|
option(DOWNLOAD_VORO "Download and compile the Voro++ library instead of using an already installed one" ${DOWNLOAD_VORO_DEFAULT})
|
||||||
option(DOWNLOAD_VORO "Download and compile the Voro++ library instead of using an already installed one" ${DOWNLOAD_VORO_DEFAULT})
|
if(DOWNLOAD_VORO)
|
||||||
if(DOWNLOAD_VORO)
|
message(STATUS "Voro++ download requested - we will build our own")
|
||||||
if(CMAKE_GENERATOR STREQUAL "Ninja")
|
include(ExternalProject)
|
||||||
message(FATAL_ERROR "Cannot build downloaded Voro++ library with Ninja build tool")
|
|
||||||
endif()
|
if(BUILD_SHARED_LIBS)
|
||||||
message(STATUS "Voro++ download requested - we will build our own")
|
set(VORO_BUILD_CFLAGS "${CMAKE_SHARED_LIBRARY_CXX_FLAGS} ${CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_${BTYPE}}")
|
||||||
include(ExternalProject)
|
else()
|
||||||
|
set(VORO_BUILD_CFLAGS "${CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_${BTYPE}}")
|
||||||
if(BUILD_SHARED_LIBS)
|
endif()
|
||||||
set(VORO_BUILD_CFLAGS "${CMAKE_SHARED_LIBRARY_CXX_FLAGS} ${CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_${BTYPE}}")
|
if(APPLE)
|
||||||
else()
|
get_filename_component(VORO_CXX ${CMAKE_CXX_COMPILER} NAME_WE)
|
||||||
set(VORO_BUILD_CFLAGS "${CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_${BTYPE}}")
|
set(VORO_BUILD_OPTIONS CXX=${VORO_CXX} CFLAGS=${VORO_BUILD_CFLAGS})
|
||||||
endif()
|
else()
|
||||||
if(APPLE)
|
set(VORO_BUILD_OPTIONS CXX=${CMAKE_CXX_COMPILER} CFLAGS=${VORO_BUILD_CFLAGS})
|
||||||
get_filename_component(VORO_CXX ${CMAKE_CXX_COMPILER} NAME_WE)
|
endif()
|
||||||
set(VORO_BUILD_OPTIONS CXX=${VORO_CXX} CFLAGS=${VORO_BUILD_CFLAGS})
|
|
||||||
else()
|
ExternalProject_Add(voro_build
|
||||||
set(VORO_BUILD_OPTIONS CXX=${CMAKE_CXX_COMPILER} CFLAGS=${VORO_BUILD_CFLAGS})
|
URL https://download.lammps.org/thirdparty/voro++-0.4.6.tar.gz
|
||||||
endif()
|
URL_MD5 2338b824c3b7b25590e18e8df5d68af9
|
||||||
|
PATCH_COMMAND patch -b -p0 < ${LAMMPS_LIB_SOURCE_DIR}/voronoi/voro-make.patch
|
||||||
ExternalProject_Add(voro_build
|
CONFIGURE_COMMAND ""
|
||||||
URL https://download.lammps.org/thirdparty/voro++-0.4.6.tar.gz
|
BUILD_COMMAND make ${VORO_BUILD_OPTIONS}
|
||||||
URL_MD5 2338b824c3b7b25590e18e8df5d68af9
|
BUILD_IN_SOURCE 1
|
||||||
CONFIGURE_COMMAND "" BUILD_COMMAND make ${VORO_BUILD_OPTIONS} BUILD_IN_SOURCE 1 INSTALL_COMMAND ""
|
INSTALL_COMMAND ""
|
||||||
)
|
BUILD_BYPRODUCTS <SOURCE_DIR>/src/libvoro++.a
|
||||||
ExternalProject_get_property(voro_build SOURCE_DIR)
|
)
|
||||||
set(VORO_LIBRARIES ${SOURCE_DIR}/src/libvoro++.a)
|
ExternalProject_get_property(voro_build SOURCE_DIR)
|
||||||
set(VORO_INCLUDE_DIRS ${SOURCE_DIR}/src)
|
file(MAKE_DIRECTORY ${SOURCE_DIR}/src)
|
||||||
list(APPEND LAMMPS_DEPS voro_build)
|
add_library(LAMMPS::VORO UNKNOWN IMPORTED)
|
||||||
else()
|
set_target_properties(LAMMPS::VORO PROPERTIES
|
||||||
find_package(VORO)
|
IMPORTED_LOCATION "${SOURCE_DIR}/src/libvoro++.a"
|
||||||
if(NOT VORO_FOUND)
|
INTERFACE_INCLUDE_DIRECTORIES "${SOURCE_DIR}/src")
|
||||||
message(FATAL_ERROR "Voro++ library not found. Help CMake to find it by setting VORO_LIBRARY and VORO_INCLUDE_DIR, or set DOWNLOAD_VORO=ON to download it")
|
target_link_libraries(lammps PRIVATE LAMMPS::VORO)
|
||||||
endif()
|
add_dependencies(LAMMPS::VORO voro_build)
|
||||||
endif()
|
else()
|
||||||
include_directories(${VORO_INCLUDE_DIRS})
|
find_package(VORO)
|
||||||
list(APPEND LAMMPS_LINK_LIBS ${VORO_LIBRARIES})
|
if(NOT VORO_FOUND)
|
||||||
|
message(FATAL_ERROR "Voro++ library not found. Help CMake to find it by setting VORO_LIBRARY and VORO_INCLUDE_DIR, or set DOWNLOAD_VORO=ON to download it")
|
||||||
|
endif()
|
||||||
|
target_link_libraries(lammps PRIVATE VORO::VORO)
|
||||||
endif()
|
endif()
|
||||||
|
|||||||
@ -2,51 +2,51 @@
|
|||||||
# Testing
|
# Testing
|
||||||
###############################################################################
|
###############################################################################
|
||||||
option(ENABLE_TESTING "Enable testing" OFF)
|
option(ENABLE_TESTING "Enable testing" OFF)
|
||||||
if(ENABLE_TESTING AND BUILD_EXE)
|
if(ENABLE_TESTING)
|
||||||
enable_testing()
|
find_program(VALGRIND_BINARY NAMES valgrind)
|
||||||
option(LAMMPS_TESTING_SOURCE_DIR "Location of lammps-testing source directory" "")
|
# generate custom suppression file
|
||||||
option(LAMMPS_TESTING_GIT_TAG "Git tag of lammps-testing" "master")
|
file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/lammps.supp "\n")
|
||||||
mark_as_advanced(LAMMPS_TESTING_SOURCE_DIR LAMMPS_TESTING_GIT_TAG)
|
file(GLOB VALGRIND_SUPPRESSION_FILES ${LAMMPS_TOOLS_DIR}/valgrind/[^.]*.supp)
|
||||||
|
foreach(SUPP ${VALGRIND_SUPPRESSION_FILES})
|
||||||
|
file(READ ${SUPP} SUPPRESSIONS)
|
||||||
|
file(APPEND ${CMAKE_CURRENT_BINARY_DIR}/lammps.supp "${SUPPRESSIONS}")
|
||||||
|
endforeach()
|
||||||
|
set(VALGRIND_DEFAULT_OPTIONS "--leak-check=full --show-leak-kinds=all --track-origins=yes --suppressions=${CMAKE_BINARY_DIR}/lammps.supp")
|
||||||
|
|
||||||
if (CMAKE_VERSION VERSION_GREATER "3.10.3" AND NOT LAMMPS_TESTING_SOURCE_DIR)
|
set(MEMORYCHECK_COMMAND "${VALGRIND_BINARY}" CACHE FILEPATH "Memory Check Command")
|
||||||
include(FetchContent)
|
set(MEMORYCHECK_COMMAND_OPTIONS "${VALGRIND_DEFAULT_OPTIONS}" CACHE STRING "Memory Check Command Options")
|
||||||
|
|
||||||
FetchContent_Declare(lammps-testing
|
# check if a faster linker is available.
|
||||||
GIT_REPOSITORY https://github.com/lammps/lammps-testing.git
|
# only verified with GNU and Clang compilers and new CMake
|
||||||
GIT_TAG ${LAMMPS_TESTING_GIT_TAG}
|
if(CMAKE_VERSION VERSION_GREATER_EQUAL 3.13)
|
||||||
)
|
if((${CMAKE_CXX_COMPILER_ID} STREQUAL "GNU")
|
||||||
|
OR (${CMAKE_CXX_COMPILER_ID} STREQUAL "Clang"))
|
||||||
FetchContent_GetProperties(lammps-testing)
|
include(CheckCXXCompilerFlag)
|
||||||
if(NOT lammps-testing_POPULATED)
|
set(CMAKE_CUSTOM_LINKER_DEFAULT default)
|
||||||
message(STATUS "Downloading tests...")
|
check_cxx_compiler_flag(-fuse-ld=lld HAVE_LLD_LINKER)
|
||||||
FetchContent_Populate(lammps-testing)
|
check_cxx_compiler_flag(-fuse-ld=gold HAVE_GOLD_LINKER)
|
||||||
|
check_cxx_compiler_flag(-fuse-ld=bfd HAVE_BFD_LINKER)
|
||||||
|
if(HAVE_LLD_LINKER)
|
||||||
|
set(CMAKE_CUSTOM_LINKER_DEFAULT lld)
|
||||||
|
elseif(HAVE_GOLD_LINKER)
|
||||||
|
set(CMAKE_CUSTOM_LINKER_DEFAULT gold)
|
||||||
|
elseif(HAVE_BFD_LINKER)
|
||||||
|
set(CMAKE_CUSTOM_LINKER_DEFAULT bfd)
|
||||||
|
endif()
|
||||||
|
set(CMAKE_CUSTOM_LINKER_VALUES lld gold bfd default)
|
||||||
|
set(CMAKE_CUSTOM_LINKER ${CMAKE_CUSTOM_LINKER_DEFAULT} CACHE STRING "Choose a custom linker for faster linking (lld, gold, bfd, default)")
|
||||||
|
validate_option(CMAKE_CUSTOM_LINKER CMAKE_CUSTOM_LINKER_VALUES)
|
||||||
|
mark_as_advanced(CMAKE_CUSTOM_LINKER)
|
||||||
|
if(NOT "${CMAKE_CUSTOM_LINKER}" STREQUAL "default")
|
||||||
|
target_link_options(lammps PUBLIC -fuse-ld=${CMAKE_CUSTOM_LINKER})
|
||||||
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
set(LAMMPS_TESTING_SOURCE_DIR ${lammps-testing_SOURCE_DIR})
|
|
||||||
elseif(NOT LAMMPS_TESTING_SOURCE_DIR)
|
|
||||||
message(WARNING "Full test-suite requires CMake >= 3.11 or copy of\n"
|
|
||||||
"https://github.com/lammps/lammps-testing in LAMMPS_TESTING_SOURCE_DIR")
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
add_test(ShowHelp ${CMAKE_BINARY_DIR}/${LAMMPS_BINARY} -help)
|
include(CTest)
|
||||||
|
|
||||||
if(EXISTS ${LAMMPS_TESTING_SOURCE_DIR})
|
enable_testing()
|
||||||
message(STATUS "Running test discovery...")
|
get_filename_component(LAMMPS_UNITTEST_DIR ${LAMMPS_SOURCE_DIR}/../unittest ABSOLUTE)
|
||||||
|
get_filename_component(LAMMPS_UNITTEST_BIN ${CMAKE_BINARY_DIR}/unittest ABSOLUTE)
|
||||||
file(GLOB_RECURSE TEST_SCRIPTS ${LAMMPS_TESTING_SOURCE_DIR}/tests/core/*/in.*)
|
add_subdirectory(${LAMMPS_UNITTEST_DIR} ${LAMMPS_UNITTEST_BIN})
|
||||||
foreach(script_path ${TEST_SCRIPTS})
|
|
||||||
get_filename_component(TEST_NAME ${script_path} EXT)
|
|
||||||
get_filename_component(SCRIPT_NAME ${script_path} NAME)
|
|
||||||
get_filename_component(PARENT_DIR ${script_path} DIRECTORY)
|
|
||||||
string(SUBSTRING ${TEST_NAME} 1 -1 TEST_NAME)
|
|
||||||
string(REPLACE "-" "_" TEST_NAME ${TEST_NAME})
|
|
||||||
string(REPLACE "+" "_" TEST_NAME ${TEST_NAME})
|
|
||||||
set(TEST_NAME "test_core_${TEST_NAME}_serial")
|
|
||||||
add_test(${TEST_NAME} ${CMAKE_BINARY_DIR}/${LAMMPS_BINARY} -in ${SCRIPT_NAME})
|
|
||||||
set_tests_properties(${TEST_NAME} PROPERTIES WORKING_DIRECTORY ${PARENT_DIR})
|
|
||||||
endforeach()
|
|
||||||
list(LENGTH TEST_SCRIPTS NUM_TESTS)
|
|
||||||
|
|
||||||
message(STATUS "Found ${NUM_TESTS} tests.")
|
|
||||||
endif()
|
|
||||||
endif()
|
endif()
|
||||||
|
|||||||
@ -3,17 +3,19 @@ set(temp_git_commit "(unknown)")
|
|||||||
set(temp_git_branch "(unknown)")
|
set(temp_git_branch "(unknown)")
|
||||||
set(temp_git_describe "(unknown)")
|
set(temp_git_describe "(unknown)")
|
||||||
set(temp_git_info "false")
|
set(temp_git_info "false")
|
||||||
if(GIT_FOUND AND EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/../.git)
|
|
||||||
|
message(STATUS "Git Directory: ${LAMMPS_DIR}/.git")
|
||||||
|
if(GIT_FOUND AND EXISTS ${LAMMPS_DIR}/.git)
|
||||||
set(temp_git_info "true")
|
set(temp_git_info "true")
|
||||||
execute_process(COMMAND ${GIT_EXECUTABLE} -C ${CMAKE_CURRENT_SOURCE_DIR}/.. rev-parse HEAD
|
execute_process(COMMAND ${GIT_EXECUTABLE} -C ${LAMMPS_DIR} rev-parse HEAD
|
||||||
OUTPUT_VARIABLE temp_git_commit
|
OUTPUT_VARIABLE temp_git_commit
|
||||||
ERROR_QUIET
|
ERROR_QUIET
|
||||||
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||||
execute_process(COMMAND ${GIT_EXECUTABLE} -C ${CMAKE_CURRENT_SOURCE_DIR}/.. rev-parse --abbrev-ref HEAD
|
execute_process(COMMAND ${GIT_EXECUTABLE} -C ${LAMMPS_DIR} rev-parse --abbrev-ref HEAD
|
||||||
OUTPUT_VARIABLE temp_git_branch
|
OUTPUT_VARIABLE temp_git_branch
|
||||||
ERROR_QUIET
|
ERROR_QUIET
|
||||||
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||||
execute_process(COMMAND ${GIT_EXECUTABLE} -C ${CMAKE_CURRENT_SOURCE_DIR}/.. describe --dirty=-modified
|
execute_process(COMMAND ${GIT_EXECUTABLE} -C ${LAMMPS_DIR} describe --dirty=-modified
|
||||||
OUTPUT_VARIABLE temp_git_describe
|
OUTPUT_VARIABLE temp_git_describe
|
||||||
ERROR_QUIET
|
ERROR_QUIET
|
||||||
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||||
|
|||||||
2320
cmake/README.md
2320
cmake/README.md
File diff suppressed because it is too large
Load Diff
@ -18,12 +18,6 @@
|
|||||||
# myapp_CFLAGS = $(LAMMPS_CFLAGS)
|
# myapp_CFLAGS = $(LAMMPS_CFLAGS)
|
||||||
# myapp_LDADD = $(LAMMPS_LIBS)
|
# myapp_LDADD = $(LAMMPS_LIBS)
|
||||||
|
|
||||||
# Use this in CMake:
|
|
||||||
# CMakeLists.txt:
|
|
||||||
# find_package(PkgConfig)
|
|
||||||
# pkg_check_modules(LAMMPS IMPORTED_TARGET lammps)
|
|
||||||
# target_link_libraries(<lib> PkgConfig::LAMMPS)
|
|
||||||
|
|
||||||
prefix=@CMAKE_INSTALL_PREFIX@
|
prefix=@CMAKE_INSTALL_PREFIX@
|
||||||
libdir=@CMAKE_INSTALL_FULL_LIBDIR@
|
libdir=@CMAKE_INSTALL_FULL_LIBDIR@
|
||||||
includedir=@CMAKE_INSTALL_FULL_INCLUDEDIR@
|
includedir=@CMAKE_INSTALL_FULL_INCLUDEDIR@
|
||||||
@ -31,8 +25,8 @@ includedir=@CMAKE_INSTALL_FULL_INCLUDEDIR@
|
|||||||
Name: liblammps@LAMMPS_MACHINE@
|
Name: liblammps@LAMMPS_MACHINE@
|
||||||
Description: Large-scale Atomic/Molecular Massively Parallel Simulator Library
|
Description: Large-scale Atomic/Molecular Massively Parallel Simulator Library
|
||||||
URL: http://lammps.sandia.gov
|
URL: http://lammps.sandia.gov
|
||||||
Version: @LAMMPS_VERSION@
|
Version: @PROJECT_VERSION@
|
||||||
Requires:
|
Requires:
|
||||||
Libs: -L${libdir} -llammps@LAMMPS_LIB_SUFFIX@
|
Libs: -L${libdir} -llammps@LAMMPS_MACHINE@
|
||||||
Libs.private: -lm
|
Libs.private: -lm
|
||||||
Cflags: -I${includedir} @LAMMPS_API_DEFINES@
|
Cflags: -I${includedir} @LAMMPS_API_DEFINES@
|
||||||
|
|||||||
@ -7,11 +7,11 @@ set(ALL_PACKAGES ASPHERE BODY CLASS2 COLLOID COMPRESS CORESHELL DIPOLE GPU
|
|||||||
SRD VORONOI
|
SRD VORONOI
|
||||||
USER-ADIOS USER-ATC USER-AWPMD USER-BOCS USER-CGDNA USER-CGSDK
|
USER-ADIOS USER-ATC USER-AWPMD USER-BOCS USER-CGDNA USER-CGSDK
|
||||||
USER-COLVARS USER-DIFFRACTION USER-DPD USER-DRUDE USER-EFF USER-FEP
|
USER-COLVARS USER-DIFFRACTION USER-DPD USER-DRUDE USER-EFF USER-FEP
|
||||||
USER-H5MD USER-INTEL USER-LB USER-MANIFOLD USER-MEAMC USER-MESO
|
USER-H5MD USER-INTEL USER-LB USER-MANIFOLD USER-MEAMC USER-MESODPD
|
||||||
USER-MGPT USER-MISC USER-MOFFF USER-MOLFILE USER-NETCDF USER-OMP
|
USER-MESONT USER-MGPT USER-MISC USER-MOFFF USER-MOLFILE USER-NETCDF USER-OMP
|
||||||
USER-PHONON USER-PLUMED USER-PTM USER-QMMM USER-QTB USER-QUIP
|
USER-PHONON USER-PLUMED USER-PTM USER-QMMM USER-QTB USER-QUIP
|
||||||
USER-REAXC USER-SCAFACOS USER-SDPD USER-SMD USER-SMTBQ USER-SPH
|
USER-REACTION USER-REAXC USER-SCAFACOS USER-SDPD USER-SMD USER-SMTBQ
|
||||||
USER-TALLY USER-UEF USER-VTK USER-YAFF)
|
USER-SPH USER-TALLY USER-UEF USER-VTK USER-YAFF)
|
||||||
|
|
||||||
foreach(PKG ${ALL_PACKAGES})
|
foreach(PKG ${ALL_PACKAGES})
|
||||||
set(PKG_${PKG} OFF CACHE BOOL "" FORCE)
|
set(PKG_${PKG} OFF CACHE BOOL "" FORCE)
|
||||||
|
|||||||
@ -9,11 +9,11 @@ set(ALL_PACKAGES ASPHERE BODY CLASS2 COLLOID COMPRESS CORESHELL DIPOLE GPU
|
|||||||
SRD VORONOI
|
SRD VORONOI
|
||||||
USER-ADIOS USER-ATC USER-AWPMD USER-BOCS USER-CGDNA USER-CGSDK
|
USER-ADIOS USER-ATC USER-AWPMD USER-BOCS USER-CGDNA USER-CGSDK
|
||||||
USER-COLVARS USER-DIFFRACTION USER-DPD USER-DRUDE USER-EFF USER-FEP
|
USER-COLVARS USER-DIFFRACTION USER-DPD USER-DRUDE USER-EFF USER-FEP
|
||||||
USER-H5MD USER-INTEL USER-LB USER-MANIFOLD USER-MEAMC USER-MESO
|
USER-H5MD USER-INTEL USER-LB USER-MANIFOLD USER-MEAMC USER-MESODPD
|
||||||
USER-MGPT USER-MISC USER-MOFFF USER-MOLFILE USER-NETCDF USER-OMP
|
USER-MESONT USER-MGPT USER-MISC USER-MOFFF USER-MOLFILE USER-NETCDF USER-OMP
|
||||||
USER-PHONON USER-PLUMED USER-PTM USER-QMMM USER-QTB USER-QUIP
|
USER-PHONON USER-PLUMED USER-PTM USER-QMMM USER-QTB USER-QUIP
|
||||||
USER-REAXC USER-SCAFACOS USER-SDPD USER-SMD USER-SMTBQ USER-SPH
|
USER-REACTION USER-REAXC USER-SCAFACOS USER-SDPD USER-SMD USER-SMTBQ
|
||||||
USER-TALLY USER-UEF USER-VTK USER-YAFF)
|
USER-SPH USER-TALLY USER-UEF USER-VTK USER-YAFF)
|
||||||
|
|
||||||
foreach(PKG ${ALL_PACKAGES})
|
foreach(PKG ${ALL_PACKAGES})
|
||||||
set(PKG_${PKG} ON CACHE BOOL "" FORCE)
|
set(PKG_${PKG} ON CACHE BOOL "" FORCE)
|
||||||
|
|||||||
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
set(CMAKE_CXX_COMPILER "clang++" CACHE STRING "" FORCE)
|
set(CMAKE_CXX_COMPILER "clang++" CACHE STRING "" FORCE)
|
||||||
set(CMAKE_C_COMPILER "clang" CACHE STRING "" FORCE)
|
set(CMAKE_C_COMPILER "clang" CACHE STRING "" FORCE)
|
||||||
set(CMAKE_CXX_FLAGS "-Wall -Wextra -g -O2 -DNDEBG" CACHE STRING "" FORCE)
|
set(CMAKE_CXX_FLAGS "-Wall -Wextra -g -O2 -DNDEBUG" CACHE STRING "" FORCE)
|
||||||
set(MPI_CXX "clang++" CACHE STRING "" FORCE)
|
set(MPI_CXX "clang++" CACHE STRING "" FORCE)
|
||||||
set(MPI_CXX_COMPILER "mpicxx" CACHE STRING "" FORCE)
|
set(MPI_CXX_COMPILER "mpicxx" CACHE STRING "" FORCE)
|
||||||
unset(HAVE_OMP_H_INCLUDE CACHE)
|
unset(HAVE_OMP_H_INCLUDE CACHE)
|
||||||
@ -13,5 +13,5 @@ set(OpenMP_C_LIB_NAMES "omp" CACHE STRING "" FORCE)
|
|||||||
set(OpenMP_CXX "clang++" CACHE STRING "" FORCE)
|
set(OpenMP_CXX "clang++" CACHE STRING "" FORCE)
|
||||||
set(OpenMP_CXX_FLAGS "-fopenmp" CACHE STRING "" FORCE)
|
set(OpenMP_CXX_FLAGS "-fopenmp" CACHE STRING "" FORCE)
|
||||||
set(OpenMP_CXX_LIB_NAMES "omp" CACHE STRING "" FORCE)
|
set(OpenMP_CXX_LIB_NAMES "omp" CACHE STRING "" FORCE)
|
||||||
set(OpenMP_omp_LIBRARY "/usr/lib64/libomp.so" CACHE PATH "" FORCE)
|
set(OpenMP_omp_LIBRARY "libomp.so" CACHE PATH "" FORCE)
|
||||||
|
|
||||||
|
|||||||
17
cmake/presets/download.cmake
Normal file
17
cmake/presets/download.cmake
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
# preset that turns on packages with automatic downloads of sources of potentials
|
||||||
|
# compilation of libraries like Plumed or ScaFaCoS can take a considerable amount of time.
|
||||||
|
|
||||||
|
set(ALL_PACKAGES KIM LATTE MSCG VORONOI USER-PLUMED USER-SCAFACOS USER-SMD USER-MESONT)
|
||||||
|
|
||||||
|
foreach(PKG ${ALL_PACKAGES})
|
||||||
|
set(PKG_${PKG} ON CACHE BOOL "" FORCE)
|
||||||
|
endforeach()
|
||||||
|
|
||||||
|
set(DOWNLOAD_KIM ON CACHE BOOL "" FORCE)
|
||||||
|
set(DOWNLOAD_LATTE ON CACHE BOOL "" FORCE)
|
||||||
|
set(DOWNLOAD_MSCG ON CACHE BOOL "" FORCE)
|
||||||
|
set(DOWNLOAD_VORO ON CACHE BOOL "" FORCE)
|
||||||
|
set(DOWNLOAD_EIGEN3 ON CACHE BOOL "" FORCE)
|
||||||
|
set(DOWNLOAD_PLUMED ON CACHE BOOL "" FORCE)
|
||||||
|
set(DOWNLOAD_SCAFACOS ON CACHE BOOL "" FORCE)
|
||||||
|
|
||||||
12
cmake/presets/hip.cmake
Normal file
12
cmake/presets/hip.cmake
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
# preset that will enable hipcc plus gcc with support for MPI and OpenMP (on Linux boxes)
|
||||||
|
|
||||||
|
set(CMAKE_CXX_COMPILER "hipcc" CACHE STRING "" FORCE)
|
||||||
|
set(CMAKE_C_COMPILER "gcc" CACHE STRING "" FORCE)
|
||||||
|
set(CMAKE_CXX_FLAGS "-Wall -Wextra -g -O2 -DNDEBUG" CACHE STRING "" FORCE)
|
||||||
|
unset(HAVE_OMP_H_INCLUDE CACHE)
|
||||||
|
|
||||||
|
set(OpenMP_CXX "hipcc" CACHE STRING "" FORCE)
|
||||||
|
set(OpenMP_CXX_FLAGS "-fopenmp" CACHE STRING "" FORCE)
|
||||||
|
set(OpenMP_CXX_LIB_NAMES "omp" CACHE STRING "" FORCE)
|
||||||
|
set(OpenMP_omp_LIBRARY "libomp.so" CACHE PATH "" FORCE)
|
||||||
|
|
||||||
16
cmake/presets/intel.cmake
Normal file
16
cmake/presets/intel.cmake
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
# preset that will enable clang/clang++ with support for MPI and OpenMP (on Linux boxes)
|
||||||
|
|
||||||
|
set(CMAKE_CXX_COMPILER "icpc" CACHE STRING "" FORCE)
|
||||||
|
set(CMAKE_C_COMPILER "icc" CACHE STRING "" FORCE)
|
||||||
|
set(MPI_CXX "icpc" CACHE STRING "" FORCE)
|
||||||
|
set(MPI_CXX_COMPILER "mpicxx" CACHE STRING "" FORCE)
|
||||||
|
unset(HAVE_OMP_H_INCLUDE CACHE)
|
||||||
|
|
||||||
|
set(OpenMP_C "icc" CACHE STRING "" FORCE)
|
||||||
|
set(OpenMP_C_FLAGS "-qopenmp" CACHE STRING "" FORCE)
|
||||||
|
set(OpenMP_C_LIB_NAMES "omp" CACHE STRING "" FORCE)
|
||||||
|
set(OpenMP_CXX "icpc" CACHE STRING "" FORCE)
|
||||||
|
set(OpenMP_CXX_FLAGS "-qopenmp" CACHE STRING "" FORCE)
|
||||||
|
set(OpenMP_CXX_LIB_NAMES "omp" CACHE STRING "" FORCE)
|
||||||
|
set(OpenMP_omp_LIBRARY "libiomp5.so" CACHE PATH "" FORCE)
|
||||||
|
|
||||||
11
cmake/presets/kokkos-cuda.cmake
Normal file
11
cmake/presets/kokkos-cuda.cmake
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
# preset that enables KOKKOS and selects CUDA compilation with OpenMP
|
||||||
|
# enabled as well. This preselects CC 5.0 as default GPU arch, since
|
||||||
|
# that is compatible with all higher CC, but not the default CC 3.5
|
||||||
|
set(PKG_KOKKOS ON CACHE BOOL "" FORCE)
|
||||||
|
set(Kokkos_ENABLE_SERIAL ON CACHE BOOL "" FORCE)
|
||||||
|
set(Kokkos_ENABLE_OPENMP ON CACHE BOOL "" FORCE)
|
||||||
|
set(Kokkos_ENABLE_CUDA ON CACHE BOOL "" FORCE)
|
||||||
|
set(Kokkos_ARCH_MAXWELL50 on CACHE BOOL "" FORCE)
|
||||||
|
set(BUILD_OMP ON CACHE BOOL "" FORCE)
|
||||||
|
get_filename_component(NVCC_WRAPPER_CMD ${CMAKE_CURRENT_SOURCE_DIR}/../lib/kokkos/bin/nvcc_wrapper ABSOLUTE)
|
||||||
|
set(CMAKE_CXX_COMPILER ${NVCC_WRAPPER_CMD} CACHE FILEPATH "" FORCE)
|
||||||
6
cmake/presets/kokkos-openmp.cmake
Normal file
6
cmake/presets/kokkos-openmp.cmake
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
# preset that enables KOKKOS and selects OpenMP (only) compilation
|
||||||
|
set(PKG_KOKKOS ON CACHE BOOL "" FORCE)
|
||||||
|
set(Kokkos_ENABLE_SERIAL ON CACHE BOOL "" FORCE)
|
||||||
|
set(Kokkos_ENABLE_OPENMP ON CACHE BOOL "" FORCE)
|
||||||
|
set(Kokkos_ENABLE_CUDA OFF CACHE BOOL "" FORCE)
|
||||||
|
set(BUILD_OMP ON CACHE BOOL "" FORCE)
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user