-
Notifications
You must be signed in to change notification settings - Fork 98
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
test solid harmonic ordering runtime switchable #271
Merged
Merged
Changes from 11 commits
Commits
Show all changes
12 commits
Select commit
Hold shift + click to select a range
1f2afc3
compile configuration_accessor into library, cmake and libtool
loriab 1578fbe
add testing for solid harmonic ordering runtime switch and configurat…
loriab 13c01be
improve exported libint2.pc file
loriab e7d0720
enable unity build. add some variables to libint2-config.cmake
loriab e39bdc2
plug memory leaks in mpf numeric functions
evaleev 667bf42
added missing BOOST_PP_STRINGIZE in boost pp stuff in build_libint
evaleev 0934428
misc. and install notes
loriab 7df6652
fix version in pkgconfig file
loriab 55097ce
labeling sss -> ss
loriab fbd1d97
revised component names
loriab 73de7d1
further component revisions, plus script
loriab 3171be8
correct eri3 am ordering in script
loriab File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -55,7 +55,7 @@ jobs: | |
- name: Install prerequisite MacOS packages | ||
if: ${{ steps.skip_check.outputs.should_skip != 'true' && matrix.os == 'macos-latest' }} | ||
run: | | ||
brew install ninja gcc@10 boost eigen bison ccache automake python3 numpy scipy | ||
brew install ninja gcc@10 boost eigen bison ccache automake [email protected] numpy scipy | ||
echo "FC=/usr/local/bin/gfortran-10" >> $GITHUB_ENV | ||
echo "EIGEN3_INCLUDE_DIR=/usr/local/include/eigen3" >> $GITHUB_ENV | ||
|
||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change | ||||
---|---|---|---|---|---|---|
|
@@ -4,17 +4,24 @@ | |||||
Following is a brief summary of changes made in each release of Libint. | ||||||
|
||||||
- 2022-xx-yy: 2.8.0-beta.1 | ||||||
- UNMERGED PR #270: For Windows, basis sets with a star have been renamed to "s" on the filesystem, | ||||||
- UNMERGED PR #271: Add `libint2::configuration_accessor` and `libint2::supports` functions. If | ||||||
library source is patched, these provides codes for what integrals a library instance can supply. | ||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||
- UNMERGED PR #271: Small pkgconfig and cmake detection improvements. Enable unity build. | ||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||
Testing of solid harmonics runtime switchable from #269. | ||||||
- PR #270: For Windows, basis sets with a star have been renamed to "s" on the filesystem, | ||||||
so 6-31g**.g94 -> 6-31gss.g94. In code, the basis can be accessed through "6-31g**" (longstanding) | ||||||
or "6-31gss" (new) for all operating systems. | ||||||
- UNMERGED PR #270: Adapt build system and header imports so that library and Python bindings can build on | ||||||
- PR #270: Adapt build system and header imports so that library and Python bindings can build on | ||||||
Windows (at least with clang-cl compiler atop MSVC). Note that a Linux- or Mac-generated export | ||||||
builds on Windows; one cannot generate an export on Windows. Note also that only a static library | ||||||
build, not a shared one, works on Windows (see #237). | ||||||
- PR #269: minimum CMake bumped to 3.16 | ||||||
- PR #269: Solid harmonics ordering is runtime switchable in the library. Issue | ||||||
`libint2::set_solid_harmonics_ordering(libint2::SHGShellOrdering_Gaussian)` or `_Standard` after | ||||||
initialization. Similarly, prefer new `INT_SOLIDHARMINDEX(sho, l, m)` to usual `(l, m)` version. | ||||||
- PR #269: The ordering for spherical multipole integrals has been fixed at Standard, rather than | ||||||
Gaussian or Standard as previously. Note that between this and the next item above, the | ||||||
`--with-shgauss-ordering=standard|gaussian` has been rendered pointless for the C++ interface. | ||||||
- PR #268: Python detection (relevant to Python bindings, Fortran, and some tests) now uses modern | ||||||
`find_package(Python)`. Specify with `Python_EXECUTABLE` (note change in case) or | ||||||
https://cmake.org/cmake/help/latest/module/FindPython.html for details . | ||||||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change | ||||
---|---|---|---|---|---|---|
@@ -0,0 +1,130 @@ | ||||||
### Run-Time Compatibility | ||||||
|
||||||
Functions are provided to check the library configuration and solid harmonics orderings at runtime: | ||||||
|
||||||
Note: As of v2.8.0 (libtool-based), the configuration_accessor() function will return `(nyi)` by default. | ||||||
Packagers are encouraged to patch a generated configuration string into file `configuration.cc.cmake.in` to | ||||||
imitate future cmake-based behavior. See sample patch below. The string can be generated by editing | ||||||
and running `export/cmake/configuration-gen.py`. | ||||||
Also patch MAX_AM_ERI in `CMakeLists.txt` (of export tarball; `export/cmake/CMakeLists.txt.export` in repo src). | ||||||
|
||||||
``` | ||||||
libint2::initialize(); | ||||||
printf("SHGShell: %d\n", libint2::solid_harmonics_ordering()); | ||||||
libint2::set_solid_harmonics_ordering(libint2::SHGShellOrdering_Gaussian); | ||||||
printf("SHGShell: %d\n", libint2::solid_harmonics_ordering()); | ||||||
// if patched as described above | ||||||
printf("Configuration: %s\n", libint2::configuration_accessor().c_str()); | ||||||
printf("Supports: dddd=%d mmmm=%d\n", libint2::supports("eri_dddd_d0"), libint2::supports("eri_mmmm_d0")); | ||||||
libint2::finalize(); | ||||||
``` | ||||||
``` | ||||||
SHGShell: 1 | ||||||
SHGShell: 2 | ||||||
Configuration: eri_dddd_d0_l2;eri_ffff_d0;ss;... | ||||||
Supports: dddd=1 mmmm=0 | ||||||
``` | ||||||
|
||||||
For the C library, a similar function is available: | ||||||
|
||||||
``` | ||||||
printf("CMake Configuration (C) : %s\n", configuration_accessor()); | ||||||
``` | ||||||
``` | ||||||
CMake Configuration (C) : eri_dddd_d0;eri_ffff_d0;ss;... | ||||||
``` | ||||||
|
||||||
If you have a built libint2 library whose history you don't know, a command like this on Linux can provide the same information: | ||||||
|
||||||
``` | ||||||
strings -n80 /a/random/L2/lying/around/libint2.so | ||||||
``` | ||||||
``` | ||||||
ss;onebody_ii_d0;onebody_hh_d0;eri_iiI_d0;eri_iii_d0;eri_II_d0;eri_ii_d0;eri_hhhh_d0;eri_hhH_d0;eri_hhh_d0;eri_HH_d0;eri_hh_d0;eri_gggg_d1;eri_dddd_d1 | ||||||
``` | ||||||
|
||||||
A patch like the following is suitable for an export tarball generated from the next following. | ||||||
[See guide](#configuration-codes) for decoding the configuration components. | ||||||
|
||||||
``` | ||||||
--- src/configuration.cc.cmake.in 2023-09-05 09:13:50.000000000 -0400 | ||||||
+++ src/configuration.cc.cmake.in_basic 2023-09-05 23:41:00.444396591 -0400 | ||||||
@@ -24,6 +24,6 @@ | ||||||
@return the semicolon-separated strings from CMake components */ | ||||||
const char * configuration_accessor() { | ||||||
//return "@Libint2_CONFIG_COMPONENTS@"; | ||||||
- return "(nyi)"; | ||||||
+ return "ss;multipole_nn_d0;multipole_mm_d0;multipole_ll_d0;multipole_kk_d0;multipole_ii_d0;multipole_hh_d0;multipole_gg_d0;multipole_ff_d0;multipole_dd_d0;onebody_ii_d0;onebody_hh_d0;onebody_gg_d0;onebody_ff_d0;onebody_dd_d0;onebody_hh_d1;onebody_gg_d1;onebody_ff_d1;onebody_dd_d1;onebody_gg_d2;onebody_ff_d2;onebody_dd_d2;eri_hhhh_d0;eri_gggg_d0;eri_ffff_d0;eri_dddd_d0;eri_gggg_d1;eri_ffff_d1;eri_dddd_d1;eri_iiI_d0;eri_hhI_d0;eri_hhH_d0;eri_ggI_d0;eri_ggH_d0;eri_ggG_d0;eri_ffI_d0;eri_ffH_d0;eri_ffG_d0;eri_ffF_d0;eri_ddI_d0;eri_ddH_d0;eri_ddG_d0;eri_ddF_d0;eri_ddD_d0;eri_hhH_d1;eri_ggH_d1;eri_ggG_d1;eri_ffH_d1;eri_ffG_d1;eri_ffF_d1;eri_ddH_d1;eri_ddG_d1;eri_ddF_d1;eri_ddD_d1;eri_iii_d0;eri_hhi_d0;eri_hhh_d0;eri_ggi_d0;eri_ggh_d0;eri_ggg_d0;eri_ffi_d0;eri_ffh_d0;eri_ffg_d0;eri_fff_d0;eri_ddi_d0;eri_ddh_d0;eri_ddg_d0;eri_ddf_d0;eri_ddd_d0;eri_hhh_d1;eri_ggh_d1;eri_ggg_d1;eri_ffh_d1;eri_ffg_d1;eri_fff_d1;eri_ddh_d1;eri_ddg_d1;eri_ddf_d1;eri_ddd_d1;eri_II_d0;eri_HH_d0;eri_GG_d0;eri_FF_d0;eri_DD_d0;eri_HH_d1;eri_GG_d1;eri_FF_d1;eri_DD_d1;eri_ii_d0;eri_hh_d0;eri_gg_d0;eri_ff_d0;eri_dd_d0;eri_hh_d1;eri_gg_d1;eri_ff_d1;eri_dd_d1;g12_gggg_d0;g12_ffff_d0;g12_dddd_d0;g12_gggg_d1;g12_ffff_d1;g12_dddd_d1"; | ||||||
} | ||||||
``` | ||||||
``` | ||||||
./configure \ | ||||||
--enable-eri=1 \ | ||||||
--enable-eri3=1 \ | ||||||
--enable-eri2=1 \ | ||||||
--enable-1body=2 \ | ||||||
--enable-g12=1 \ | ||||||
--disable-1body-property-derivs \ | ||||||
--with-multipole-max-order=10 \ | ||||||
--with-g12-max-am=4 \ | ||||||
--with-eri-max-am=5,4 \ | ||||||
--with-eri3-max-am=6,5 \ | ||||||
--with-eri2-max-am=6,5 \ | ||||||
--with-max-am=6,5 | ||||||
``` | ||||||
|
||||||
|
||||||
#### Configuration Codes | ||||||
|
||||||
Evenually, these will be CMake Components, too. | ||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||
|
||||||
``` | ||||||
multipole_hh_dD - library includes spherical multipole integrals with max angular momentum up to | ||||||
"h" (h=(sp)dfghikl...; s,p not enumerated) and derivative order "D" (D=0,1,2,...). | ||||||
For example, the presence of "multipole_ii_d0" means mpole ints are available for L=6. | ||||||
onebody_hh_dD - library includes 1-body integrals with max angular momentum up to "h" | ||||||
(h=(sp)dfghikl...; s,p not enumerated) and derivative order "D" (D=0,1,2,...). | ||||||
For example, the presence of "onebody_ii_d1" means onebody gradient ints are | ||||||
available for L=6. | ||||||
eri_hhhh_dD - library includes 2-body integrals with 4 centers and max angular momentum up to | ||||||
"h" (h=(sp)dfghikl...; s,p not enumerated) and derivative order "D" (D=0,1,2,...). | ||||||
For example, the presence of "eri_ffff_d1" means 4-center gradient ints are | ||||||
available for L=3. That is, the library was configured with at least | ||||||
"--enable-eri=1 --with-eri-max-am=?,>=3". | ||||||
eri_hhL_dD - library includes 2-body integrals with 3 centers and max angular momentum up to | ||||||
eri_hhl_dD Cartesian "h" for the two paired centers and Cartesian "l" or solid harmonics "L" | ||||||
for the unpaired/fitting center, (h/l=(sp)dfghikl..., L=(SP)DFGHIKL...; l>=h | ||||||
enumerated; s,p not enumerated) and derivative order "D" (D=0,1,2,...). The | ||||||
"eri_hhL_dD" component is always available when 3-center ints are present. When pure | ||||||
solid harmonics are assumed for 3-center ints, "eri_hhl_dD" will *not be available*. | ||||||
For example, the presence of "eri_ffG_d0" means 3-center energy ints are | ||||||
available for L=3 (paired centers) and L=4 (fitting center). That is, the library | ||||||
was configured with at least "--enable-eri3=0 --with-max-am=3 --with-eri3-max-am=4". | ||||||
The presence of "eri_ffg_d0" means the library configuration did not additionally | ||||||
include "--enable-eri3-pure-sh[=yes]". | ||||||
eri_HH_dD - library includes 2-body integrals with 2 centers and max angular momentum up to | ||||||
eri_hh_dD Cartesian "h" or solid harmonics "H", (h=(sp)dfghikl..., H=(SP)DFGHIKL...; s,p not | ||||||
enumerated) and derivative order "D" (D=0,1,2,...). The "eri_HH_dD" component is | ||||||
always available when 2-center ints are present. When pure solid harmonics are | ||||||
assumed for 2-center ints, "eri_hh_dD" will *not be available*. | ||||||
For example, the presence of "eri_FF_d2" means 2-center Hessian ints are | ||||||
available for L=3. That is, the library was configured with at least | ||||||
"--enable-eri2=2 --with-eri2-max-am=?,?,>=3". The presence of "eri_ff_d2" means the | ||||||
library configuration did not additionally include "--enable-eri2-pure-sh[=yes]". | ||||||
g12_hhhh_dD - library includes F12 integrals with Gaussian factors max angular momentum up to | ||||||
"h" (h=(sp)dfghikl...; s,p not enumerated) and derivative order "D" (D=0,1,2,...). | ||||||
For example, the presence of "g12_iiii_d2" means g12 Hessian ints are available for L=6. | ||||||
|
||||||
cart shell_set used_by | ||||||
-------- --------- ------- | ||||||
ss - library integrals use ordering standard + standard = mpqc4, cp2k, psi4 (psi4 requires runtime-setting of solid harmonic ordering to Gaussian) | ||||||
so - library integrals use ordering + orca | ||||||
is - library integrals use ordering intv3 + standard = mpqc3 | ||||||
io - library integrals use ordering + orca | ||||||
gs - library integrals use ordering gamess + standard = gamess | ||||||
go - library integrals use ordering + orca | ||||||
os - library integrals use ordering orca + standard | ||||||
oo - library integrals use ordering + orca = orca | ||||||
bs - library integrals use ordering bagel + standard = bagel | ||||||
bo - library integrals use ordering + orca | ||||||
``` |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.