Skip to content

Commit 7770e22

Browse files
committed
Pass device to setDeviceProperties
1 parent 2927629 commit 7770e22

File tree

3 files changed

+30
-20
lines changed

3 files changed

+30
-20
lines changed

include/alpaka/dev/DevCpu.hpp

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -44,11 +44,7 @@ namespace alpaka
4444

4545
namespace detail
4646
{
47-
template<typename TApi>
48-
inline void setDeviceProperties(int, alpaka::DeviceProperties& devProperties);
49-
50-
template<>
51-
inline void setDeviceProperties<void>(int, alpaka::DeviceProperties& devProperties)
47+
inline void setDeviceProperties(alpaka::DevCpu const&, alpaka::DeviceProperties& devProperties)
5248
{
5349
devProperties.name = cpu::detail::getCpuName();
5450
devProperties.totalGlobalMem = cpu::detail::getTotalGlobalMemSizeBytes();
@@ -121,7 +117,7 @@ namespace alpaka
121117
{
122118
ALPAKA_FN_HOST static auto getName(DevCpu const& dev) -> std::string
123119
{
124-
return dev.m_spDevCpuImpl->deviceProperties()->name;
120+
return dev.m_spDevCpuImpl->deviceProperties(dev)->name;
125121
}
126122
};
127123

@@ -131,7 +127,7 @@ namespace alpaka
131127
{
132128
ALPAKA_FN_HOST static auto getMemBytes(DevCpu const& dev) -> std::size_t
133129
{
134-
return dev.m_spDevCpuImpl->deviceProperties()->totalGlobalMem;
130+
return dev.m_spDevCpuImpl->deviceProperties(dev)->totalGlobalMem;
135131
}
136132
};
137133

include/alpaka/dev/DevUniformCudaHipRt.hpp

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,10 @@
2929

3030
namespace alpaka
3131
{
32+
33+
template<typename TApi>
34+
class DevUniformCudaHipRt;
35+
3236
namespace trait
3337
{
3438
template<typename TPlatform, typename TSfinae>
@@ -38,13 +42,16 @@ namespace alpaka
3842
namespace detail
3943
{
4044
template<typename TApi>
41-
inline void setDeviceProperties(int iDevice, alpaka::DeviceProperties& devProperties)
45+
inline void setDeviceProperties(
46+
DevUniformCudaHipRt<TApi> const& device,
47+
alpaka::DeviceProperties& devProperties)
4248
{
4349
// There is cuda/hip-DeviceGetAttribute as faster alternative to
4450
// cuda/hip-GetDeviceProperties to get a single device property but it has no option to get
4551
// the name
52+
auto devHandle = device.getNativeHandle();
4653
typename TApi::DeviceProp_t devProp;
47-
ALPAKA_UNIFORM_CUDA_HIP_RT_CHECK(TApi::getDeviceProperties(&devProp, iDevice));
54+
ALPAKA_UNIFORM_CUDA_HIP_RT_CHECK(TApi::getDeviceProperties(&devProp, devHandle));
4855
devProperties.name = std::string(devProp.name);
4956

5057
std::size_t freeInternal(0u);
@@ -54,7 +61,7 @@ namespace alpaka
5461

5562
int warpSize = 0;
5663
ALPAKA_UNIFORM_CUDA_HIP_RT_CHECK(
57-
TApi::deviceGetAttribute(&warpSize, TApi::deviceAttributeWarpSize, iDevice));
64+
TApi::deviceGetAttribute(&warpSize, TApi::deviceAttributeWarpSize, devHandle));
5865
devProperties.warpSizes = std::vector<std::size_t>{static_cast<std::size_t>(warpSize)};
5966
devProperties.preferredWarpSize = static_cast<std::size_t>(warpSize);
6067
}
@@ -148,7 +155,7 @@ namespace alpaka
148155
{
149156
ALPAKA_FN_HOST static auto getName(DevUniformCudaHipRt<TApi> const& dev) -> std::string
150157
{
151-
return dev.m_QueueRegistry->template deviceProperties<TApi>(dev.getNativeHandle())->name;
158+
return dev.m_QueueRegistry->deviceProperties(dev)->name;
152159
}
153160
};
154161

@@ -158,7 +165,7 @@ namespace alpaka
158165
{
159166
ALPAKA_FN_HOST static auto getMemBytes(DevUniformCudaHipRt<TApi> const& dev) -> std::size_t
160167
{
161-
return dev.m_QueueRegistry->template deviceProperties<TApi>(dev.getNativeHandle())->totalGlobalMem;
168+
return dev.m_QueueRegistry->deviceProperties(dev)->totalGlobalMem;
162169
}
163170
};
164171

@@ -183,7 +190,7 @@ namespace alpaka
183190
{
184191
ALPAKA_FN_HOST static auto getWarpSizes(DevUniformCudaHipRt<TApi> const& dev) -> std::vector<std::size_t>
185192
{
186-
return dev.m_QueueRegistry->template deviceProperties<TApi>(dev.getNativeHandle())->warpSizes;
193+
return dev.m_QueueRegistry->deviceProperties(dev)->warpSizes;
187194
}
188195
};
189196

@@ -193,7 +200,7 @@ namespace alpaka
193200
{
194201
ALPAKA_FN_HOST static auto getPreferredWarpSize(DevUniformCudaHipRt<TApi> const& dev) -> std::size_t
195202
{
196-
return dev.m_QueueRegistry->template deviceProperties<TApi>(dev.getNativeHandle())->preferredWarpSize;
203+
return dev.m_QueueRegistry->deviceProperties(dev)->preferredWarpSize;
197204
}
198205
};
199206

include/alpaka/dev/common/QueueRegistry.hpp

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,19 @@
1313
#include <mutex>
1414
#include <optional>
1515

16-
namespace alpaka::detail
16+
namespace alpaka
1717
{
18+
class DevCpu;
19+
20+
template<typename TApi>
21+
class DevUniformCudaHipRt;
22+
} // namespace alpaka
1823

19-
inline void setDeviceProperties(int iDevice, alpaka::DeviceProperties& devProperties);
24+
namespace alpaka::detail
25+
{
26+
inline void setDeviceProperties(alpaka::DevCpu const&, alpaka::DeviceProperties&);
2027
template<typename TApi>
21-
inline void setDeviceProperties(int iDevice, alpaka::DeviceProperties& devProperties);
28+
inline void setDeviceProperties(alpaka::DevUniformCudaHipRt<TApi> const&, alpaka::DeviceProperties&);
2229

2330
//! The CPU/GPU device queue registry implementation.
2431
//!
@@ -59,15 +66,15 @@ namespace alpaka::detail
5966
m_queues.push_back(spQueue);
6067
}
6168

62-
template<typename TApi = void>
63-
auto deviceProperties(int iDevice = 0u) -> std::optional<alpaka::DeviceProperties>&
69+
template<typename TDev>
70+
auto deviceProperties(TDev const& device) -> std::optional<alpaka::DeviceProperties>&
6471
{
6572
std::call_once(
6673
m_onceFlag,
6774
[&]() noexcept
6875
{
6976
m_deviceProperties = std::make_optional<alpaka::DeviceProperties>();
70-
setDeviceProperties<TApi>(iDevice, *m_deviceProperties);
77+
setDeviceProperties(device, *m_deviceProperties);
7178
});
7279

7380
return m_deviceProperties;

0 commit comments

Comments
 (0)