Browse Source

Add HYPRE.Init()

This patch adds the function `HYPRE.Init()` which i) calls `MPI.Init`
(unless MPI is already initialized), ii) calls `HYPRE_Init`, and iii)
adds a Julia exit hook which calls `HYPRE_Finalize` (if the keyword
argument `finalize_atexit` is `true`).
Fredrik Ekre 3 years ago
parent
commit
221f5f557f
  1. 23
      src/HYPRE.jl
  2. 4
      test/runtests.jl

23
src/HYPRE.jl

@ -19,6 +19,29 @@ using .LibHYPRE: @check @@ -19,6 +19,29 @@ using .LibHYPRE: @check
# Internal namespace to hide utility functions
include("Internals.jl")
"""
Init(; finalize_atexit=true)
Wrapper around `HYPRE_Init`. If `finalize_atexit` is `true` a Julia exit hook is added,
which calls `HYPRE_Finalize`. This method will also call MPI.Init unless MPI is already
initialized.
"""
function Init(; finalize_atexit=true)
if !(MPI.Initialized())
MPI.Init()
end
# TODO: Check if already initialized?
HYPRE_Init()
if finalize_atexit
# TODO: MPI only calls the finalizer if not exiting due to a Julia exeption. Does
# the same reasoning apply here?
atexit(HYPRE_Finalize)
end
return nothing
end
###############
# HYPREMatrix #
###############

4
test/runtests.jl

@ -10,8 +10,8 @@ using SparseArrays @@ -10,8 +10,8 @@ using SparseArrays
using SparseMatricesCSR
using Test
MPI.Init()
HYPRE_Init()
# Init HYPRE and MPI
HYPRE.Init()
@testset "HYPREMatrix" begin
H = HYPREMatrix(MPI.COMM_WORLD, 1, 5)

Loading…
Cancel
Save