Skip to content

Commit 678c546

Browse files
authored
[SYCLomatic] implement cuCtxCreate_v3 and cuCtxCreate_v4 (#2240)
Signed-off-by: Huang, Andy <[email protected]>
1 parent 9bf9af4 commit 678c546

File tree

4 files changed

+50
-7
lines changed

4 files changed

+50
-7
lines changed

clang/lib/DPCT/APINames.inc

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1573,8 +1573,8 @@ ENTRY(cuDevicePrimaryCtxSetFlags, cuDevicePrimaryCtxSetFlags_v2, false, NO_FLAG,
15731573

15741574
// Context Management
15751575
ENTRY(cuCtxCreate, cuCtxCreate, true, NO_FLAG, P4, "comment")
1576-
ENTRY(cuCtxCreate_v3, cuCtxCreate_v3, false, NO_FLAG, P4, "comment")
1577-
ENTRY(cuCtxCreate_v4, cuCtxCreate_v4, false, NO_FLAG, P4, "comment")
1576+
ENTRY(cuCtxCreate_v3, cuCtxCreate_v3, true, NO_FLAG, P4, "comment")
1577+
ENTRY(cuCtxCreate_v4, cuCtxCreate_v4, true, NO_FLAG, P4, "comment")
15781578
ENTRY(cuCtxDestroy, cuCtxDestroy_v2, true, NO_FLAG, P4, "DPCT1026/DPCT1027")
15791579
ENTRY(cuCtxGetApiVersion, cuCtxGetApiVersion, true, NO_FLAG, P4, "comment")
15801580
ENTRY(cuCtxGetCacheConfig, cuCtxGetCacheConfig, false, NO_FLAG, P4, "comment")
@@ -2304,4 +2304,4 @@ ENTRY(make_cuComplex, make_cuComplex, true, NO_FLAG, P4, "comment")
23042304
ENTRY(make_cuDoubleComplex, make_cuDoubleComplex, true, NO_FLAG, P4, "comment")
23052305
ENTRY(make_cuFloatComplex, make_cuFloatComplex, true, NO_FLAG, P4, "comment")
23062306
ENTRY(__assert_fail, __assert_fail, true, NO_FLAG, P4, "Successful")
2307-
ENTRY(__assertfail, __assertfail, true, NO_FLAG, P4, "Successful")
2307+
ENTRY(__assertfail, __assertfail, true, NO_FLAG, P4, "Successful")

clang/lib/DPCT/APINamesDriver.inc

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,38 @@ CONDITIONAL_FACTORY_ENTRY(
100100
"cuCtxCreate_v2", DEREF(0),
101101
CALL(MapNames::getDpctNamespace() + "push_device_for_curr_thread", ARG(2))))))
102102

