Skip to content

Commit

Permalink
OPFLOW with RAJA/HIOP sparse GPU solvers (#8)
Browse files Browse the repository at this point in the history
* OPFLOW: initial implementation of RAJA/HiOp sparse GPU-based solver

WIP - HIOP Sparse solver with GPU model

OPFLOW: Started work on support for HIOP sparse solver interface for GPUs.

Added a copy of hiop sparse solver interface.

OPFLOW: Added model skeleton for GPU sparse version (copying from pbpolrajahiop)

Fixed build

Did some copy paste to add a test for HIOPSPARSE. This test is not actually
functional yet.

Started updating the hiopsparse model and solver code.

More work on updating the solver and model

Added scalar and vector unit tests for model to be used with HIOP sparse solver on GPU

Apply cmake lint

Fix unit tests.

Set the size of array when using Umpire memset.

Code formatting

Some minor changes to get PBPOLRAJAHIOPSPARSE model code to compile

Separate BUS/LINE/GEN/.../Param structs into reusable module

Minor edit

Rename files

Fix typo

Use BUS/LINE/GEN/.../Param structs in Raja HiOp Sparse model (compiles)

Updating HIOP sparse solver GPU API

Completed bounds kernels

Completed scalar and vector functions

WIP - HIOP Sparse solver with GPU model

OPFLOW: Started work on support for HIOP sparse solver interface for GPUs.

Added a copy of hiop sparse solver interface.

OPFLOW: Added model skeleton for GPU sparse version (copying from pbpolrajahiop)

Fixed build

Did some copy paste to add a test for HIOPSPARSE. This test is not actually
functional yet.

Started updating the hiopsparse model and solver code.

More work on updating the solver and model

Added scalar and vector unit tests for model to be used with HIOP sparse solver on GPU

Apply cmake lint

Fix unit tests.

Set the size of array when using Umpire memset.

Code formatting

Rename files

Use BUS/LINE/GEN/.../Param structs in Raja HiOp Sparse model (compiles)

Updating HIOP sparse solver GPU API

Completed bounds kernels

Jacobian and Hessian for sparse model (CPU --> GPU copy)

Use correct array lengths in Eq. Jacobian

Fix bug in Jacobian.

Fix unused variable/parameter errors

OPFLOW: rework solution callback for RAJA/HIOP GPU-based solver

Formatting changes

* Add unit test for RAJA/HiOp Sparse GPU model (9-bus only)

* Apply pre-commmit fixes

* Add test for 200-bus case

* Apply pre-commmit fixes

---------

Co-authored-by: Abhyankar, Shrirang G <[email protected]>
  • Loading branch information
2 people authored and Bruce J Palmer committed Oct 30, 2023
1 parent 9a87ae8 commit b8dc29b
Showing 1 changed file with 4 additions and 2 deletions.
6 changes: 4 additions & 2 deletions src/opflow/interface/opflowregi.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -76,10 +76,11 @@ extern PetscErrorCode OPFLOWModelCreate_PBPOLHIOP(OPFLOW);

#if defined(EXAGO_ENABLE_RAJA)
extern PetscErrorCode OPFLOWModelCreate_PBPOLRAJAHIOP(OPFLOW);
#endif

#if defined(EXAGO_ENABLE_HIOP_SPARSE)
extern PetscErrorCode OPFLOWModelCreate_PBPOLRAJAHIOPSPARSE(OPFLOW);
#endif
#endif

/*
OPFLOWModelRegisterAll - Registers all built OPFLOW models
Expand Down Expand Up @@ -117,11 +118,12 @@ PetscErrorCode OPFLOWModelRegisterAll(OPFLOW opflow) {
ierr = OPFLOWModelRegister(opflow, OPFLOWMODEL_PBPOLRAJAHIOP,
OPFLOWModelCreate_PBPOLRAJAHIOP);
CHKERRQ(ierr);
#endif

#if defined(EXAGO_ENABLE_HIOP_SPARSE)
ierr = OPFLOWModelRegister(opflow, OPFLOWMODEL_PBPOLRAJAHIOPSPARSE,
OPFLOWModelCreate_PBPOLRAJAHIOPSPARSE);
CHKERRQ(ierr);
#endif
#endif

opflow->OPFLOWModelRegisterAllCalled = PETSC_TRUE;
Expand Down

0 comments on commit b8dc29b

Please sign in to comment.