-
Notifications
You must be signed in to change notification settings - Fork 49
Update bundled BLAS/LAPACK code #393
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
Draft
ohearnk
wants to merge
20
commits into
merzlab:master
Choose a base branch
from
ohearnk:lapack-v3.12.1
base: master
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Draft
Conversation
This file contains hidden or 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
…odule pinned at latest reference LAPACK release (v3.12.1).
…y configure/Makefile system.
…generate shared libraries. Correct installation of libaries files to installation directory.
…o apply patches).
…m repo to fork with branch containing patches to avoid file permission issues with Github CI workflies (i.e., cannot apply patches to submodule source files as default permissions are read-only after checkout).
…alls (configure). Update Github CI workflows shell variables to reflect these updates.
… target for legacy configure/Makefile build system as LAPACK submodule handles this).
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
NOTE: do not merge this until the issues/limitations listed below are handled and the broader philosphical discussion is settled regarding how to be handle updates to QUICK dependencies (i.e., git submodules vs. internal inclusion directly into the QUICK repo).
This PR updates the bundled BLAS/LAPACK routines to the latest stable release for the reference LAPACK implementation (v3.12.1). Moreover, to enable easier inclusion of updated code for dependencies, a fork of the upstream reference LAPACK repo was created, and a git submodule was added to point to this fork. Updates to the Github CI workflows for testing are also included to reflect the addtion of submodules.
Speaking more broadly, this PR is meant as an intellectual exercise and as discussion fodder for investigating better approaches for maintaining and updating external code dependencies for QUICK. The current list of such dependencies in the QUICK codebase along with suggested upstreams is as follows:
src/blasandsrc/lapack): dense linear algebra CPU routines bundled as fallbacks (inherited from those bundled with Amber/AmberTools) -> reference LAPACKsrc/dftd3): DFT-D3 dispersion corrections -> simple DFT-D3src/libxc): exchange-correlation functionals for DFT -> libxcsrc/dlfind): geometry optimization -> libdlfindUsing git submodules for these dependencies would allow easier tracking and updating for fixes and feature additions from upstream. Moreover, to better track local modifications of these dependencies for interfacing with QUICK and to guard against upstream disappearing, forks of these upstreams could be created and managed independently under the organization account which QUICK is under (i.e., merzlab for now). This PR does so with the reference LAPACK upstream.
Limitations / Issues with this PR:
make.incin the base directory of the repo). Examples templates are provided underINSTALLfor various types of systems -- the GCC template is what I used and copied to the base directory in order to get the Github CI workflows to run (as GCC is the compiler currently used for testing). However, for releases, GCC cannot be assumed by end users who are using the bundled BLAS/LAPACK code. This needs to be addressed, possibly in conjunction with the compiler type selection in the build systems.