Browse Source

New code generator. May need fixup in a folloup PR to ensure consistency against the MPI.jl backend.

pull/2/head
termi-official 3 years ago
parent
commit
f6da3ba3e7
  1. 24
      gen/Manifest.toml
  2. 4
      gen/Project.toml
  3. 12
      gen/generator.jl
  4. 18
      gen/generator.toml
  5. 14105
      lib/LibHYPRE.jl
  6. 3499
      lib/LibHYPREAPI.jl
  7. 243
      lib/LibHYPRECommon.jl

24
gen/Manifest.toml

@ -20,9 +20,9 @@ version = "0.4.2" @@ -20,9 +20,9 @@ version = "0.4.2"
[[deps.Clang]]
deps = ["CEnum", "Clang_jll", "Downloads", "Pkg", "TOML"]
git-tree-sha1 = "b6998b85ea2abbc8a02ca1ccca9438338ed5f8e5"
git-tree-sha1 = "b7e356adf44b1d4eb7aa2b0961ec130730fa208f"
uuid = "40e3b903-d033-50b4-a0cc-940c62c95e31"
version = "0.15.8"
version = "0.16.3"
[[deps.Clang_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Zlib_jll", "libLLVM_jll"]
@ -44,9 +44,9 @@ uuid = "f43a241f-c20a-4ad4-852c-f6b1247861c6" @@ -44,9 +44,9 @@ uuid = "f43a241f-c20a-4ad4-852c-f6b1247861c6"
[[deps.HYPRE_jll]]
deps = ["Artifacts", "JLLWrappers", "LAPACK_jll", "LazyArtifacts", "Libdl", "MPICH_jll", "MPIPreferences", "MPItrampoline_jll", "MicrosoftMPI_jll", "OpenBLAS_jll", "OpenMPI_jll", "Pkg", "TOML"]
git-tree-sha1 = "ed07e4165a837e4606bc5dfbb6536ab0ec798ab8"
git-tree-sha1 = "b77d3eca75f8442e034ccf415c87405a49e77985"
uuid = "0a602bbd-b08b-5d75-8d32-0de6eef44785"
version = "2.23.0+1"
version = "2.23.1+1"
[[deps.InteractiveUtils]]
deps = ["Markdown"]
@ -92,21 +92,21 @@ uuid = "56ddb016-857b-54e1-b83d-db4d58db5568" @@ -92,21 +92,21 @@ uuid = "56ddb016-857b-54e1-b83d-db4d58db5568"
[[deps.MPICH_jll]]
deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "LazyArtifacts", "Libdl", "MPIPreferences", "Pkg", "TOML"]
git-tree-sha1 = "089ec72dbf7d7a853626f438d140d0a642ddbda4"
git-tree-sha1 = "6d4fa43afab4611d090b11617ecea1a144b21d35"
uuid = "7cb0a576-ebde-5e09-9194-50597f1243b4"
version = "4.0.2+4"
version = "4.0.2+5"
[[deps.MPIPreferences]]
deps = ["Libdl", "Preferences"]
git-tree-sha1 = "49f10d34284610c125421c7a4e6f913e4bc00897"
git-tree-sha1 = "9959c42b41220206eeda9004f695d913e2245658"
uuid = "3da0fdf6-3ccc-4f1b-acd9-58baa6c99267"
version = "0.1.3"
version = "0.1.5"
[[deps.MPItrampoline_jll]]
deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "LazyArtifacts", "Libdl", "MPIPreferences", "Pkg", "TOML"]
git-tree-sha1 = "0c87d3420a787a2be96942d4d1298487271c51d0"
git-tree-sha1 = "b3f9e42685b4ad614eca0b44bd863cd41b1c86ea"
uuid = "f1f71cc9-e9ae-5b93-9b94-4fe0e1ad3748"
version = "4.1.2+0"
version = "5.0.2+1"
[[deps.Markdown]]
deps = ["Base64"]
@ -134,9 +134,9 @@ uuid = "4536629a-c528-5b80-bd46-f80d51c5b363" @@ -134,9 +134,9 @@ uuid = "4536629a-c528-5b80-bd46-f80d51c5b363"
[[deps.OpenMPI_jll]]
deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "LazyArtifacts", "Libdl", "MPIPreferences", "Pkg", "TOML"]
git-tree-sha1 = "6198c6dc3b5c3dc01854879197a5f382a60f947d"
git-tree-sha1 = "346d6b357a480300ed7854dbc70e746ac52e10fd"
uuid = "fe0851c0-eecd-5654-98d4-656369965a5c"
version = "4.1.3+1"
version = "4.1.3+3"
[[deps.Pkg]]
deps = ["Artifacts", "Dates", "Downloads", "LibGit2", "Libdl", "Logging", "Markdown", "Printf", "REPL", "Random", "SHA", "Serialization", "TOML", "Tar", "UUIDs", "p7zip_jll"]

