@@ -64,10 +64,7 @@ namespace alpaka
6464 using IDeviceQueue = uniform_cuda_hip::detail::QueueUniformCudaHipRtImpl<TApi>;
6565
6666 protected:
67- DevUniformCudaHipRt ()
68- : m_QueueRegistry{std::make_shared<alpaka::detail::QueueRegistry<IDeviceQueue>>()}
69- , m_deviceProperties{std::make_shared<alpaka::DeviceProperties>()}
70- , m_mutex(std::make_shared<std::mutex>())
67+ DevUniformCudaHipRt () : m_QueueRegistry{std::make_shared<alpaka::detail::QueueRegistry<IDeviceQueue>>()}
7168 {
7269 }
7370
@@ -109,16 +106,12 @@ namespace alpaka
109106 DevUniformCudaHipRt (int iDevice)
110107 : m_iDevice(iDevice)
111108 , m_QueueRegistry(std::make_shared<alpaka::detail::QueueRegistry<IDeviceQueue>>())
112- , m_deviceProperties(std::make_shared<alpaka::DeviceProperties>())
113- , m_mutex(std::make_shared<std::mutex>())
114109 {
115110 }
116111
117112 int m_iDevice;
118113
119114 std::shared_ptr<alpaka::detail::QueueRegistry<IDeviceQueue>> m_QueueRegistry;
120- std::shared_ptr<alpaka::DeviceProperties> m_deviceProperties;
121- std::shared_ptr<std::mutex> m_mutex;
122115 };
123116
124117 namespace trait
@@ -130,18 +123,18 @@ namespace alpaka
130123 ALPAKA_FN_HOST static auto getName (DevUniformCudaHipRt<TApi> const & dev) -> std::string
131124 {
132125 {
133- std::lock_guard<std::mutex> lock (* dev.m_mutex );
134- if (!dev.m_deviceProperties -> name .has_value ())
126+ std::lock_guard<std::mutex> lock (dev.m_QueueRegistry -> mutex () );
127+ if (!dev.m_QueueRegistry -> deviceProperties (). name .has_value ())
135128 {
136129 // There is cuda/hip-DeviceGetAttribute as faster alternative to cuda/hip-GetDeviceProperties
137130 // to get a single device property but it has no option to get the name
138131 typename TApi::DeviceProp_t devProp;
139132 ALPAKA_UNIFORM_CUDA_HIP_RT_CHECK (TApi::getDeviceProperties (&devProp, dev.getNativeHandle ()));
140- dev.m_deviceProperties -> name = std::string (devProp.name );
133+ dev.m_QueueRegistry -> deviceProperties (). name = std::string (devProp.name );
141134 }
142135 }
143136
144- return dev.m_deviceProperties -> name .value ();
137+ return dev.m_QueueRegistry -> deviceProperties (). name .value ();
145138 }
146139 };
147140
@@ -152,8 +145,8 @@ namespace alpaka
152145 ALPAKA_FN_HOST static auto getMemBytes (DevUniformCudaHipRt<TApi> const & dev) -> std::size_t
153146 {
154147 {
155- std::lock_guard<std::mutex> lock (* dev.m_mutex );
156- if (!dev.m_deviceProperties -> freeGlobalMem .has_value ())
148+ std::lock_guard<std::mutex> lock (dev.m_QueueRegistry -> mutex () );
149+ if (!dev.m_QueueRegistry -> deviceProperties (). freeGlobalMem .has_value ())
157150 {
158151 // Set the current device to wait for.
159152 ALPAKA_UNIFORM_CUDA_HIP_RT_CHECK (TApi::setDevice (dev.getNativeHandle ()));
@@ -163,12 +156,12 @@ namespace alpaka
163156
164157 ALPAKA_UNIFORM_CUDA_HIP_RT_CHECK (TApi::memGetInfo (&freeInternal, &totalInternal));
165158
166- dev.m_deviceProperties -> totalGlobalMem = totalInternal;
167- dev.m_deviceProperties -> freeGlobalMem = freeInternal;
159+ dev.m_QueueRegistry -> deviceProperties (). totalGlobalMem = totalInternal;
160+ dev.m_QueueRegistry -> deviceProperties (). freeGlobalMem = freeInternal;
168161 }
169162 }
170163
171- return dev.m_deviceProperties -> totalGlobalMem .value ();
164+ return dev.m_QueueRegistry -> deviceProperties (). totalGlobalMem .value ();
172165 }
173166 };
174167
@@ -179,8 +172,8 @@ namespace alpaka
179172 ALPAKA_FN_HOST static auto getFreeMemBytes (DevUniformCudaHipRt<TApi> const & dev) -> std::size_t
180173 {
181174 {
182- std::lock_guard<std::mutex> lock (* dev.m_mutex );
183- if (!dev.m_deviceProperties -> totalGlobalMem .has_value ())
175+ std::lock_guard<std::mutex> lock (dev.m_QueueRegistry -> mutex () );
176+ if (!dev.m_QueueRegistry -> deviceProperties (). totalGlobalMem .has_value ())
184177 {
185178 // Set the current device to wait for.
186179 ALPAKA_UNIFORM_CUDA_HIP_RT_CHECK (TApi::setDevice (dev.getNativeHandle ()));
@@ -190,12 +183,12 @@ namespace alpaka
190183
191184 ALPAKA_UNIFORM_CUDA_HIP_RT_CHECK (TApi::memGetInfo (&freeInternal, &totalInternal));
192185
193- dev.m_deviceProperties -> totalGlobalMem = totalInternal;
194- dev.m_deviceProperties -> freeGlobalMem = freeInternal;
186+ dev.m_QueueRegistry -> deviceProperties (). totalGlobalMem = totalInternal;
187+ dev.m_QueueRegistry -> deviceProperties (). freeGlobalMem = freeInternal;
195188 }
196189 }
197190
198- return dev.m_deviceProperties -> freeGlobalMem .value ();
191+ return dev.m_QueueRegistry -> deviceProperties (). freeGlobalMem .value ();
199192 }
200193 };
201194
@@ -206,14 +199,14 @@ namespace alpaka
206199 ALPAKA_FN_HOST static auto getWarpSizes (DevUniformCudaHipRt<TApi> const & dev) -> std::vector<std::size_t>
207200 {
208201 {
209- std::lock_guard<std::mutex> lock (* dev.m_mutex );
210- if (!dev.m_deviceProperties -> warpSizes .has_value ())
202+ std::lock_guard<std::mutex> lock (dev.m_QueueRegistry -> mutex () );
203+ if (!dev.m_QueueRegistry -> deviceProperties (). warpSizes .has_value ())
211204 {
212- dev.m_deviceProperties -> warpSizes = std::vector<std::size_t >{
205+ dev.m_QueueRegistry -> deviceProperties (). warpSizes = std::vector<std::size_t >{
213206 GetPreferredWarpSize<DevUniformCudaHipRt<TApi>>::getPreferredWarpSize (dev)};
214207 }
215208 }
216- return dev.m_deviceProperties -> warpSizes .value ();
209+ return dev.m_QueueRegistry -> deviceProperties (). warpSizes .value ();
217210 }
218211 };
219212
@@ -224,18 +217,18 @@ namespace alpaka
224217 ALPAKA_FN_HOST static auto getPreferredWarpSize (DevUniformCudaHipRt<TApi> const & dev) -> std::size_t
225218 {
226219 {
227- std::lock_guard<std::mutex> lock (* dev.m_mutex );
228- if (!dev.m_deviceProperties -> preferredWarpSize .has_value ())
220+ std::lock_guard<std::mutex> lock (dev.m_QueueRegistry -> mutex () );
221+ if (!dev.m_QueueRegistry -> deviceProperties (). preferredWarpSize .has_value ())
229222 {
230223 int warpSize = 0 ;
231224
232225 ALPAKA_UNIFORM_CUDA_HIP_RT_CHECK (
233226 TApi::deviceGetAttribute (&warpSize, TApi::deviceAttributeWarpSize, dev.getNativeHandle ()));
234- dev.m_deviceProperties -> preferredWarpSize = static_cast <std::size_t >(warpSize);
227+ dev.m_QueueRegistry -> deviceProperties (). preferredWarpSize = static_cast <std::size_t >(warpSize);
235228 }
236229 }
237230
238- return dev.m_deviceProperties -> preferredWarpSize .value ();
231+ return dev.m_QueueRegistry -> deviceProperties (). preferredWarpSize .value ();
239232 }
240233 };
241234
0 commit comments