Skip to content

Commit 234abeb

Browse files
authored
[SYCLomatic] Support migration of get VIRTUAL_MEMORY_MANAGEMENT_SUPPORTED attribute. (#2380)
Signed-off-by: Tang, Jiajun [email protected]
1 parent e705ded commit 234abeb

File tree

3 files changed

+23
-2
lines changed

3 files changed

+23
-2
lines changed

clang/lib/DPCT/CallExprRewriterCommon.h

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -993,8 +993,11 @@ inline std::function<bool(const CallExpr *C)>
993993
checkIsMigratedToHasAspect(size_t index) {
994994
return [=](const CallExpr *C) -> bool {
995995
if (getStmtSpelling(C->getArg(index))
996-
.find("CU_DEVICE_ATTRIBUTE_CAN_MAP_HOST_MEMORY") !=
997-
std::string::npos) {
996+
.find("CU_DEVICE_ATTRIBUTE_CAN_MAP_HOST_MEMORY") !=
997+
std::string::npos ||
998+
getStmtSpelling(C->getArg(index))
999+
.find("CU_DEVICE_ATTRIBUTE_VIRTUAL_MEMORY_MANAGEMENT_"
1000+
"SUPPORTED") != std::string::npos) {
9981001
return true;
9991002
}
10001003
return false;

clang/lib/DPCT/MapNames.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1486,6 +1486,9 @@ void MapNames::setExplicitNamespaceMap(
14861486
{"CU_DEVICE_ATTRIBUTE_MAX_BLOCK_DIM_Z",
14871487
std::make_shared<EnumNameRule>("get_max_work_item_sizes",
14881488
HelperFeatureEnum::device_ext)},
1489+
{"CU_DEVICE_ATTRIBUTE_VIRTUAL_MEMORY_MANAGEMENT_SUPPORTED",
1490+
std::make_shared<EnumNameRule>(
1491+
"has(sycl::aspect::ext_oneapi_virtual_mem)")},
14891492
{"CU_CTX_MAP_HOST", std::make_shared<EnumNameRule>("0")},
14901493
{"CU_CTX_SCHED_BLOCKING_SYNC", std::make_shared<EnumNameRule>("0")},
14911494
{"CU_CTX_SCHED_SPIN", std::make_shared<EnumNameRule>("0")},
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
// UNSUPPORTED: cuda-8.0, cuda-9.0, cuda-9.1, cuda-9.2, cuda-10.0, cuda-10.1, cuda-10.2, cuda-11.0, cuda-11.1
2+
// UNSUPPORTED: v8.0, v9.0, v9.1, v9.2, v10.0, v10.1, v10.2, v11.0, v11.1
3+
// RUN: dpct --format-range=none -out-root %T/driver_device_after11.2 %s --cuda-include-path="%cuda-path/include" -- -std=c++14 -x cuda --cuda-host-only
4+
// RUN: FileCheck %s --match-full-lines --input-file %T/driver_device_after11.2/driver_device_after11.2.dp.cpp
5+
// RUN: %if build_lit %{icpx -c -fsycl %T/driver_device_after11.2/driver_device_after11.2.dp.cpp -o %T/driver_device_after11.2/driver_device_after11.2.dp.o %}
6+
7+
#include <cuda.h>
8+
9+
int main() {
10+
int i;
11+
CUdevice d;
12+
// CHECK: i = dpct::get_device(d).has(sycl::aspect::ext_oneapi_virtual_mem);
13+
cuDeviceGetAttribute(&i, CU_DEVICE_ATTRIBUTE_VIRTUAL_MEMORY_MANAGEMENT_SUPPORTED, d);
14+
return 0;
15+
}

0 commit comments

Comments
 (0)