Skip to content

Commit 46b6ba3

Browse files
committed
[UR][CUDA][HIP] Use bool to check max local size
1 parent 8268a0b commit 46b6ba3

File tree

5 files changed

+13
-5
lines changed

5 files changed

+13
-5
lines changed

unified-runtime/source/adapters/cuda/device.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -505,7 +505,7 @@ UR_APIEXPORT ur_result_t UR_APICALL urDeviceGetInfo(ur_device_handle_t hDevice,
505505
// OpenCL's "local memory" maps most closely to CUDA's "shared memory".
506506
// CUDA has its own definition of "local memory", which maps to OpenCL's
507507
// "private memory".
508-
if (hDevice->getMaxChosenLocalMem()) {
508+
if (hDevice->hasMaxChosenLocalMem()) {
509509
return ReturnValue(
510510
static_cast<uint64_t>(hDevice->getMaxChosenLocalMem()));
511511
} else {

unified-runtime/source/adapters/cuda/device.hpp

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ struct ur_device_handle_t_ : ur::cuda::handle_base {
3434
int MaxRegsPerBlock{0};
3535
int MaxCapacityLocalMem{0};
3636
int MaxChosenLocalMem{0};
37+
bool HasMaxChosenLocalMem{false};
3738
uint32_t NumComputeUnits{0};
3839
std::once_flag NVMLInitFlag;
3940
std::optional<nvmlDevice_t> NVMLDevice;
@@ -73,7 +74,8 @@ struct ur_device_handle_t_ : ur::cuda::handle_base {
7374

7475
if (LocalMemSizePtr) {
7576
MaxChosenLocalMem = std::atoi(LocalMemSizePtr);
76-
if (MaxChosenLocalMem <= 0) {
77+
HasMaxChosenLocalMem = true;
78+
if (MaxChosenLocalMem < 0) {
7779
setErrorMessage(LocalMemSizePtrUR ? "Invalid value specified for "
7880
"UR_CUDA_MAX_LOCAL_MEM_SIZE"
7981
: "Invalid value specified for "
@@ -157,6 +159,8 @@ struct ur_device_handle_t_ : ur::cuda::handle_base {
157159

158160
int getMaxChosenLocalMem() const noexcept { return MaxChosenLocalMem; };
159161

162+
int hasMaxChosenLocalMem() const noexcept { return HasMaxChosenLocalMem; };
163+
160164
uint32_t getNumComputeUnits() const noexcept { return NumComputeUnits; };
161165

162166
// bookkeeping for mipmappedArray leaks in Mapping external Memory

unified-runtime/source/adapters/hip/device.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -382,7 +382,7 @@ UR_APIEXPORT ur_result_t UR_APICALL urDeviceGetInfo(ur_device_handle_t hDevice,
382382
// OpenCL's "local memory" maps most closely to HIP's "shared memory".
383383
// HIP has its own definition of "local memory", which maps to OpenCL's
384384
// "private memory".
385-
if (hDevice->getMaxChosenLocalMem()) {
385+
if (hDevice->hasMaxChosenLocalMem()) {
386386
return ReturnValue(
387387
static_cast<uint64_t>(hDevice->getMaxChosenLocalMem()));
388388
} else {

unified-runtime/source/adapters/hip/device.hpp

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ struct ur_device_handle_t_ : ur::hip::handle_base {
3333
int MaxBlockDimZ{0};
3434
int DeviceMaxLocalMem{0};
3535
int MaxChosenLocalMem{0};
36+
bool HasMaxChosenLocalMem{false};
3637
int ManagedMemSupport{0};
3738
int ConcurrentManagedAccess{0};
3839
bool HardwareImageSupport{false};
@@ -77,7 +78,8 @@ struct ur_device_handle_t_ : ur::hip::handle_base {
7778

7879
if (LocalMemSzPtr) {
7980
MaxChosenLocalMem = std::atoi(LocalMemSzPtr);
80-
if (MaxChosenLocalMem <= 0 || MaxChosenLocalMem > DeviceMaxLocalMem) {
81+
HasMaxChosenLocalMem = true;
82+
if (MaxChosenLocalMem < 0 || MaxChosenLocalMem > DeviceMaxLocalMem) {
8183
setErrorMessage(LocalMemSzPtrUR ? "Invalid value specified for "
8284
"UR_HIP_MAX_LOCAL_MEM_SIZE"
8385
: "Invalid value specified for "
@@ -114,6 +116,8 @@ struct ur_device_handle_t_ : ur::hip::handle_base {
114116

115117
int getMaxChosenLocalMem() const noexcept { return MaxChosenLocalMem; };
116118

119+
int hasMaxChosenLocalMem() const noexcept { return HasMaxChosenLocalMem; };
120+
117121
int getManagedMemSupport() const noexcept { return ManagedMemSupport; };
118122

119123
int getConcurrentManagedAccess() const noexcept {

unified-runtime/source/adapters/hip/enqueue.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1818,7 +1818,7 @@ setKernelParams(const ur_device_handle_t Device, const uint32_t WorkDim,
18181818
Kernel->setImplicitOffsetArg(sizeof(ImplicitOffset), ImplicitOffset);
18191819
}
18201820

1821-
if (Device->getMaxChosenLocalMem()) {
1821+
if (Device->hasMaxChosenLocalMem()) {
18221822
UR_CHECK_ERROR(hipFuncSetAttribute(
18231823
HIPFunc, hipFuncAttributeMaxDynamicSharedMemorySize,
18241824
Device->getMaxChosenLocalMem()));

0 commit comments

Comments
 (0)