4
gen/Project.toml

@ -3,3 +3,7 @@ CEnum = "fa961155-64e5-5f13-b03f-caf6b980ea82" @@ -3,3 +3,7 @@ CEnum = "fa961155-64e5-5f13-b03f-caf6b980ea82"
Clang = "40e3b903-d033-50b4-a0cc-940c62c95e31"
HYPRE_jll = "0a602bbd-b08b-5d75-8d32-0de6eef44785"
MPICH_jll = "7cb0a576-ebde-5e09-9194-50597f1243b4"
MPIPreferences = "3da0fdf6-3ccc-4f1b-acd9-58baa6c99267"
[extras]
MPIPreferences = "3da0fdf6-3ccc-4f1b-acd9-58baa6c99267"

12
gen/generator.jl

@ -1,10 +1,18 @@ @@ -1,10 +1,18 @@
using Clang.Generators
using HYPRE_jll, MPICH_jll
using HYPRE_jll, MPIPreferences
cd(@__DIR__)
if MPIPreferences.binary == "MPICH_jll"
import MPICH_jll: artifact_dir
elseif MPIPreferences.binary == "OpenMPI_jll"
import OpenMPI_jll: artifact_dir
else
error("Unknown MPI binary: $(MPIPreferences.binary)")
end
hypre_include_dir = normpath(HYPRE_jll.artifact_dir, "include")
mpi_include_dir = normpath(MPICH_jll.artifact_dir, "include")
mpi_include_dir = normpath(artifact_dir, "include")
options = load_options(joinpath(@__DIR__, "generator.toml"))

18
gen/generator.toml

