LCOV - code coverage report
Current view: top level - src/kokkos/userobjects - KokkosReducerBase.K (source / functions) Hit Total Coverage
Test: idaholab/moose framework: #33416 (b10b36) with base 9fbd27 Lines: 17 18 94.4 %
Date: 2026-07-23 16:15:30 Functions: 3 3 100.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : //* This file is part of the MOOSE framework
       2             : //* https://mooseframework.inl.gov
       3             : //*
       4             : //* All rights reserved, see COPYRIGHT for full restrictions
       5             : //* https://github.com/idaholab/moose/blob/master/COPYRIGHT
       6             : //*
       7             : //* Licensed under LGPL 2.1, please see LICENSE for details
       8             : //* https://www.gnu.org/licenses/lgpl-2.1.html
       9             : 
      10             : #include "KokkosReducerBase.h"
      11             : 
      12             : #include "FEProblemBase.h"
      13             : 
      14             : namespace Moose::Kokkos
      15             : {
      16             : 
      17        1189 : ReducerBase::ReducerBase(const MooseObject * object)
      18         654 :   : MeshHolder(*object->getMooseApp().feProblem().mesh().getKokkosMesh()),
      19         654 :     AssemblyHolder(object->getMooseApp().feProblem().kokkosAssembly()),
      20         654 :     FESystemHolder(object->getMooseApp().feProblem().getKokkosFESystems()),
      21        2616 :     _reducer_object(object)
      22             : {
      23        1189 : }
      24             : 
      25        7983 : ReducerBase::ReducerBase(const ReducerBase & reducer)
      26             :   : MeshHolder(reducer),
      27             :     AssemblyHolder(reducer),
      28             :     FESystemHolder(reducer),
      29        4772 :     _reducer_object(reducer._reducer_object)
      30             : {
      31        7983 : }
      32             : 
      33             : void
      34        2262 : ReducerBase::computeReducer()
      35             : {
      36        2262 :   if (!_reduction_buffer.is_allocated())
      37           0 :     _reducer_object->mooseError("Reduction buffer was not allocated.");
      38             : 
      39        2262 :   Policy policy(0, numReducerThreads());
      40             : 
      41        2262 :   if (!_reducer_dispatcher)
      42         433 :     _reducer_dispatcher =
      43         544 :         DispatcherRegistry::build<ReducerLoop>(_reducer_object, _reducer_object->type());
      44             : 
      45        2262 :   _reducer_dispatcher->parallelReduce(policy, _reduction_buffer);
      46        2262 : }
      47             : 
      48             : } // namespace Moose::Kokkos

Generated by: LCOV version 1.14