RTC Toolkit 6.0.0-pre2
Loading...
Searching...
No Matches
computation.hpp
Go to the documentation of this file.
1
12
13#ifndef RTCTK_EXAMPLEDATATASK_GPU_COMPUTATION_HPP
14#define RTCTK_EXAMPLEDATATASK_GPU_COMPUTATION_HPP
15
18
22
23#include <chrono>
24#include <mutex>
25#include <optional>
26#include <vector>
27
28namespace rtctk::exampleDataTask {
29
30// the type of the shm supertopic
32
33// type of the user-owned sample buffer
34using BufferType = std::vector<decltype(decltype(TopicType::wfs)::slopes)>;
35
36class Computation : public dataTask::ComputationBase<TopicType> {
37public:
39
40 template <typename T>
42
43 struct Result {
44 std::vector<float> avg_slopes;
45 std::vector<float> avg_modes;
46 };
47
48 struct ResultIf {
49 virtual ~ResultIf() = default;
50 virtual void OnResultAvailable(const Result& result) = 0;
51 };
52
54 ResultIf& publisher,
55 const std::string& shm_name,
56 size_t to_read,
57 size_t to_skip,
58 std::chrono::milliseconds sample_timeout,
59 std::optional<numapp::NumaPolicies> thread_policies,
60 size_t n_slopes,
61 size_t n_modes,
62 size_t gpu);
63
65
67
68private:
69 void OnThreadStart() override;
70
71 void OnCycleStart(size_t to_read) override;
72
73 void CopyData(size_t sample_idx, const TopicType& sample) noexcept override;
74
75 void Compute() override;
76
77 void Publish() override;
78
79 ResultIf& m_publisher;
80 size_t m_slopes;
81 size_t m_modes;
82 std::mutex m_mutex; // protects m_s2m_matrix from concurrent access
83 MatrixBuffer<float> m_s2m_matrix;
84 Result m_result;
85
86 GpuLib m_gpu_comp;
87};
88
89} // namespace rtctk::exampleDataTask
90
91#endif // RTCTK_EXAMPLEDATATASK_GPU_COMPUTATION_HPP
Definition gpuLib.hpp:25
A buffer class representing 2D matrix data.
Definition matrixBuffer.hpp:28
Container class that holds services of any type.
Definition serviceContainer.hpp:39
Base class for Data Task computations.
Definition computationBase.hpp:185
TopicType TopicType
Definition computationBase.hpp:187
Computation(ServiceContainer &services, ResultIf &publisher, const std::string &shm_name, size_t to_read, size_t to_skip, std::chrono::milliseconds sample_timeout, std::optional< numapp::NumaPolicies > thread_policies, size_t n_slopes, size_t n_modes, size_t gpu)
Definition computation.cpp:24
rtctk::componentFramework::MatrixBuffer< T > MatrixBuffer
Definition computation.hpp:41
~Computation()
Definition computation.cpp:41
rtctk::componentFramework::ServiceContainer ServiceContainer
Definition computation.hpp:38
void SetSlopesToModesMatrix(MatrixBuffer< float > &&s2m_matrix)
Definition computation.cpp:45
Computation()
Definition computation.hpp:39
Base class for Data Task computations.
GPU library for computation.
Declaration of the MatrixBuffer template class used in APIs.
Definition businessLogic.cpp:27
std::vector< decltype(decltype(TopicType::wfs)::slopes)> BufferType
Definition computation.hpp:34
rtctk::exampleTopic::ScaoLoopTopic TopicType
Definition computation.hpp:31
A container that can hold any type of service.
virtual void OnResultAvailable(const Result &result)=0
Definition computation.hpp:43
std::vector< float > avg_modes
Definition computation.hpp:45
std::vector< float > avg_slopes
Definition computation.hpp:44
Definition topics.hpp:33
WfsLoopBaseTopic< N_SUBAPS > wfs
Definition topics.hpp:38
Common topic definitions used in various examples.