@ -1,22 +1,10 @@ @@ -1,22 +1,10 @@
[general]
library_name = "libHYPRE"
output_file_path = "../lib/LibHYPRE.jl"
output_common_file_path = "../lib/LibHYPRECommon.jl"
output_api_file_path = "../lib/LibHYPREAPI.jl"
jll_pkg_name = "HYPRE_jll"
export_symbol_prefixes = []
output_ignorelist = [
# Overflows Int32
"MPI_FLOAT_INT",
"MPI_DOUBLE_INT",
"MPI_LONG_INT",
"MPI_SHORT_INT",
"MPI_LONG_DOUBLE_INT",
# Uses NULL
"MPI_T_ENUM_NULL",
"MPI_T_CVAR_HANDLE_NULL",
"MPI_T_PVAR_HANDLE_NULL",
"MPI_T_PVAR_SESSION_NULL",
# Bogus expression: const MPI_ARGV_NULL = (Cchar * (*))(0)
"MPI_ARGV_NULL",
# Undefined values DBL_MAX, DBL_MIN, DBL_EPSILON, DBL_MIN_EXP
"HYPRE_REAL_MAX",
"HYPRE_REAL_MIN",
@ -24,4 +12,6 @@ output_ignorelist = [ @@ -24,4 +12,6 @@ output_ignorelist = [
"HYPRE_REAL_MIN_EXP",
# Bogus expression: const HYPRE_VERSION = ((("HYPRE_RELEASE_NAME Date Compiled: ")(__DATE__))(" "))(__TIME__)
"HYPRE_VERSION",
# Filter out MPI stuff
"^[PQ]?MPI"
]

14105
lib/LibHYPRE.jl

File diff suppressed because it is too large Load Diff

3499
lib/LibHYPREAPI.jl

File diff suppressed because it is too large Load Diff

243
lib/LibHYPRECommon.jl

@ -0,0 +1,243 @@ @@ -0,0 +1,243 @@
mutable struct ADIOI_FileD end
const HYPRE_BigInt = Cint
const HYPRE_Int = Cint
const HYPRE_Real = Cdouble
const HYPRE_Complex = HYPRE_Real
@cenum _HYPRE_MemoryLocation::Int32 begin
HYPRE_MEMORY_UNDEFINED = -1
HYPRE_MEMORY_HOST = 0
HYPRE_MEMORY_DEVICE = 1
end
const HYPRE_MemoryLocation = _HYPRE_MemoryLocation
@cenum _HYPRE_ExecutionPolicy::Int32 begin
HYPRE_EXEC_UNDEFINED = -1
HYPRE_EXEC_HOST = 0
HYPRE_EXEC_DEVICE = 1
end
const HYPRE_ExecutionPolicy = _HYPRE_ExecutionPolicy
mutable struct hypre_IJMatrix_struct end
const HYPRE_IJMatrix = Ptr{hypre_IJMatrix_struct}
mutable struct hypre_IJVector_struct end
const HYPRE_IJVector = Ptr{hypre_IJVector_struct}
mutable struct hypre_CSRMatrix_struct end
const HYPRE_CSRMatrix = Ptr{hypre_CSRMatrix_struct}
mutable struct hypre_MappedMatrix_struct end
const HYPRE_MappedMatrix = Ptr{hypre_MappedMatrix_struct}
mutable struct hypre_MultiblockMatrix_struct end
const HYPRE_MultiblockMatrix = Ptr{hypre_MultiblockMatrix_struct}
mutable struct hypre_Vector_struct end
const HYPRE_Vector = Ptr{hypre_Vector_struct}
@cenum HYPRE_TimerID::UInt32 begin
HYPRE_TIMER_ID_MATVEC = 0
HYPRE_TIMER_ID_BLAS1 = 1
HYPRE_TIMER_ID_RELAX = 2
HYPRE_TIMER_ID_GS_ELIM_SOLVE = 3
HYPRE_TIMER_ID_PACK_UNPACK = 4
HYPRE_TIMER_ID_HALO_EXCHANGE = 5
HYPRE_TIMER_ID_ALL_REDUCE = 6
HYPRE_TIMER_ID_CREATES = 7
HYPRE_TIMER_ID_CREATE_2NDS = 8
HYPRE_TIMER_ID_PMIS = 9
HYPRE_TIMER_ID_EXTENDED_I_INTERP = 10
HYPRE_TIMER_ID_PARTIAL_INTERP = 11
HYPRE_TIMER_ID_MULTIPASS_INTERP = 12
HYPRE_TIMER_ID_INTERP_TRUNC = 13
HYPRE_TIMER_ID_MATMUL = 14
HYPRE_TIMER_ID_COARSE_PARAMS = 15
HYPRE_TIMER_ID_RAP = 16
HYPRE_TIMER_ID_RENUMBER_COLIDX = 17
HYPRE_TIMER_ID_EXCHANGE_INTERP_DATA = 18
HYPRE_TIMER_ID_GS_ELIM_SETUP = 19
HYPRE_TIMER_ID_BEXT_A = 20
HYPRE_TIMER_ID_BEXT_S = 21
HYPRE_TIMER_ID_RENUMBER_COLIDX_RAP = 22
HYPRE_TIMER_ID_MERGE = 23
HYPRE_TIMER_ID_SPMM_ROWNNZ = 24
HYPRE_TIMER_ID_SPMM_ATTEMPT1 = 25
HYPRE_TIMER_ID_SPMM_ATTEMPT2 = 26
HYPRE_TIMER_ID_SPMM_SYMBOLIC = 27
HYPRE_TIMER_ID_SPMM_NUMERIC = 28
HYPRE_TIMER_ID_SPMM = 29
HYPRE_TIMER_ID_SPADD = 30
HYPRE_TIMER_ID_SPTRANS = 31
HYPRE_TIMER_ID_COUNT = 32
end
mutable struct hypre_ParCSRMatrix_struct end
const HYPRE_ParCSRMatrix = Ptr{hypre_ParCSRMatrix_struct}
mutable struct hypre_ParVector_struct end
const HYPRE_ParVector = Ptr{hypre_ParVector_struct}
mutable struct hypre_Solver_struct end
const HYPRE_Solver = Ptr{hypre_Solver_struct}
mutable struct hypre_Matrix_struct end
const HYPRE_Matrix = Ptr{hypre_Matrix_struct}
# typedef HYPRE_Int ( * HYPRE_PtrToSolverFcn ) ( HYPRE_Solver , HYPRE_Matrix , HYPRE_Vector , HYPRE_Vector )
const HYPRE_PtrToSolverFcn = Ptr{Cvoid}
# typedef HYPRE_Int ( * HYPRE_PtrToModifyPCFcn ) ( HYPRE_Solver , HYPRE_Int , HYPRE_Real )
const HYPRE_PtrToModifyPCFcn = Ptr{Cvoid}
struct utilities_FortranMatrix
globalHeight::HYPRE_BigInt
height::HYPRE_BigInt
width::HYPRE_BigInt
value::Ptr{HYPRE_Real}
ownsValues::HYPRE_Int
end
struct mv_InterfaceInterpreter
CreateVector::Ptr{Cvoid}
DestroyVector::Ptr{Cvoid}
InnerProd::Ptr{Cvoid}
CopyVector::Ptr{Cvoid}
ClearVector::Ptr{Cvoid}
SetRandomValues::Ptr{Cvoid}
ScaleVector::Ptr{Cvoid}
Axpy::Ptr{Cvoid}
VectorSize::Ptr{Cvoid}
CreateMultiVector::Ptr{Cvoid}
CopyCreateMultiVector::Ptr{Cvoid}
DestroyMultiVector::Ptr{Cvoid}
Width::Ptr{Cvoid}
Height::Ptr{Cvoid}
SetMask::Ptr{Cvoid}
CopyMultiVector::Ptr{Cvoid}
ClearMultiVector::Ptr{Cvoid}
SetRandomVectors::Ptr{Cvoid}
MultiInnerProd::Ptr{Cvoid}
MultiInnerProdDiag::Ptr{Cvoid}
MultiVecMat::Ptr{Cvoid}
MultiVecMatDiag::Ptr{Cvoid}
MultiAxpy::Ptr{Cvoid}
MultiXapy::Ptr{Cvoid}
Eval::Ptr{Cvoid}
end
mutable struct mv_MultiVector end
const mv_MultiVectorPtr = Ptr{mv_MultiVector}
struct mv_TempMultiVector
numVectors::HYPRE_Int
mask::Ptr{HYPRE_Int}
vector::Ptr{Ptr{Cvoid}}
ownsVectors::HYPRE_Int
ownsMask::HYPRE_Int
interpreter::Ptr{mv_InterfaceInterpreter}
end
const mv_TempMultiVectorPtr = Ptr{mv_TempMultiVector}
struct HYPRE_MatvecFunctions
MatvecCreate::Ptr{Cvoid}
Matvec::Ptr{Cvoid}
MatvecDestroy::Ptr{Cvoid}
MatMultiVecCreate::Ptr{Cvoid}
MatMultiVec::Ptr{Cvoid}
MatMultiVecDestroy::Ptr{Cvoid}
end
# typedef HYPRE_Int ( * HYPRE_PtrToParSolverFcn ) ( HYPRE_Solver , HYPRE_ParCSRMatrix , HYPRE_ParVector , HYPRE_ParVector )
const HYPRE_PtrToParSolverFcn = Ptr{Cvoid}
const HYPRE_UNITIALIZED = -999
const HYPRE_PETSC_MAT_PARILUT_SOLVER = 222
const HYPRE_PARILUT = 333
const HYPRE_STRUCT = 1111
const HYPRE_SSTRUCT = 3333
const HYPRE_PARCSR = 5555
const HYPRE_ISIS = 9911
const HYPRE_PETSC = 9933
const HYPRE_PFMG = 10
const HYPRE_SMG = 11
const HYPRE_Jacobi = 17
const HYPRE_RELEASE_NAME = "HYPRE"
const HYPRE_RELEASE_VERSION = "2.23.0"
const HYPRE_RELEASE_NUMBER = 22300
const HYPRE_RELEASE_DATE = "2021/10/01"
const HYPRE_RELEASE_TIME = "00:00:00"
const HYPRE_RELEASE_BUGS = "https://github.com/hypre-space/hypre/issues"
const HYPRE_MAXDIM = 3
const HYPRE_USING_HYPRE_BLAS = 1
const HYPRE_USING_HYPRE_LAPACK = 1
const HYPRE_HAVE_MPI = 1
const HYPRE_FMANGLE = 0
const HYPRE_FMANGLE_BLAS = 0
const HYPRE_FMANGLE_LAPACK = 0
const HYPRE_USING_HOST_MEMORY = 1
const NO_TAGS_WITH_MODIFIERS = 1
const ROMIO_VERSION = 126
const HAVE_MPI_GREQUEST = 1
const HYPRE_MPI_BIG_INT = MPI_INT
const HYPRE_MPI_INT = MPI_INT
const HYPRE_MPI_REAL = MPI_DOUBLE
const HYPRE_MPI_COMPLEX = HYPRE_MPI_REAL
const HYPRE_ERROR_GENERIC = 1
const HYPRE_ERROR_MEMORY = 2
const HYPRE_ERROR_ARG = 4
const HYPRE_ERROR_CONV = 256
Loading…
Cancel
Save