File indexing completed on 2025-02-22 10:31:26
0001
0002
0003
0004
0005
0006
0007
0008 #pragma once
0009
0010 #include "corecel/data/AuxInterface.hh"
0011 #include "corecel/data/CollectionMirror.hh"
0012 #include "corecel/data/CollectionStateStore.hh"
0013 #include "corecel/data/ParamsDataInterface.hh"
0014
0015 #include "../OffloadData.hh"
0016
0017 namespace celeritas
0018 {
0019 namespace detail
0020 {
0021
0022
0023
0024
0025 class OffloadParams final : public AuxParamsInterface,
0026 public ParamsDataInterface<OffloadParamsData>
0027 {
0028 public:
0029
0030 OffloadParams(AuxId aux_id, OffloadOptions const& setup);
0031
0032
0033
0034
0035 std::string_view label() const final { return "optical-offload"; }
0036
0037 AuxId aux_id() const final { return aux_id_; }
0038
0039 UPState create_state(MemSpace, StreamId, size_type) const final;
0040
0041
0042
0043
0044
0045 HostRef const& host_ref() const final { return data_.host_ref(); }
0046
0047 DeviceRef const& device_ref() const final { return data_.device_ref(); }
0048
0049
0050 private:
0051 AuxId aux_id_;
0052 CollectionMirror<OffloadParamsData> data_;
0053 };
0054
0055
0056
0057
0058
0059 template<MemSpace M>
0060 struct OpticalOffloadState : public AuxStateInterface
0061 {
0062 CollectionStateStore<OffloadStateData, M> store;
0063 OffloadBufferSize buffer_size;
0064
0065
0066 explicit operator bool() const { return static_cast<bool>(store); }
0067 };
0068
0069
0070 }
0071 }