64 friend ::Arcane::Accelerator::Runner;
73 explicit Lock(RunnerImpl* p)
74 : m_mutex_ptr(&p->m_pool_mutex)
80 m_mutex_ptr->unlock();
82 Lock(
const Lock&) =
delete;
83 Lock& operator=(
const Lock&) =
delete;
87 std::mutex* m_mutex_ptr =
nullptr;
93 : m_internal_api(this)
108 RunQueueImplStack* getPool();
109 void addTime(
double v)
115 double cumulativeCommandTime()
const
118 return static_cast<double>(x) / 1.0e9;
121 impl::IRunnerRuntime* runtime()
const {
return m_runtime; }
125 bool isInit()
const {
return m_is_init; }
127 DeviceId deviceId()
const {
return m_device_id; }
128 const DeviceInfo& deviceInfo()
const {
return m_device_info; }
132 void _internalPutRunQueueImplInPool(RunQueueImpl* p);
133 RunQueueImpl* _internalCreateOrGetRunQueueImpl();
134 RunQueueImpl* _internalCreateOrGetRunQueueImpl(
const RunQueueBuildInfo& bi);
135 IRunQueueEventImpl* _createEvent();
136 IRunQueueEventImpl* _createEventWithTimer();
137 RunnerInternal* _internalApi() {
return &m_internal_api; }
142 bool m_is_init =
false;
144 DeviceId m_device_id;
145 DeviceInfo m_device_info;
146 impl::IRunnerRuntime* m_runtime =
nullptr;
147 RunQueueImplStack m_run_queue_pool;
148 std::mutex m_pool_mutex;
163 void _checkIsInit()
const;