LCOV - code coverage report
Current view: top level - src/kokkos/userobjects - KokkosReducerBase.K (source / functions) Hit Total Coverage
Test: idaholab/moose framework: #32971 (54bef8) with base c6cf66 Lines: 17 18 94.4 %
Date: 2026-05-29 20:35:17 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        1174 : ReducerBase::ReducerBase(const MooseObject * object)
      18         646 :   : MeshHolder(*object->getMooseApp().feProblem().mesh().getKokkosMesh()),
      19         646 :     AssemblyHolder(object->getMooseApp().feProblem().kokkosAssembly()),
      20         646 :     SystemHolder(object->getMooseApp().feProblem().getKokkosSystems()),
      21        2584 :     _reducer_object(object)
      22             : {
      23        1174 : }
      24             : 
      25        7931 : ReducerBase::ReducerBase(const ReducerBase & reducer)
      26             :   : MeshHolder(reducer),
      27             :     AssemblyHolder(reducer),
      28             :     SystemHolder(reducer),
      29        4744 :     _reducer_object(reducer._reducer_object)
      30             : {
      31        7931 : }
      32             : 
      33             : void
      34        2249 : ReducerBase::computeReducer()
      35             : {
      36        2249 :   if (!_reduction_buffer.is_allocated())
      37           0 :     _reducer_object->mooseError("Reduction buffer was not allocated.");
      38             : 
      39        2249 :   Policy policy(0, numReducerThreads());
      40             : 
      41        2249 :   if (!_reducer_dispatcher)
      42         427 :     _reducer_dispatcher =
      43         537 :         DispatcherRegistry::build<ReducerLoop>(_reducer_object, _reducer_object->type());
      44             : 
      45        2249 :   _reducer_dispatcher->parallelReduce(policy, _reduction_buffer);
      46        2249 : }
      47             : 
      48             : } // namespace Moose::Kokkos

Generated by: LCOV version 1.14