Draft
Conversation
…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).
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
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.