103+
CONDITIONAL_FACTORY_ENTRY(
104+
checkIsUseNoQueueDevice(),
105+
WARNING_FACTORY_ENTRY(
106+
"cuCtxCreate_v3",
107+
ASSIGNABLE_FACTORY(ASSIGN_FACTORY_ENTRY("cuCtxCreate_v3", DEREF(0),
108+
ARG(4))),
109+
Diagnostics::FUNC_CALL_REMOVED, std::string("cuCtxCreate_v3"),
110+
std::string("it is redundant if it is migrated with option "
111+
"--helper-function-preference=no-queue-device which declares a global SYCL device "
112+
"and queue.")),
113+
FEATURE_REQUEST_FACTORY(
114+
HelperFeatureEnum::device_ext,
115+
ASSIGNABLE_FACTORY(ASSIGN_FACTORY_ENTRY(
116+
"cuCtxCreate_v3", DEREF(0),
117+
CALL(MapNames::getDpctNamespace() + "select_device", ARG(4))))))
118+
119+
CONDITIONAL_FACTORY_ENTRY(
120+
checkIsUseNoQueueDevice(),
121+
WARNING_FACTORY_ENTRY(
122+
"cuCtxCreate_v4",
123+
ASSIGNABLE_FACTORY(ASSIGN_FACTORY_ENTRY("cuCtxCreate_v4", DEREF(0),
124+
ARG(3))),
125+
Diagnostics::FUNC_CALL_REMOVED, std::string("cuCtxCreate_v4"),
126+
std::string("it is redundant if it is migrated with option "
127+
"--helper-function-preference=no-queue-device which declares a global SYCL device "
128+
"and queue.")),
129+
FEATURE_REQUEST_FACTORY(
130+
HelperFeatureEnum::device_ext,
131+
ASSIGNABLE_FACTORY(ASSIGN_FACTORY_ENTRY(
132+
"cuCtxCreate_v4", DEREF(0),
133+
CALL(MapNames::getDpctNamespace() + "select_device", ARG(3))))))
134+
103135
CONDITIONAL_FACTORY_ENTRY(
104136
checkIsUseNoQueueDevice(),
105137
WARNING_FACTORY_ENTRY(

clang/lib/DPCT/ASTTraversal.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14349,8 +14349,9 @@ REGISTER_RULE(DriverDeviceAPIRule, PassKind::PK_Migration)
1434914349
void DriverContextAPIRule::registerMatcher(ast_matchers::MatchFinder &MF) {
1435014350
auto contextAPI = [&]() {
1435114351
return hasAnyName(
14352-
"cuInit", "cuCtxCreate_v2", "cuCtxSetCurrent", "cuCtxGetCurrent",
14353-
"cuCtxSynchronize", "cuCtxDestroy_v2", "cuDevicePrimaryCtxRetain",
14352+
"cuInit", "cuCtxCreate_v2", "cuCtxCreate_v3", "cuCtxCreate_v4",
14353+
"cuCtxSetCurrent", "cuCtxGetCurrent", "cuCtxSynchronize",
14354+
"cuCtxDestroy_v2", "cuDevicePrimaryCtxRetain",
1435414355
"cuDevicePrimaryCtxRelease_v2", "cuDevicePrimaryCtxRelease",
1435514356
"cuCtxGetDevice", "cuCtxGetApiVersion", "cuCtxGetLimit",
1435614357
"cuCtxPushCurrent_v2", "cuCtxPopCurrent_v2");

clang/test/dpct/driver_context.cu

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
// UNSUPPORTED: cuda-8.0, cuda-9.0, cuda-9.1, cuda-9.2, cuda-10.0, cuda-10.1, cuda-10.2
2-
// UNSUPPORTED: v8.0, v9.0, v9.1, v9.2, v10.0, v10.1, v10.2
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, cuda-11.2, cuda-11.3, cuda-11.4, cuda-11.5, cuda-11.6, cuda-11.7, cuda-11.8, cuda-12.0, cuda-12.1, cuda-12.2, cuda-12.3, cuda-12.4
2+
// UNSUPPORTED: v8.0, v9.0, v9.1, v9.2, v10.0, v10.1, v10.2, v11.0, v11.1, v11.2, v11.3, v11.4, v11.5, v11.6, v11.7, v11.8, v12.0, v12.1, v12.2, v12.3, v12.4
33
// RUN: dpct --format-range=none -out-root %T/driver_context %s --cuda-include-path="%cuda-path/include" -- -std=c++14 -x cuda --cuda-host-only
44
// RUN: FileCheck %s --match-full-lines --input-file %T/driver_context/driver_context.dp.cpp
55
// RUN: %if build_lit %{icpx -c -fsycl %T/driver_context/driver_context.dp.cpp -o %T/driver_context/driver_context.dp.o %}
@@ -35,6 +35,16 @@ int main(){
3535
// CHECK: ctx = dpct::push_device_for_curr_thread(device);
3636
cuCtxCreate(&ctx, CU_CTX_LMEM_RESIZE_TO_MAX, device);
3737

38+
unsigned int flags = CU_CTX_MAP_HOST;
39+
CUexecAffinityParam* paramsArray;
40+
// CHECK: ctx = dpct::select_device(device);
41+
cuCtxCreate_v3(&ctx, paramsArray, 1, flags, device);
42+
43+
CUctxCreateParams* ctxCreateParams;
44+
// CHECK: ctx = dpct::select_device(device);
45+
cuCtxCreate_v4(&ctx, ctxCreateParams, flags, device);
46+
47+
3848
// CHECK: ctx = dpct::select_device(device);
3949
cuDevicePrimaryCtxRetain(&ctx, device);
4050

0 commit comments

Comments
 (0)