Skip to content

Commit 9cd6040

Browse files
committed
fix return codes in CUDA not impl ops
1 parent e9fdb84 commit 9cd6040

File tree

3 files changed

+46
-71
lines changed

3 files changed

+46
-71
lines changed

.github/workflows/pr_push.yml

Lines changed: 1 addition & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -17,85 +17,27 @@ permissions:
1717
packages: read
1818

1919
jobs:
20-
CodeChecks:
21-
uses: ./.github/workflows/reusable_checks.yml
22-
FastBuild:
23-
name: Fast builds
24-
needs: [CodeChecks]
25-
uses: ./.github/workflows/reusable_fast.yml
26-
Build:
27-
name: Basic builds
28-
needs: [FastBuild]
29-
uses: ./.github/workflows/reusable_basic.yml
30-
DevDax:
31-
needs: [FastBuild]
32-
uses: ./.github/workflows/reusable_dax.yml
33-
MultiNuma:
34-
needs: [FastBuild]
35-
uses: ./.github/workflows/reusable_multi_numa.yml
3620
L0:
37-
needs: [Build]
3821
uses: ./.github/workflows/reusable_gpu.yml
3922
with:
4023
provider: "LEVEL_ZERO"
4124
runner: "L0"
4225
shared_lib: "['ON']"
4326
L0-BMG:
44-
needs: [Build]
4527
uses: ./.github/workflows/reusable_gpu.yml
4628
with:
4729
provider: "LEVEL_ZERO"
4830
runner: "L0-BMG"
4931
shared_lib: "['ON']"
5032
os: "['Ubuntu']"
5133
CUDA:
52-
needs: [Build]
34+
5335
uses: ./.github/workflows/reusable_gpu.yml
5436
with:
5537
provider: "CUDA"
5638
runner: "CUDA"
5739
shared_lib: "['ON']"
58-
Sanitizers:
59-
needs: [FastBuild]
60-
uses: ./.github/workflows/reusable_sanitizers.yml
61-
QEMU:
62-
needs: [FastBuild]
63-
uses: ./.github/workflows/reusable_qemu.yml
64-
with:
65-
short_run: true
66-
ProxyLib:
67-
needs: [Build]
68-
uses: ./.github/workflows/reusable_proxy_lib.yml
69-
Valgrind:
70-
needs: [Build]
71-
uses: ./.github/workflows/reusable_valgrind.yml
72-
Coverage:
73-
# total coverage (on upstream only)
74-
if: github.repository == 'oneapi-src/unified-memory-framework'
75-
needs: [Build, DevDax, L0, CUDA, MultiNuma, QEMU, ProxyLib]
76-
uses: ./.github/workflows/reusable_coverage.yml
77-
secrets: inherit
78-
with:
79-
trigger: "${{github.event_name}}"
80-
Coverage_partial:
81-
# partial coverage (on forks)
82-
if: github.repository != 'oneapi-src/unified-memory-framework'
83-
needs: [Build, QEMU, ProxyLib]
84-
uses: ./.github/workflows/reusable_coverage.yml
85-
CodeQL:
86-
needs: [Build]
87-
permissions:
88-
contents: read
89-
security-events: write
90-
uses: ./.github/workflows/reusable_codeql.yml
91-
Trivy:
92-
needs: [Build]
93-
permissions:
94-
contents: read
95-
security-events: write
96-
uses: ./.github/workflows/reusable_trivy.yml
9740
Compatibility:
98-
needs: [Build]
9941
uses: ./.github/workflows/reusable_compatibility.yml
10042
strategy:
10143
matrix:

src/provider/provider_cuda.c

Lines changed: 34 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -711,47 +711,75 @@ const umf_memory_provider_ops_t *umfCUDAMemoryProviderOps(void) {
711711

712712
umf_result_t umfCUDAMemoryProviderParamsCreate(
713713
umf_cuda_memory_provider_params_handle_t *hParams) {
714-
(void)hParams;
714+
if (!hParams) {
715+
LOG_ERR("CUDA Memory Provider params handle is NULL");
716+
return UMF_RESULT_ERROR_INVALID_ARGUMENT;
717+
}
718+
719+
*hParams = NULL;
715720
LOG_ERR("CUDA provider is disabled (UMF_BUILD_CUDA_PROVIDER is OFF)!");
721+
716722
return UMF_RESULT_ERROR_NOT_SUPPORTED;
717723
}
718724

719725
umf_result_t umfCUDAMemoryProviderParamsDestroy(
720726
umf_cuda_memory_provider_params_handle_t hParams) {
721-
(void)hParams;
727+
if (!hParams) {
728+
LOG_ERR("CUDA Memory Provider params handle is NULL");
729+
return UMF_RESULT_ERROR_INVALID_ARGUMENT;
730+
}
731+
722732
LOG_ERR("CUDA provider is disabled (UMF_BUILD_CUDA_PROVIDER is OFF)!");
723733
return UMF_RESULT_ERROR_NOT_SUPPORTED;
724734
}
725735

726736
umf_result_t umfCUDAMemoryProviderParamsSetContext(
727737
umf_cuda_memory_provider_params_handle_t hParams, void *hContext) {
728-
(void)hParams;
729738
(void)hContext;
739+
740+
if (!hParams) {
741+
LOG_ERR("CUDA Memory Provider params handle is NULL");
742+
return UMF_RESULT_ERROR_INVALID_ARGUMENT;
743+
}
744+
730745
LOG_ERR("CUDA provider is disabled (UMF_BUILD_CUDA_PROVIDER is OFF)!");
731746
return UMF_RESULT_ERROR_NOT_SUPPORTED;
732747
}
733748

734749
umf_result_t umfCUDAMemoryProviderParamsSetDevice(
735750
umf_cuda_memory_provider_params_handle_t hParams, int hDevice) {
736-
(void)hParams;
737751
(void)hDevice;
752+
753+
if (!hParams) {
754+
LOG_ERR("CUDA Memory Provider params handle is NULL");
755+
return UMF_RESULT_ERROR_INVALID_ARGUMENT;
756+
}
757+
738758
LOG_ERR("CUDA provider is disabled (UMF_BUILD_CUDA_PROVIDER is OFF)!");
739759
return UMF_RESULT_ERROR_NOT_SUPPORTED;
740760
}
741761

742762
umf_result_t umfCUDAMemoryProviderParamsSetMemoryType(
743763
umf_cuda_memory_provider_params_handle_t hParams,
744764
umf_usm_memory_type_t memoryType) {
745-
(void)hParams;
746765
(void)memoryType;
766+
if (!hParams) {
767+
LOG_ERR("CUDA Memory Provider params handle is NULL");
768+
return UMF_RESULT_ERROR_INVALID_ARGUMENT;
769+
}
770+
747771
LOG_ERR("CUDA provider is disabled (UMF_BUILD_CUDA_PROVIDER is OFF)!");
748772
return UMF_RESULT_ERROR_NOT_SUPPORTED;
749773
}
750774

751775
umf_result_t umfCUDAMemoryProviderParamsSetAllocFlags(
752776
umf_cuda_memory_provider_params_handle_t hParams, unsigned int flags) {
753-
(void)hParams;
754777
(void)flags;
778+
if (!hParams) {
779+
LOG_ERR("CUDA Memory Provider params handle is NULL");
780+
return UMF_RESULT_ERROR_INVALID_ARGUMENT;
781+
}
782+
755783
LOG_ERR("CUDA provider is disabled (UMF_BUILD_CUDA_PROVIDER is OFF)!");
756784
return UMF_RESULT_ERROR_NOT_SUPPORTED;
757785
}

test/providers/provider_cuda_not_impl.cpp

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,23 +11,28 @@ using umf_test::test;
1111
TEST_F(test, cuda_provider_not_implemented) {
1212
umf_cuda_memory_provider_params_handle_t hParams = nullptr;
1313
umf_result_t result = umfCUDAMemoryProviderParamsCreate(&hParams);
14-
ASSERT_EQ(result, UMF_RESULT_ERROR_NOT_SUPPORTED);
14+
ASSERT_NE(result, UMF_RESULT_SUCCESS); // note NE
15+
ASSERT_EQ(hParams, nullptr);
1516

17+
// set hParams to non-null value
18+
hParams = (umf_cuda_memory_provider_params_handle_t)0x1;
19+
20+
// when CUDA is not available, all operations should fail
1621
result = umfCUDAMemoryProviderParamsDestroy(hParams);
17-
ASSERT_EQ(result, UMF_RESULT_ERROR_NOT_SUPPORTED);
22+
ASSERT_NE(result, UMF_RESULT_SUCCESS);
1823

1924
result = umfCUDAMemoryProviderParamsSetContext(hParams, nullptr);
20-
ASSERT_EQ(result, UMF_RESULT_ERROR_NOT_SUPPORTED);
25+
ASSERT_NE(result, UMF_RESULT_SUCCESS);
2126

2227
result = umfCUDAMemoryProviderParamsSetDevice(hParams, 0);
23-
ASSERT_EQ(result, UMF_RESULT_ERROR_NOT_SUPPORTED);
28+
ASSERT_NE(result, UMF_RESULT_SUCCESS);
2429

2530
result = umfCUDAMemoryProviderParamsSetMemoryType(hParams,
2631
UMF_MEMORY_TYPE_DEVICE);
27-
ASSERT_EQ(result, UMF_RESULT_ERROR_NOT_SUPPORTED);
32+
ASSERT_NE(result, UMF_RESULT_SUCCESS);
2833

2934
result = umfCUDAMemoryProviderParamsSetAllocFlags(hParams, 0);
30-
ASSERT_EQ(result, UMF_RESULT_ERROR_NOT_SUPPORTED);
35+
ASSERT_NE(result, UMF_RESULT_SUCCESS);
3136

3237
const umf_memory_provider_ops_t *ops = umfCUDAMemoryProviderOps();
3338
ASSERT_EQ(ops, nullptr);

0 commit comments

Comments
 (0)