62 friend ::Arcane::Accelerator::Runner;
71 explicit Lock(RunnerImpl* p)
72 : m_mutex_ptr(&p->m_pool_mutex)
78 m_mutex_ptr->unlock();
80 Lock(
const Lock&) =
delete;
81 Lock& operator=(
const Lock&) =
delete;
85 std::mutex* m_mutex_ptr =
nullptr;
91 : m_internal_api(this)
106 RunQueueImplStack* getPool();
107 void addTime(
double v)
113 double cumulativeCommandTime()
const
116 return static_cast<double>(x) / 1.0e9;
119 impl::IRunnerRuntime* runtime()
const {
return m_runtime; }
123 bool isInit()
const {
return m_is_init; }
125 DeviceId deviceId()
const {
return m_device_id; }
126 const DeviceInfo& deviceInfo()
const {
return m_device_info; }
130 void _internalPutRunQueueImplInPool(RunQueueImpl* p);
131 RunQueueImpl* _internalCreateOrGetRunQueueImpl();
132 RunQueueImpl* _internalCreateOrGetRunQueueImpl(
const RunQueueBuildInfo& bi);
133 IRunQueueEventImpl* _createEvent();
134 IRunQueueEventImpl* _createEventWithTimer();
135 RunnerInternal* _internalApi() {
return &m_internal_api; }
140 bool m_is_init =
false;
142 DeviceId m_device_id;
143 DeviceInfo m_device_info;
144 impl::IRunnerRuntime* m_runtime =
nullptr;
145 RunQueueImplStack m_run_queue_pool;
146 std::mutex m_pool_mutex;
161 void _checkIsInit()
const;