-
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
Portable libint #190
Comments
I think fedora already has a libint2 package. https://fedora.pkgs.org/31/fedora-x86_64/libint2-2.1.0-10.fc31.x86_64.rpm.html Otherwise I completely agree on this, because at the moment you have to get the package compilation information to understand what is happening. I would like this feature too |
I know, I'm the one who packaged it. |
Thanks for your work, we are currently trying to get it into opensuse. Especially for CI purposes, having a distribution package really helps, but somehow all distribution packages should be guaranteed to have the same settings. |
fwiw, should #148 be merged there would at least be selectors https://github.com/evaleev/libint/pull/148/files#diff-4cfbbb105ca3b371b7251a6e37a56f74R69 so at downstream build time (if building with cmake), a qc program could fend off unsuitable libint2 installations. but that doesn't help the multiple packaging problem. |
I mean you can also just have a policy decision to say this is the standard ordering, which you get, unless you compile it yourself. |
@susilehtola Yes this can be done if you really think this is necessary. I was not aware of any non-CCA-based consumers of Libint in open-source world though ... are there any? |
psi is non-standard for solid harmonic and probably precipitated this thread. (below is harvested from libint wiki notes.) small mercy is that psi differs in the one dimension that can be chosen at library build time, not generator build time.
EDIT: added cp2k |
I know cp2k are interested in libint2 too but I don't know which ordering they use. |
Yes, CP2K uses the default ordering. |
Would it be possible to change the ordering in Psi4? 😅 |
Yes, Gaussian solid harmonic ordering. Psi used to do the reordering from libint1 internally, but @andysim has gleefully removed those hundreds of lines of code in the update to libint2. @susilehtola is the recipe for fedora libint2 publicly accessible? I poked around a bit and failed. Even apart from solid harmonics, I'm curious and concerned about AM levels for derivatives. The generated source tarballs published from GH are energy-only, iirc. It's not final, but I'm building with the below for psi4 now.
|
Fedora is free, so yes: https://src.fedoraproject.org/rpms/libint2/blob/master/f/libint2.spec The annoyance in libint2 is the need for very up to date compilers and libraries, which is why I generate the sources by hand with the script https://src.fedoraproject.org/rpms/libint2/blob/master/f/generate-sources.sh
which might be overkill.. but still this is much less than what I used for libint1
|
If Psi4 is the only outlier here, there are a couple of options we can consider. The first would be to use some simple reordering code inside Psi4's Libint2 wrapper, which would leave the conventions unchanged to our end users and allow the "standard" ordering to be used within Libint2. This is a good solution, as long as the reordering step is fast enough (it should be). If that proves to be too slow, we can definitely consider changing the convention used for spherical harmonics - it would be a small change to our cart->spherical transformation code. The latter approach must be done slowly though, as we have a number of users that have developed plugins to interface to all kinds of different codes and some of them will surely depend on the convention used in some way. |
The solids case is easy: we can make the ordering of solids to be specified as an argument to The cartesians case is harder because there will be necessarily reordering. How about we just leave this case as is since no open-source packaged code uses non-CCA cartesians? Ditto for am shellset order (only ORCA needs the nonstandard order). |
That sounds like a great solution to me :) |
|
I think this would be great; Bagel will be the free software outlier then, but (i) the open source version is pretty much abandoned and (ii) all or at least all the unique functionality works fine without libint2. It would still be nice for people building e.g. gamess not having to rebuild libint2, but standardizing on one configuration for psi4, cp2k and mpqc4 would go a long way. |
Any update on this? Psi4-1.5 came out and (AFAICT) is no longer supportable on Linux distributions due to the non-default libint2 it requires. |
@mbanck, correct, psi4 has never worked out-of-the-box with a |
My current state is that psi4 detects the system libint2 fine, but then later fails to build like this:
I assumed this was the present issue; if I read your comment right, there should be a way to make cmake work (well it does work), but building against a system libint2 is hopeless? |
@mbanck, what are "system libint2"'s configuration characteristics? I may have met your error above before and found it needed an extra set of parenthesis in the l2 header. But unless your system libint2 has these characteristics, psi4 may build, link, and run beautifully and still generate garbage. So not hopeless, but possibly a good deal of work to correct niggling details that won't be long in use. I'd either vendorize l2 within the psi4 package (i.e., use the tarball psi suggests and ship the special l2 with psi) or wait for psi and l2 release and default ordering reconciliation. If need to get into more psi-side technical details, perhaps should move to psi issue. |
Fedora is still waiting for Psi4 to be ported to the standard shell indexing. |
@mbanck , I have now met your psi4 + current libint2 error from #190 (comment) in person. It's fixed in psi4 at psi4/psi4#2413. I wouldn't suggest full-speed-ahead on any particular psi+libint branch combo yet, though. |
fwiw, Psi4, as of Wednesday, is now running on #233 (c. 2022) rather than #148 (c. 2019) for Linux, macOS, Windows. This fixes the |
The strategy suggested in #190 (comment) has been implemented in #259 so that all open-source libint consumers can use the same built library. Psi4 will be adopting this upon psi4/psi4#2861 before the May v1.8 release. There's a library source tarball at https://github.com/loriab/libint/releases/download/v0.1/libint-2.7.2-post1-5-4-3-6-5-4_mm4f12ob2_1.tgz if anyone wants to play around. Please ping me with any problems. |
To update any thread readers, the strategy suggested in #190 (comment) has been implemented (without additional cmake changes) in #269 and merged. This allows all open-source libint consumers to use the same built library with standard orderings. @evaleev, are there any thoughts of tagging a Libint release in the next couple days with or without #273 ? (Tarballs not needed for my part.) It'd be a great relief to get a Psi4 release using a Libint release for the first time since 2019. Thanks for considering. |
Hi,
it looks like libint2 can be compiled in
Nsph x Ncart x Nshell_set = 2 x 5 x 2 = 20
different possible ways. Even though only 5 of these are currently used by major codes, this is a nightmare for distribution packaging, since there's no way we can ship 20 mutually incompatible copies of a library; I'm horrified about shipping even two since it takes forever to compile libint on the Fedora build system.Would it be possible to modify libint so that the orderings for the cartesians, solid harmonics, and shell sets are set by some function, and libint does all the necessary shuffles behind the scenes? This would be a minimal solution to the problem, since one could still set the default orderings at configure time, thus avoiding any extra shuffles if the compiled ordering matches the wanted one.
The text was updated successfully, but these errors were encountered: