Skip to content

Commit

Permalink
Arcane commandline changes for axl (#223)
Browse files Browse the repository at this point in the history
  • Loading branch information
mohd-afeef-badri authored Feb 25, 2025
1 parent 799e768 commit 36f8939
Show file tree
Hide file tree
Showing 12 changed files with 104 additions and 286 deletions.
107 changes: 84 additions & 23 deletions modules/poisson/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -35,36 +35,97 @@ endforeach()

enable_testing()

add_test(NAME [poisson]2D_pntDirichlet COMMAND Poisson inputs/perforatedSquare.pointDirichlet.2D.arc)
add_test(NAME [poisson]2D_pntDirichlet COMMAND Poisson
inputs/perforatedSquare.pointDirichlet.2D.arc)

if(FEMUTILS_HAS_SOLVER_BACKEND_PETSC)
add_test(NAME [poisson]2D COMMAND Poisson inputs/circle.2D.arc)
add_test(NAME [poisson]2D_neumann COMMAND Poisson inputs/circle.neumann.2D.arc)
add_test(NAME [poisson]3D COMMAND Poisson inputs/sphere.3D.arc)
add_test(NAME [poisson]3D_neumann COMMAND Poisson inputs/sphere.neumann.3D.arc)
add_test(NAME [poisson]2D_petsc COMMAND Poisson -A,petsc_flags=-ksp_monitor inputs/circle.2D.arc)
add_test(NAME [poisson]2D_assembly_only COMMAND Poisson -A,solve_linear_system=FALSE inputs/circle.2D.arc)
add_test(NAME [poisson]2D_no_cross_validation COMMAND Poisson -A,cross_validation=FALSE inputs/circle.2D.arc)
add_test(NAME [poisson]2D_parse_and_exit COMMAND Poisson -A,assemble_linear_system=FALSE -A,solve_linear_system=FALSE -A,cross_validation=FALSE inputs/circle.2D.arc)

arcanefem_add_gpu_test(NAME [poisson]2D_bsr COMMAND Poisson ARGS -A,matrix_format=BSR inputs/circle.2D.arc)
arcanefem_add_gpu_test(NAME [poisson]2D_bsr_atomicFree COMMAND Poisson ARGS -A,matrix_format=AF-BSR inputs/circle.2D.arc)
arcanefem_add_gpu_test(NAME [poisson]3D_bsr COMMAND Poisson ARGS -A,matrix_format=BSR inputs/sphere.3D.arc)
arcanefem_add_gpu_test(NAME [poisson]3D_bsr_atomicFree COMMAND Poisson ARGS -A,matrix_format=AF-BSR inputs/sphere.3D.arc)
add_test(NAME [poisson]2D COMMAND Poisson
inputs/circle.2D.arc)
add_test(NAME [poisson]2D_neumann COMMAND Poisson
inputs/circle.neumann.2D.arc)
add_test(NAME [poisson]3D COMMAND Poisson
inputs/sphere.3D.arc)
add_test(NAME [poisson]3D_neumann COMMAND Poisson
inputs/sphere.neumann.3D.arc)
add_test(NAME [poisson]2D_petsc COMMAND Poisson
-A,//fem/petsc-flags=-ksp_monitor
inputs/circle.2D.arc)
add_test(NAME [poisson]2D_assembly_only COMMAND Poisson
-A,//fem/solve-linear-system=false
-A,//fem/cross-validation=false
inputs/circle.2D.arc)
add_test(NAME [poisson]2D_no_cross_validation COMMAND Poisson
-A,//fem/cross-validation=false
inputs/circle.2D.arc)
add_test(NAME [poisson]2D_parse_and_exit COMMAND Poisson
-A,//fem/assemble-linear-system=false
-A,//fem/solve-linear-system=false
-A,//fem/cross-validation=false
inputs/circle.2D.arc)

arcanefem_add_gpu_test(NAME [poisson]2D_bsr COMMAND Poisson ARGS
-A,//fem/matrix-format=BSR
inputs/circle.2D.arc)
arcanefem_add_gpu_test(NAME [poisson]2D_af-bsr COMMAND Poisson ARGS
-A,//fem/matrix-format=AF-BSR
inputs/circle.2D.arc)
arcanefem_add_gpu_test(NAME [poisson]3D_bsr COMMAND Poisson ARGS
-A,//fem/matrix-format=BSR
inputs/sphere.3D.arc)
arcanefem_add_gpu_test(NAME [poisson]3D_af-bsr COMMAND Poisson ARGS
-A,//fem/matrix-format=AF-BSR
inputs/sphere.3D.arc)

if(FEMUTILS_HAS_PARALLEL_SOLVER)
add_test(NAME [poisson]2D_2p COMMAND ${MPIEXEC_EXECUTABLE} -n 2 ./Poisson inputs/circle.2D.arc)
add_test(NAME [poisson]3D_2p COMMAND ${MPIEXEC_EXECUTABLE} -n 2 ./Poisson inputs/sphere.3D.arc)
add_test(NAME [poisson]2D_2p COMMAND ${MPIEXEC_EXECUTABLE} -n 2 ./Poisson
inputs/circle.2D.arc)
add_test(NAME [poisson]3D_2p COMMAND ${MPIEXEC_EXECUTABLE} -n 2 ./Poisson
inputs/sphere.3D.arc)
endif()

endif()

if (FEMUTILS_HAS_SOLVER_BACKEND_HYPRE)
arcanefem_add_gpu_test(NAME [poisson]2D_pntDirichlet_bsr_hypre COMMAND Poisson ARGS -A,matrix_format=BSR inputs/perforatedSquare.pointDirichlet.2D.hypre.arc)
arcanefem_add_gpu_test(NAME [poisson]2D_bsr_hypre COMMAND Poisson ARGS -A,matrix_format=BSR inputs/circle.2D.hypre.arc)
arcanefem_add_gpu_test(NAME [poisson]2D_neumann_bsr_hypre COMMAND Poisson ARGS -A,matrix_format=BSR inputs/circle.neumann.2D.hypre.arc)
arcanefem_add_gpu_test(NAME [poisson]2D_bsr_atomicFree_hypre COMMAND Poisson ARGS -A,matrix_format=AF-BSR inputs/circle.2D.hypre.arc)
arcanefem_add_gpu_test(NAME [poisson]3D_bsr_hypre_gpu COMMAND Poisson ARGS -A,matrix_format=BSR inputs/sphere.3D.hypre.arc)
arcanefem_add_gpu_test(NAME [poisson]3D_neumann_bsr_hypre COMMAND Poisson ARGS -A,matrix_format=BSR inputs/sphere.neumann.3D.hypre.arc)
arcanefem_add_gpu_test(NAME [poisson]3D_bsr_atomicFree_hypre_gpu COMMAND Poisson ARGS -A,matrix_format=AF-BSR inputs/sphere.3D.hypre.arc)
set(SOLVER_HYPRE_CG_2D
-A,//fem/linear-system/@name=HypreLinearSystem
-A,//fem/linear-system/solver=cg
-A,//fem/linear-system/atol=1e-15
-A,//fem/linear-system/rtol=0)

set(SOLVER_HYPRE_CG_3D
-A,//fem/linear-system/@name=HypreLinearSystem
-A,//fem/linear-system/solver=cg
-A,//fem/linear-system/preconditioner=amg
-A,//fem/linear-system/amg-threshold=0.55
-A,//fem/linear-system/atol=1e-15
-A,//fem/linear-system/rtol=0)

arcanefem_add_gpu_test(NAME [poisson]2D_pntDirichlet_bsr_hypre COMMAND Poisson ARGS
-A,//fem/matrix-format=BSR
${SOLVER_HYPRE_CG_2D}
inputs/perforatedSquare.pointDirichlet.2D.arc)
arcanefem_add_gpu_test(NAME [poisson]2D_bsr_hypre COMMAND Poisson ARGS
-A,//fem/matrix-format=BSR
${SOLVER_HYPRE_CG_2D}
inputs/circle.2D.arc)
arcanefem_add_gpu_test(NAME [poisson]2D_neumann_bsr_hypre COMMAND Poisson ARGS
-A,//fem/matrix-format=BSR
${SOLVER_HYPRE_CG_2D}
inputs/circle.neumann.2D.arc)
arcanefem_add_gpu_test(NAME [poisson]2D_bsr_atomicFree_hypre COMMAND Poisson ARGS
-A,//fem/matrix-format=AF-BSR
${SOLVER_HYPRE_CG_2D}
inputs/circle.2D.arc)
arcanefem_add_gpu_test(NAME [poisson]3D_bsr_hypre_gpu COMMAND Poisson ARGS
-A,//fem/matrix-format=BSR
${SOLVER_HYPRE_CG_3D}
inputs/sphere.3D.arc)
arcanefem_add_gpu_test(NAME [poisson]3D_neumann_bsr_hypre COMMAND Poisson ARGS
-A,//fem/matrix-format=BSR
${SOLVER_HYPRE_CG_3D}
inputs/sphere.neumann.3D.arc)
arcanefem_add_gpu_test(NAME [poisson]3D_bsr_atomicFree_hypre_gpu COMMAND Poisson ARGS
-A,//fem/matrix-format=AF-BSR
${SOLVER_HYPRE_CG_3D}
inputs/sphere.3D.arc)
endif()
16 changes: 16 additions & 0 deletions modules/poisson/Fem.axl
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,22 @@
<description>Which matrix format to use DOK|BSR|AF-BSR.</description>
</simple>

<simple name="petsc-flags" type="string" default="" optional="true">
<description>Flags for PETSc from commandline.</description>
</simple>

<simple name="solve-linear-system" type="bool" default="true" optional="true">
<description>Boolean to enable linear system solving.</description>
</simple>

<simple name="assemble-linear-system" type="bool" default="true" optional="true">
<description>Boolean to enable linear system assembly.</description>
</simple>

<simple name="cross-validation" type="bool" default="true" optional="true">
<description>Boolean to enable cross validation.</description>
</simple>

<!-- Linear system service instance -->
<service-instance name="linear-system" type="Arcane::FemUtils::IDoFLinearSystemFactory" default="AlephLinearSystem" />

Expand Down
45 changes: 4 additions & 41 deletions modules/poisson/FemModule.cc
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,10 @@ startInit()
m_dof_family = m_dofs_on_nodes.dofFamily();

m_matrix_format = options()->matrixFormat();
_handleCommandLineFlags();
m_assemble_linear_system = options()->assembleLinearSystem();
m_solve_linear_system = options()->solveLinearSystem();
m_cross_validation = options()->crossValidation();
m_petsc_flags = options()->petscFlags();

elapsedTime = platform::getRealTime() - elapsedTime;
_printArcaneFemTime("[ArcaneFem-Timer] initialize", elapsedTime);
Expand Down Expand Up @@ -479,46 +482,6 @@ _setPetscFlagsFromCommandline()
m_linear_system.setSolverCommandLineArguments(args);
}

/*---------------------------------------------------------------------------*/
/**
* @brief Function to hande commandline flags
*/
/*---------------------------------------------------------------------------*/

void FemModule::
_handleCommandLineFlags()
{
info() << "[ArcaneFem-Info] Started module _handleCommandLineFlags()";
ParameterList parameter_list = this->subDomain()->application()->applicationInfo().commandLineArguments().parameters();

if (parameter_list.getParameterOrNull("assemble_linear_system") == "FALSE") {
m_assemble_linear_system = false;
info() << "[ArcaneFem-Info] Linear system not assembled (assemble_linear_system = FALSE)";
}

if (parameter_list.getParameterOrNull("solve_linear_system") == "FALSE") {
m_solve_linear_system = false;
m_cross_validation = false;
info() << "[ArcaneFem-Info] Linear system assembled but not solved (solve_linear_system = FALSE)";
}

if (parameter_list.getParameterOrNull("cross_validation") == "FALSE") {
m_cross_validation = false;
info() << "[ArcaneFem-Info] Cross validation disabled (cross_validation = FALSE)";
}

m_petsc_flags = parameter_list.getParameterOrNull("petsc_flags");
if (m_petsc_flags != NULL) {
info() << "[ArcaneFem-Info] PETSc flags the user provided will be used (petsc_flags != NULL)";
}

String matrix_format_from_commandline = parameter_list.getParameterOrNull("matrix_format");
if (matrix_format_from_commandline != NULL){
m_matrix_format = matrix_format_from_commandline;
info() << "[ArcaneFem-Info] Using commandline format for matrix format (matrix_format != NULL)";
}
}

/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/

Expand Down
4 changes: 0 additions & 4 deletions modules/poisson/inputs/circle.2D.arc
Original file line number Diff line number Diff line change
Expand Up @@ -28,9 +28,5 @@
<value>0.5</value>
</dirichlet>
</boundary-conditions>
<linear-system>
<solver-backend>petsc</solver-backend>
<epsilon>1e-15</epsilon>
</linear-system>
</fem>
</case>
38 changes: 0 additions & 38 deletions modules/poisson/inputs/circle.2D.hypre.arc

This file was deleted.

4 changes: 0 additions & 4 deletions modules/poisson/inputs/circle.neumann.2D.arc
Original file line number Diff line number Diff line change
Expand Up @@ -33,9 +33,5 @@
<valueY>1.65</valueY>
</neumann>
</boundary-conditions>
<linear-system>
<solver-backend>petsc</solver-backend>
<epsilon>1e-15</epsilon>
</linear-system>
</fem>
</case>
42 changes: 0 additions & 42 deletions modules/poisson/inputs/circle.neumann.2D.hypre.arc

This file was deleted.

This file was deleted.

4 changes: 0 additions & 4 deletions modules/poisson/inputs/sphere.3D.arc
Original file line number Diff line number Diff line change
Expand Up @@ -27,9 +27,5 @@
<value>0.5</value>
</dirichlet>
</boundary-conditions>
<linear-system>
<solver-backend>petsc</solver-backend>
<epsilon>1e-15</epsilon>
</linear-system>
</fem>
</case>
Loading

0 comments on commit 36f8939

Please sign in to comment.