File indexing completed on 2025-02-22 10:31:31
0001
0002
0003
0004
0005
0006
0007
0008 #pragma once
0009
0010 #include <string_view>
0011
0012 #include "corecel/Types.hh"
0013 #include "corecel/data/AuxInterface.hh"
0014 #include "corecel/data/CollectionMirror.hh"
0015 #include "corecel/data/ParamsDataInterface.hh"
0016 #include "celeritas/Types.hh"
0017 #include "celeritas/global/ActionInterface.hh"
0018
0019 #include "StatusCheckData.hh"
0020
0021 namespace celeritas
0022 {
0023
0024 class ActionRegistry;
0025 class CoreParams;
0026 template<MemSpace>
0027 class CoreState;
0028
0029
0030
0031
0032
0033
0034
0035
0036
0037
0038
0039
0040 class StatusChecker final : public AuxParamsInterface,
0041 public CoreBeginRunActionInterface,
0042 public ParamsDataInterface<StatusCheckParamsData>
0043 {
0044 public:
0045
0046 StatusChecker(ActionId action_id, AuxId aux_id);
0047
0048
0049
0050
0051 std::string_view label() const final { return "status-check"; }
0052
0053 std::string_view description() const final;
0054
0055
0056
0057
0058
0059 AuxId aux_id() const final { return aux_id_; }
0060
0061 UPState create_state(MemSpace m, StreamId id, size_type size) const final;
0062
0063
0064
0065
0066
0067 ActionId action_id() const final { return action_id_; }
0068
0069 void begin_run(CoreParams const&, CoreStateHost&) final;
0070
0071 void begin_run(CoreParams const&, CoreStateDevice&) final;
0072
0073
0074
0075
0076
0077 HostRef const& host_ref() const final { return data_.host_ref(); }
0078
0079 DeviceRef const& device_ref() const final { return data_.device_ref(); }
0080
0081
0082
0083 template<MemSpace M>
0084 void
0085 step(ActionId prev_action, CoreParams const&, CoreState<M>& state) const;
0086
0087 private:
0088 template<MemSpace M>
0089 using StatusStateRef = StatusCheckStateData<Ownership::reference, M>;
0090
0091
0092
0093 ActionId action_id_;
0094 AuxId aux_id_;
0095 CollectionMirror<StatusCheckParamsData> data_;
0096
0097
0098
0099 void begin_run_impl(CoreParams const&);
0100
0101 void launch_impl(CoreParams const&,
0102 CoreState<MemSpace::host>&,
0103 StatusStateRef<MemSpace::host> const&) const;
0104 void launch_impl(CoreParams const&,
0105 CoreState<MemSpace::device>&,
0106 StatusStateRef<MemSpace::device> const&) const;
0107 };
0108
0109
0110 }