From db655ce71cfe1aca44d27d093d8a22ed718bfa03 Mon Sep 17 00:00:00 2001 From: Anthony Scemama Date: Fri, 24 Mar 2023 09:47:50 +0100 Subject: [PATCH 01/12] made unique_rank a preprocessor variable --- src/templates_front/templator_front.org | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/src/templates_front/templator_front.org b/src/templates_front/templator_front.org index ba9f242..389a1bf 100644 --- a/src/templates_front/templator_front.org +++ b/src/templates_front/templator_front.org @@ -3327,7 +3327,7 @@ trexio_read_$group_dset$(trexio_t* const file, /* To be set by generator : number of unique dimensions (e.g. 1 for ERI in AO basis because only ao_num is present in the list of dimensions) */ - const uint32_t unique_rank = $group_dset_unique_rank$; +#define unique_rank $group_dset_unique_rank$ int64_t unique_dims[$group_dset_unique_rank$]; // Below part is populated by the generator when unique_rank > 1 @@ -3335,11 +3335,12 @@ trexio_read_$group_dset$(trexio_t* const file, /* Find the maximal value along all dimensions to define the compression technique in the back end */ int64_t max_dim = unique_dims[0]; - if (unique_rank != 1) { - for (uint32_t i = 1; i < unique_rank; i++) { - if (unique_dims[i] > max_dim) max_dim = unique_dims[i]; - } +#if (unique_rank != 1) + for (uint32_t i = 1; i < unique_rank; i++) { + if (unique_dims[i] > max_dim) max_dim = unique_dims[i]; } +#endif +#undef unique_rank // introduce a new variable which will be modified with the number of integrals being read if EOF is encountered int64_t eof_read_size = 0L; @@ -3459,7 +3460,7 @@ trexio_write_$group_dset$(trexio_t* const file, /* To be set by generator : number of unique dimensions (e.g. 1 for ERI in AO basis because only ao_num is present in the list of dimensions) */ - const uint32_t unique_rank = $group_dset_unique_rank$; +#define unique_rank $group_dset_unique_rank$ int64_t unique_dims[$group_dset_unique_rank$]; // Below part is populated by the generator when unique_rank > 1 @@ -3467,11 +3468,12 @@ trexio_write_$group_dset$(trexio_t* const file, /* Find the maximal value along all dimensions to define the compression technique in the back end */ int64_t max_dim = unique_dims[0]; - if (unique_rank != 1) { - for (uint32_t i = 1; i < unique_rank; i++) { - if (unique_dims[i] > max_dim) max_dim = unique_dims[i]; - } +#if (unique_rank != 1) + for (uint32_t i = 1; i < unique_rank; i++) { + if (unique_dims[i] > max_dim) max_dim = unique_dims[i]; } +#endif +#undef unique_rank // shift indices to be zero-based if Fortran API is used if (file->one_based) { From 6c279bae6fe4f28d67e3b62a05e2697f820bc958 Mon Sep 17 00:00:00 2001 From: Anthony Scemama Date: Fri, 24 Mar 2023 09:59:44 +0100 Subject: [PATCH 02/12] Reducing scope of variables --- src/templates_front/templator_front.org | 25 ++++++++----------------- 1 file changed, 8 insertions(+), 17 deletions(-) diff --git a/src/templates_front/templator_front.org b/src/templates_front/templator_front.org index ba9f242..59f6525 100644 --- a/src/templates_front/templator_front.org +++ b/src/templates_front/templator_front.org @@ -5619,19 +5619,15 @@ trexio_exit_code trexio_to_bitfield_list (const int32_t* orb_list, bit_list[j] = (bitfield_t) 0; } - uint32_t i; - uint32_t k; - uint32_t iorb; - bitfield_t mask; uint32_t nswaps = 0; for (int32_t pos = 0 ; pos < occupied_num ; pos++) { - iorb = ((uint32_t) (orb_list[pos] + 1)) - TREXIO_ORBITAL_SHIFT; + const uint32_t iorb = ((uint32_t) (orb_list[pos] + 1)) - TREXIO_ORBITAL_SHIFT; // Set the bit of to one - i = (uint32_t) (iorb >> TREXIO_NORB_PER_INT_SHIFT); - k = (uint32_t) (iorb & (TREXIO_NORB_PER_INT - 1) ); - mask = ((bitfield_t) 1) << k; + const uint32_t i = (uint32_t) (iorb >> TREXIO_NORB_PER_INT_SHIFT); + const uint32_t k = (uint32_t) (iorb & (TREXIO_NORB_PER_INT - 1) ); + bitfield_t mask = ((bitfield_t) 1) << k; bit_list[i] |= mask; // Check for phase changes @@ -5662,21 +5658,16 @@ trexio_exit_code trexio_to_orbital_list(const int32_t N_int, if (list == NULL) return TREXIO_INVALID_ARG_3; if (occupied_num == NULL) return TREXIO_INVALID_ARG_4; - bitfield_t tmp; - int32_t shift; - int32_t k; - int32_t pos; - - k = 0; - shift = TREXIO_ORBITAL_SHIFT; + int32_t k = 0; + int32_t shift = TREXIO_ORBITAL_SHIFT; for (int32_t i=0 ; i Date: Tue, 28 Mar 2023 10:40:49 +0200 Subject: [PATCH 03/12] Update pseudo documentation --- trex.org | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/trex.org b/trex.org index f233fb9..ba901a0 100644 --- a/trex.org +++ b/trex.org @@ -386,20 +386,22 @@ prim_factor = \[ V_A^{\text{ECP}} = V_{A \ell_{\max}+1} + - \sum_{\ell=0}^{\ell_{\max}} V_{A \ell} - \sum_{m=-\ell}^{\ell} | Y_{\ell m} \rangle \langle Y_{\ell m} | + \sum_{\ell=0}^{\ell_{\max}} + \delta V_{A \ell}\sum_{m=-\ell}^{\ell} | Y_{\ell m} \rangle \langle Y_{\ell m} | \] - The first term in the equation above is sometimes attributed to the local channel, - while the remaining terms correspond to the non-local channel projections. - - All the functions $V_{A\ell}$ are parameterized as: - \[ - V_{A \ell}(\mathbf{r}) = - \sum_{q=1}^{N_{q \ell}} - \beta_{A q \ell}\, |\mathbf{r}-\mathbf{R}_{A}|^{n_{A q \ell}}\, - e^{-\alpha_{A q \ell} |\mathbf{r}-\mathbf{R}_{A}|^2 } - \]. + The first term in this equation is attributed to the local channel, while + the remaining terms correspond to non-local channel projections. $\ell_{\max}$ + refers to the maximum angular momentum in the non-local component of the ECP. + The functions \(\delta V_{A \ell}\) and \(V_{A \ell_{\max}+1}\) are parameterized as: + \begin{eqnarray} + \delta V_{A \ell}(\mathbf{r}) &=& + \sum_{q=1}^{N_{q \ell}} + \beta_{A q \ell}\, |\mathbf{r}-\mathbf{R}_{A}|^{n_{A q \ell}}\, + e^{-\alpha_{A q \ell} |\mathbf{r}-\mathbf{R}_{A}|^2 } \nonumber\\ + V_{A \ell_{\max}+1}(\mathbf{r}) &=& -\frac{Z_\text{eff}}{|\mathbf{r}-\mathbf{R}_{A}|}+\delta V_{A \ell_{\max}+1}(\mathbf{r}) + \end{eqnarray} + where $Z_\text{eff}$ is the effective nuclear charge of the center. See http://dx.doi.org/10.1063/1.4984046 or https://doi.org/10.1063/1.5121006 for more info. From f4b409c501d6f2b22a4394cd097faa932d27cff1 Mon Sep 17 00:00:00 2001 From: Evgeny Posenitskiy <45995097+q-posev@users.noreply.github.com> Date: Mon, 3 Apr 2023 21:40:59 +0200 Subject: [PATCH 04/12] [wheel build] Release Python API 1.3.0 --- .github/workflows/actions.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/actions.yml b/.github/workflows/actions.yml index 147d50c..e14c19d 100644 --- a/.github/workflows/actions.yml +++ b/.github/workflows/actions.yml @@ -20,7 +20,7 @@ jobs: message: ${{ steps.commit_message.outputs.message }} steps: - name: Checkout the repo - uses: actions/checkout@v2 + uses: actions/checkout@e2f20e631ae6d7dd3b768f56a5d2af784dd54791 # Gets the correct commit message for pull request with: ref: ${{ github.event.pull_request.head.sha }} @@ -39,7 +39,7 @@ jobs: needs: get_commit_message steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@e2f20e631ae6d7dd3b768f56a5d2af784dd54791 - name: install dependencies run: | @@ -84,7 +84,7 @@ jobs: if: >- contains(needs.get_commit_message.outputs.message, '[wheel build]') || github.event_name == 'release' - uses: actions/upload-artifact@v2 + uses: actions/upload-artifact@82c141cc518b40d92cc801eee768e7aafc9c2fa2 with: name: pytrexio-source path: ./trexio-*.tar.gz @@ -119,7 +119,7 @@ jobs: name: x86 MacOS 11 steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@e2f20e631ae6d7dd3b768f56a5d2af784dd54791 - name: install dependencies run: | From 6aa2a9ee2582a0482593076192b826db930d2866 Mon Sep 17 00:00:00 2001 From: q-posev Date: Mon, 3 Apr 2023 22:44:12 +0200 Subject: [PATCH 05/12] Update Guix manifest with v.2.3.0 --- tools/trexio.scm | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/tools/trexio.scm b/tools/trexio.scm index 72c7f7e..676db89 100644 --- a/tools/trexio.scm +++ b/tools/trexio.scm @@ -60,8 +60,22 @@ "1n9n1gbk5hgvg73am991xrv7ap002rz719a3nvh8m8ff9x10qd76" )))))) +(define-public trexio-2.3 + (package/inherit trexio-2.0 + (version "2.3.0") + (source (origin + (method url-fetch) + (uri (string-append "https://github.com/TREX-CoE/trexio/releases/download/v" version + "/trexio-" version + ".tar.gz")) + (sha256 + (base32 + ;; the hash below is produced by guix download + "183wljg1avsia2pf2wb59s2i2qw6y19qfw164ffy1g024b6362ii" + )))))) + (define-public trexio ;; Default version of TREXIO. - trexio-2.2) + trexio-2.3) trexio From fbd44013db8986daf410a77a8cd23c86e847aed6 Mon Sep 17 00:00:00 2001 From: q-posev Date: Mon, 3 Apr 2023 22:45:54 +0200 Subject: [PATCH 06/12] Bumd the minor version after the release --- CMakeLists.txt | 2 +- configure.ac | 2 +- python/pytrexio/_version.py | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index ba6f6c6..d680079 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -4,7 +4,7 @@ cmake_minimum_required(VERSION 3.16) # Initialize the CMake project. project(Trexio - VERSION 2.3.0 + VERSION 2.4.0 DESCRIPTION "TREX I/O library" LANGUAGES C Fortran ) diff --git a/configure.ac b/configure.ac index 015c0da..2bd60d3 100644 --- a/configure.ac +++ b/configure.ac @@ -2,7 +2,7 @@ # Process this file with autoconf to produce a configure script. AC_PREREQ([2.69]) -AC_INIT([trexio],[2.3.0],[https://github.com/TREX-CoE/trexio/issues]) +AC_INIT([trexio],[2.4.0],[https://github.com/TREX-CoE/trexio/issues]) AC_CONFIG_SRCDIR([Makefile.in]) AC_CONFIG_HEADERS([include/config.h]) diff --git a/python/pytrexio/_version.py b/python/pytrexio/_version.py index 67bc602..3e8d9f9 100644 --- a/python/pytrexio/_version.py +++ b/python/pytrexio/_version.py @@ -1 +1 @@ -__version__ = "1.3.0" +__version__ = "1.4.0" From 3646825790c225d78ac0c62cc770ec17ecf12e2c Mon Sep 17 00:00:00 2001 From: q-posev Date: Mon, 3 Apr 2023 22:48:42 +0200 Subject: [PATCH 07/12] Remove HL HDF5 from CMake --- src/CMakeLists.txt | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 0dc8bd4..78feac9 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -66,7 +66,7 @@ option(ENABLE_HDF5 "Enable HDF5 support" ON) if(ENABLE_HDF5) # Try to detect HDF5 installation using built-in FindHDF5.cmake macro. - find_package(HDF5 REQUIRED COMPONENTS C HL) + find_package(HDF5 REQUIRED COMPONENTS C) if(HDF5_FOUND) message(STATUS "HDF5 version :: ${HDF5_VERSION}") @@ -87,9 +87,7 @@ if(ENABLE_HDF5) # - include directories with HDF5 header files target_include_directories(trexio PRIVATE ${HDF5_C_INCLUDE_DIRS}) # - link to HDF5 C libraries - target_link_libraries(trexio PRIVATE - ${HDF5_C_HL_LIBRARIES} - ${HDF5_C_LIBRARIES}) + target_link_libraries(trexio PRIVATE ${HDF5_C_LIBRARIES}) endif() # Private headers have to be listed as sources, otherwise they are installed From 2f939ee4c4de0391b77e0a6a9273a6e78bf549de Mon Sep 17 00:00:00 2001 From: q-posev Date: Mon, 3 Apr 2023 22:53:02 +0200 Subject: [PATCH 08/12] Cleaner CI --- .github/workflows/actions.yml | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/.github/workflows/actions.yml b/.github/workflows/actions.yml index e14c19d..4897de0 100644 --- a/.github/workflows/actions.yml +++ b/.github/workflows/actions.yml @@ -31,11 +31,9 @@ jobs: COMMIT_MSG=$(git log --no-merges -1 --oneline) echo "::set-output name=message::$COMMIT_MSG" - trexio_ubuntu: - - runs-on: ubuntu-20.04 name: x86 Ubuntu 20.04 + runs-on: ubuntu-20.04 needs: get_commit_message steps: @@ -114,9 +112,8 @@ jobs: run: make maintainer-clean trexio_macos: - - runs-on: macos-11 name: x86 MacOS 11 + runs-on: macos-11 steps: - uses: actions/checkout@e2f20e631ae6d7dd3b768f56a5d2af784dd54791 @@ -133,10 +130,10 @@ jobs: ./configure FC=gfortran-10 --enable-silent-rules - name: compile TREXIO - run: make -j 2 + run: make -j3 - name: check TREXIO - run: make check + run: make -j3 check - name: Archive test log file if: failure() From d4d24ff1021d16483a4e073627ab66965536a9ec Mon Sep 17 00:00:00 2001 From: q-posev Date: Mon, 3 Apr 2023 23:41:02 +0200 Subject: [PATCH 09/12] Better README [skip ci] --- README.md | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index fd5e058..a313092 100644 --- a/README.md +++ b/README.md @@ -22,8 +22,8 @@ TREX library for efficient I/O. 2. `gzip -cd trexio-.tar.gz | tar xvf -` 3. `cd trexio-` 4. `./configure` -5. `make` -6. `make check` +5. ```make -j`getconf _NPROCESSORS_ONLN` ``` +6. ```make -j`getconf _NPROCESSORS_ONLN` check``` 7. `sudo make install` @@ -45,8 +45,8 @@ TREX library for efficient I/O. 2. `cd trexio` 3. `./autogen.sh` 4. `./configure` -5. `make` -6. `make check` +5. ```make -j`getconf _NPROCESSORS_ONLN` ``` +6. ```make -j`getconf _NPROCESSORS_ONLN` check``` 7. `sudo make install` ## Installation procedure for CMake users (from the tarball or GitHub repo clone): @@ -56,8 +56,8 @@ The aforementioned instructions rely on [Autotools](https://www.gnu.org/software 1. `cmake -S. -Bbuild` 2. `cd build` -3. `make` -4. `ctest` (or `make test`) +3. ```make -j`getconf _NPROCESSORS_ONLN` ``` +4. ```ctest -j`getconf _NPROCESSORS_ONLN` ``` 5. `sudo make install` **Note: on systems with no `sudo` access, one can add `-DCMAKE_INSTALL_PREFIX=build` as an argument to the `cmake` command so that `make install/uninstall` can be run without `sudo` privileges.** @@ -73,7 +73,7 @@ The official releases of TREXIO `>2.0.0` are also available via the `conda-forge The pre-compiled stable binaries of `trexio` can be installed as follows: ``` -conda install trexio -c conda-forge +conda install -c conda-forge trexio ``` More details can be found in the corresponding [trexio-feedstock](https://github.com/conda-forge/trexio-feedstock). @@ -88,7 +88,7 @@ Schema file contains the manifest specification for the `trexio` package. It can be installed as follows: ``` -guix package --cores= --install-from-file=trexio.scm +guix package --cores=`getconf _NPROCESSORS_ONLN` --install-from-file=trexio.scm ``` ## Installation procedure for Spack users @@ -100,7 +100,7 @@ file contains the Spack specifications required to build different variants of ` It can be installed as follows ``` -spack install --jobs trexio +spack install --jobs `getconf _NPROCESSORS_ONLN` trexio ``` ## Installation procedure for Debian/Ubuntu users @@ -127,14 +127,14 @@ To build TREXIO without HDF5 back end, append `--without-hdf5` option to `config ## Linking to your program The `make install` command takes care of installing the TREXIO shared library on the user machine. -Once installed, add `-ltrexio` to the list of compiler options. +After installation, append `-ltrexio` to the list of compiler (`$LIBS`) options. -In some cases (e.g. when using custom `prefix` during configuration), the TREXIO library might end up installed in a directory, which is absent in the default `$LIBRARY_PATH`. -In order to link the program against TREXIO, the search paths can be modified as follows: +In some cases (e.g. when using custom installation prefix during configuration), the TREXIO library might end up installed in a directory, which is absent in the default `$LD_LIBRARY_PATH`. +In order to link the program against TREXIO, the search path can be modified as follows: -`export LIBRARY_PATH=$LIBRARY_PATH:/lib` +`export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/lib` -(same holds for `$LD_LIBRARY_PATH`). The `` has to be replaced by the prefix used during the installation. +where the `` has to be replaced by the prefix used during the installation. If your project relies on CMake build system, feel free to use the [FindTREXIO.cmake](https://github.com/TREX-CoE/trexio/blob/master/cmake/FindTREXIO.cmake) From bd58998d044ef3a2db96f0290d26f5879728b8dd Mon Sep 17 00:00:00 2001 From: Anthony Scemama Date: Wed, 12 Apr 2023 13:16:16 +0200 Subject: [PATCH 10/12] Fixed S_ISDIR --- src/templates_text/templator_text.org | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/templates_text/templator_text.org b/src/templates_text/templator_text.org index 9ed7858..1e7f140 100644 --- a/src/templates_text/templator_text.org +++ b/src/templates_text/templator_text.org @@ -145,10 +145,10 @@ trexio_text_inquire (const char* file_name) if (file_exists) { bool is_a_directory = false; -#ifdef S_IFDIR +#if defined(S_IFDIR) is_a_directory = st.st_mode & S_IFDIR; -#elif S_ISDIR - is_a_directory = S_ISDIR(s.st_mode); +#elif defined(S_ISDIR) + is_a_directory = S_ISDIR(st.st_mode); #else printf("Some important macros are missing for directory handling.\n"); return TREXIO_FAILURE; From d9a15c12d36e3db41bc4a06c073123ac5e2f74c9 Mon Sep 17 00:00:00 2001 From: Anthony Scemama Date: Wed, 12 Apr 2023 14:59:20 +0200 Subject: [PATCH 11/12] Fixed text back-end in Python --- src/templates_text/templator_text.org | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/src/templates_text/templator_text.org b/src/templates_text/templator_text.org index 1e7f140..3005aa7 100644 --- a/src/templates_text/templator_text.org +++ b/src/templates_text/templator_text.org @@ -162,6 +162,29 @@ trexio_text_inquire (const char* file_name) } #+end_src +On non-POSIX file systems, the function ~mkdtemp~ might is not defined. +In that case, we define an alternate one, which is not as safe as the original one. + + #+begin_src c :tangle basic_text.c +#if defined _POSIX_C_SOURCE && (_POSIX_C_SOURCE - 0) >= 200809L +#else + +char* mkdtemp(char* template) { + char* dir = NULL; + dir = tmpnam(dir); + if (dir == NULL) return NULL; + + if (mkdir(dir, S_IRWXU | S_IRWXG | S_IRWXO) != 0) { + return NULL; + } + + strcpy(template, dir); + return template; +} + +#endif + #+end_src + #+begin_src c :tangle basic_text.c trexio_exit_code trexio_text_init (trexio_t* const file) From 13567fceb89aaafff9e38952bd2bd486611243b8 Mon Sep 17 00:00:00 2001 From: Anthony Scemama Date: Wed, 26 Apr 2023 10:07:04 +0200 Subject: [PATCH 12/12] [wheel build] Set version number to 2.3.1 for fixing text backend in python --- CMakeLists.txt | 2 +- configure.ac | 2 +- python/pytrexio/_version.py | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index d680079..9bda21c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -4,7 +4,7 @@ cmake_minimum_required(VERSION 3.16) # Initialize the CMake project. project(Trexio - VERSION 2.4.0 + VERSION 2.3.1 DESCRIPTION "TREX I/O library" LANGUAGES C Fortran ) diff --git a/configure.ac b/configure.ac index 2bd60d3..dede482 100644 --- a/configure.ac +++ b/configure.ac @@ -2,7 +2,7 @@ # Process this file with autoconf to produce a configure script. AC_PREREQ([2.69]) -AC_INIT([trexio],[2.4.0],[https://github.com/TREX-CoE/trexio/issues]) +AC_INIT([trexio],[2.3.1],[https://github.com/TREX-CoE/trexio/issues]) AC_CONFIG_SRCDIR([Makefile.in]) AC_CONFIG_HEADERS([include/config.h]) diff --git a/python/pytrexio/_version.py b/python/pytrexio/_version.py index 3e8d9f9..9c73af2 100644 --- a/python/pytrexio/_version.py +++ b/python/pytrexio/_version.py @@ -1 +1 @@ -__version__ = "1.4.0" +__version__ = "1.3.1"