Commit d9e21e54 authored by Victor Yu's avatar Victor Yu
Browse files

Update NTPoly to v2.5.1

This update mainly cleans up some unnecessary use of iso_c_bindings.
No difference should be expected on the ELSI side.
parent 5607da99
......@@ -5,6 +5,9 @@
### PEXSI
* Updated redistributed (PT-)SCOTCH source code to version 6.1.0.
### NTPoly
* Updated redistributed NTPoly source code to version 2.5.1.
### Known issues
* The ELPA code can not be compiled with the NAG Fortran compiler, due to the
use of GNU extensions in ELPA.
......
......@@ -7,7 +7,7 @@ SET(elsi_URL "http://elsi-interchange.org")
SET(elsi_EMAIL "elsi-team@duke.edu")
SET(elsi_LICENSE "BSD 3")
SET(elsi_DESCRIPTION "Electronic Structure Infrastructure")
SET(elsi_DATESTAMP "20200927")
SET(elsi_DATESTAMP "20201014")
### CMake modules ###
LIST(APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake)
......
No preview for this file type
......@@ -80,7 +80,7 @@ ELSI is a National Science Foundation Software Infrastructure for Sustained Inno
\chapter{Installation of ELSI}
\section{Prerequisites}
\label{sec:prereq}
The ELSI package contains the ELSI interface software as well as redistributed source code for the solver libraries ELPA (version 2020.05.001), libOMM (version 1.0.0), PEXSI (version 1.2.0), and NTPoly (version 2.5.0). The installation of ELSI makes use of the \href{https://cmake.org}{CMake} software. Minimum requirements include:
The ELSI package contains the ELSI interface software as well as redistributed source code for the solver libraries ELPA (version 2020.05.001), libOMM (version 1.0.0), PEXSI (version 1.2.0), and NTPoly (version 2.5.1). The installation of ELSI makes use of the \href{https://cmake.org}{CMake} software. Minimum requirements include:
\begin{Verbatim}[commandchars=\\\{\}]
\tcb{CMake} [minimum version 3.0; newer version recommended]
\tcb{Fortran compiler} [Fortran 2003 compliant]
......@@ -1970,6 +1970,6 @@ OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
\end{Verbatim}
\end{tcolorbox}
The source code of ELPA 2020.05.001 (LGPL3), libOMM 1.0.0 (BSD2), NTPoly 2.5.0 (MIT), PEXSI 1.2.0 (BSD3), PT-SCOTCH 6.1.0 (CeCILL-C), SuperLU\_DIST 6.2.0 (BSD3), and BSEPACK 0.1 (BSD3) are redistributed through this version of ELSI. Individual license of each library can be found in the corresponding subfolder.
The source code of ELPA 2020.05.001 (LGPL3), libOMM 1.0.0 (BSD2), NTPoly 2.5.1 (MIT), PEXSI 1.2.0 (BSD3), PT-SCOTCH 6.1.0 (CeCILL-C), SuperLU\_DIST 6.2.0 (BSD3), and BSEPACK 0.1 (BSD3) are redistributed through this version of ELSI. Individual license of each library can be found in the corresponding subfolder.
\end{document}
......@@ -7,7 +7,6 @@
MODULE MatrixMemoryPoolModule
USE DataTypesModule, ONLY: NTREAL, NTCOMPLEX
USE TripletModule, ONLY : Triplet_r, Triplet_c
USE, INTRINSIC :: ISO_C_BINDING, ONLY : c_int
IMPLICIT NONE
PRIVATE
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
......@@ -88,9 +87,9 @@ CONTAINS!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!> The matrix to construct.
TYPE(MatrixMemoryPool_lr), TARGET :: this
!> Number of columns in the matrix.
INTEGER(kind=c_int), INTENT(IN) :: columns
INTEGER, INTENT(IN) :: columns
!> Number of rows in the matrix.
INTEGER(kind=c_int), INTENT(IN) :: rows
INTEGER, INTENT(IN) :: rows
!> Estimated sparsity (optional).
REAL(NTREAL), INTENT(IN), OPTIONAL :: sparsity_in
......@@ -106,9 +105,9 @@ CONTAINS!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!> The matrix to construct.
TYPE(MatrixMemoryPool_lc), TARGET :: this
!> Number of columns in the matrix.
INTEGER(kind=c_int), INTENT(IN) :: columns
INTEGER, INTENT(IN) :: columns
!> Number of rows in the matrix.
INTEGER(kind=c_int), INTENT(IN) :: rows
INTEGER, INTENT(IN) :: rows
!> Estimated sparsity (optional).
REAL(NTREAL), INTENT(IN), OPTIONAL :: sparsity_in
......@@ -124,9 +123,9 @@ CONTAINS!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!> The matrix to construct.
TYPE(MatrixMemoryPool_lr), TARGET :: this
!> Number of columns in the matrix.
INTEGER(kind=c_int), INTENT(IN) :: columns
INTEGER, INTENT(IN) :: columns
!> Number of rows in the matrix.
INTEGER(kind=c_int), INTENT(IN) :: rows
INTEGER, INTENT(IN) :: rows
!> Estimated sparsity (optional).
REAL(NTREAL), INTENT(IN), OPTIONAL :: sparsity_in
......@@ -166,9 +165,9 @@ CONTAINS!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!> The matrix to construct.
TYPE(MatrixMemoryPool_lc), TARGET :: this
!> Number of columns in the matrix.
INTEGER(kind=c_int), INTENT(IN) :: columns
INTEGER, INTENT(IN) :: columns
!> Number of rows in the matrix.
INTEGER(kind=c_int), INTENT(IN) :: rows
INTEGER, INTENT(IN) :: rows
!> Estimated sparsity (optional).
REAL(NTREAL), INTENT(IN), OPTIONAL :: sparsity_in
......
......@@ -23,7 +23,6 @@ MODULE PSMatrixAlgebraModule
USE TimerModule, ONLY : StartTimer, StopTimer
USE TripletListModule, ONLY : TripletList_r, TripletList_c
USE NTMPIModule
USE, INTRINSIC :: ISO_C_BINDING
IMPLICIT NONE
PRIVATE
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
......
......@@ -29,7 +29,6 @@ MODULE PSMatrixModule
& SymmetrizeTripletList, GetTripletAt, RedistributeTripletLists, &
& ShiftTripletList
USE NTMPIModule
USE, INTRINSIC :: ISO_C_BINDING
IMPLICIT NONE
PRIVATE
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
......
......@@ -7,7 +7,6 @@ MODULE ProcessGridModule
USE LoggingModule, ONLY : ActivateLogger, EnterSubLog, ExitSubLog, &
& WriteHeader, WriteListElement
USE NTMPIModule
USE, INTRINSIC :: ISO_C_BINDING, ONLY : c_int, c_bool
......@@ -83,15 +82,15 @@ CONTAINS !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
SUBROUTINE ConstructProcessGrid_full(world_comm_, process_rows_, &
& process_columns_, process_slices_, be_verbose_in)
!> A communicator that every process in the grid is a part of.
INTEGER(kind=c_int), INTENT(IN) :: world_comm_
INTEGER, INTENT(IN) :: world_comm_
!> The number of grid rows.
INTEGER(kind=c_int), INTENT(IN) :: process_rows_
INTEGER, INTENT(IN) :: process_rows_
!> The number of grid columns.
INTEGER(kind=c_int), INTENT(IN) :: process_columns_
INTEGER, INTENT(IN) :: process_columns_
!> The number of grid slices.
INTEGER(kind=c_int), INTENT(IN) :: process_slices_
INTEGER, INTENT(IN) :: process_slices_
!> Set true to print process grid info.
LOGICAL(kind=c_bool), INTENT(IN), OPTIONAL :: be_verbose_in
LOGICAL, INTENT(IN), OPTIONAL :: be_verbose_in
!! Local Data
LOGICAL :: be_verbose
......@@ -131,13 +130,13 @@ CONTAINS !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
SUBROUTINE ConstructProcessGrid_onlyslice(world_comm_, process_slices_in, &
& be_verbose_in)
!> A communicator that every process in the grid is a part of.
INTEGER(kind=c_int), INTENT(IN) :: world_comm_
INTEGER, INTENT(IN) :: world_comm_
!> The number of grid slices.
INTEGER(kind=c_int), INTENT(IN), OPTIONAL :: process_slices_in
INTEGER, INTENT(IN), OPTIONAL :: process_slices_in
!> Set true to print process grid info.
LOGICAL(kind=c_bool), INTENT(IN), OPTIONAL :: be_verbose_in
LOGICAL, INTENT(IN), OPTIONAL :: be_verbose_in
!! Local Data
LOGICAL(kind=c_bool) :: be_verbose
LOGICAL :: be_verbose
INTEGER :: process_rows, process_columns, process_slices
INTEGER :: total_processors
INTEGER :: ierr
......@@ -172,13 +171,13 @@ CONTAINS !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!> The grid to construct
TYPE(ProcessGrid_t), INTENT(INOUT) :: grid
!> A communicator that every process in the grid is a part of.
INTEGER(kind=c_int), INTENT(IN) :: world_comm_
INTEGER, INTENT(IN) :: world_comm_
!> The number of grid rows.
INTEGER(kind=c_int), INTENT(IN) :: process_rows_
INTEGER, INTENT(IN) :: process_rows_
!> The number of grid columns.
INTEGER(kind=c_int), INTENT(IN) :: process_columns_
INTEGER, INTENT(IN) :: process_columns_
!> The number of grid slices.
INTEGER(kind=c_int), INTENT(IN) :: process_slices_
INTEGER, INTENT(IN) :: process_slices_
!! Local Data
INTEGER :: column_block_multiplier
INTEGER :: row_block_multiplier
......@@ -292,9 +291,9 @@ CONTAINS !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!> The grid to construct
TYPE(ProcessGrid_t), INTENT(INOUT) :: grid
!> A communicator that every process in the grid is a part of.
INTEGER(kind=c_int), INTENT(IN) :: world_comm_
INTEGER, INTENT(IN) :: world_comm_
!> The number of grid slices.
INTEGER(kind=c_int), INTENT(IN), OPTIONAL :: process_slices_in
INTEGER, INTENT(IN), OPTIONAL :: process_slices_in
!! Local Data
INTEGER :: process_rows, process_columns, process_slices
INTEGER :: total_processors
......
......@@ -9,7 +9,6 @@ MODULE TripletListModule
& ConvertTripletType
USE MatrixMarketModule, ONLY : MM_SYMMETRIC, MM_SKEW_SYMMETRIC, MM_HERMITIAN
USE NTMPIModule
USE, INTRINSIC :: ISO_C_BINDING, ONLY : c_int
IMPLICIT NONE
PRIVATE
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
......@@ -108,7 +107,7 @@ CONTAINS!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!> The triplet list to construct.
TYPE(TripletList_r), INTENT(INOUT) :: this
!> The length of the triplet list (default=0).
INTEGER(kind=c_int), INTENT(IN), OPTIONAL :: size_in
INTEGER, INTENT(IN), OPTIONAL :: size_in
IF (PRESENT(size_in)) THEN
this = ConstructTripletList_r(size_in)
......@@ -122,7 +121,7 @@ CONTAINS!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!> The triplet list to construct.
TYPE(TripletList_c), INTENT(INOUT) :: this
!> The length of the triplet list (default=0).
INTEGER(kind=c_int), INTENT(IN), OPTIONAL :: size_in
INTEGER, INTENT(IN), OPTIONAL :: size_in
IF (PRESENT(size_in)) THEN
this = ConstructTripletList_c(size_in)
......@@ -136,7 +135,7 @@ CONTAINS!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!> The triplet list to construct.
TYPE(TripletList_r) :: this
!> The length of the triplet list (default=0).
INTEGER(kind=c_int), INTENT(IN), OPTIONAL :: size_in
INTEGER, INTENT(IN), OPTIONAL :: size_in
!! Local data
INTEGER :: size
......@@ -159,7 +158,7 @@ CONTAINS!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!> The triplet list to construct.
TYPE(TripletList_c) :: this
!> The length of the triplet list (default=0).
INTEGER(kind=c_int), INTENT(IN), OPTIONAL :: size_in
INTEGER, INTENT(IN), OPTIONAL :: size_in
!! Local data
INTEGER :: size
......@@ -202,7 +201,7 @@ CONTAINS!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!> The triplet list to resize.
TYPE(TripletList_r), INTENT(INOUT) :: this
!> Size to resize to.
INTEGER(KIND=c_int), INTENT(IN) :: size
INTEGER, INTENT(IN) :: size
!! Local Data
TYPE(Triplet_r), DIMENSION(:), ALLOCATABLE :: temporary_data
......@@ -227,7 +226,7 @@ CONTAINS!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!> The triplet list to resize.
TYPE(TripletList_c), INTENT(INOUT) :: this
!> Size to resize to.
INTEGER(KIND=c_int), INTENT(IN) :: size
INTEGER, INTENT(IN) :: size
!! Local Data
TYPE(Triplet_c), DIMENSION(:), ALLOCATABLE :: temporary_data
......@@ -308,7 +307,7 @@ CONTAINS!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!> The triplet list to set.
TYPE(TripletList_r), INTENT(INOUT) :: this
!> The index at which to set the triplet.
INTEGER(KIND=c_int), INTENT(IN) :: index
INTEGER, INTENT(IN) :: index
!> The value of the triplet to set.
TYPE(Triplet_r), INTENT(IN) :: triplet_value
......@@ -320,7 +319,7 @@ CONTAINS!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!> The triplet list to set.
TYPE(TripletList_c), INTENT(INOUT) :: this
!> The index at which to set the triplet.
INTEGER(KIND=c_int), INTENT(IN) :: index
INTEGER, INTENT(IN) :: index
!> The value of the triplet to set.
TYPE(Triplet_c), INTENT(IN) :: triplet_value
......@@ -332,7 +331,7 @@ CONTAINS!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!> The triplet list to get the value from.
TYPE(TripletList_r), INTENT(IN) :: this
!> The index from which to get the triplet.
INTEGER(kind=c_int), INTENT(IN) :: index
INTEGER, INTENT(IN) :: index
!> The extracted triplet value.
TYPE(Triplet_r), INTENT(OUT) :: triplet_value
......@@ -344,7 +343,7 @@ CONTAINS!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!> The triplet list to get the value from.
TYPE(TripletList_c), INTENT(IN) :: this
!> The index from which to get the triplet.
INTEGER(kind=c_int), INTENT(IN) :: index
INTEGER, INTENT(IN) :: index
!> The extracted triplet value.
TYPE(Triplet_c), INTENT(OUT) :: triplet_value
......
......@@ -6,7 +6,6 @@ MODULE TripletModule
USE DataTypesModule, ONLY: NTREAL, MPINTREAL, NTCOMPLEX, MPINTCOMPLEX, &
& MPINTINTEGER
USE NTMPIModule
USE, INTRINSIC :: ISO_C_BINDING, ONLY : c_int
IMPLICIT NONE
PRIVATE
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
......@@ -14,8 +13,8 @@ MODULE TripletModule
!> As this is related to matrix multiplication, the referencing indices are
!> rows and columns.
TYPE, PUBLIC :: Triplet_r
INTEGER(kind=c_int) :: index_column !< column value.
INTEGER(kind=c_int) :: index_row !< row value.
INTEGER :: index_column !< column value.
INTEGER :: index_row !< row value.
REAL(NTREAL) :: point_value !< actual value at those indices.
END TYPE Triplet_r
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
......@@ -23,8 +22,8 @@ MODULE TripletModule
!> As this is related to matrix multiplication, the referencing indices are
!> rows and columns.
TYPE, PUBLIC :: Triplet_c
INTEGER(kind=c_int) :: index_column !< column value.
INTEGER(kind=c_int) :: index_row !< row value.
INTEGER :: index_column !< column value.
INTEGER :: index_row !< row value.
COMPLEX(NTCOMPLEX) :: point_value !< actual value at those indices.
END TYPE Triplet_c
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment