Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
88 commits
Select commit Hold shift + click to select a range
019e27c
Fixed cupy_thrust.cu for CUDA 11.6
anaruse Nov 24, 2021
43503bb
Fix missing rocprim identifier
Oct 4, 2022
710f6c1
Merge pull request #2 from ROCmSoftwarePlatform/dev/hubertlu/cupy_thr…
AdrianAbeyta Oct 6, 2022
2bb6d49
Cherry picked "Fix missing ROCPrim identifier in cupy_thrust.cu"
amathews-amd Oct 14, 2022
1b2ed85
Merge pull request #3 from ROCmSoftwarePlatform/rocm_5_3_plus_ifu
amathews-amd Oct 14, 2022
1e2f8fc
skipped all multi-gpu tests due to non-support
Jan 24, 2023
3b27b08
skipped multi-gpu nccl tests due to non-multigpu hang
Jan 24, 2023
063e2e8
Merge pull request #4 from ROCmSoftwarePlatform/skip_multigpu_fft_tests
AdrianAbeyta Jan 25, 2023
547ab1f
Merge remote-tracking branch 'upstream/master' into IFU-2023-02-20
Feb 20, 2023
57f4c6d
fix merge issue
Feb 20, 2023
a83638a
xfail failed tests IFU_2023_02_20
lcskrishna Mar 16, 2023
9acc02d
xfailed tests that fail on rocm
lcskrishna Mar 17, 2023
92d2243
skip ndimage_tests and skip tests flaky
lcskrishna Mar 18, 2023
7fa7b87
missing import
lcskrishna Mar 18, 2023
9d53554
Skip manipulation tests causing hang
Mar 18, 2023
dcedab9
add c++14 for cubreduction
Mar 18, 2023
43f7134
skipping flaky tests
lcskrishna Mar 19, 2023
3c1df4f
Skip ndarray tests
Mar 19, 2023
ba59d26
Skip build hip check
Mar 19, 2023
f609527
merging skipped tests from manipulation tests
lcskrishna Mar 20, 2023
edcc573
flake8 white trailing spaces
lcskrishna Mar 20, 2023
741d4bb
trailing spaces
lcskrishna Mar 20, 2023
fd8ff83
Merge pull request #7 from lcskrishna/cl/ifu_2023_02_20
AdrianAbeyta Mar 20, 2023
c9ff428
Merge pull request #6 from ROCmSoftwarePlatform/IFU-2023-02-20
AdrianAbeyta Mar 20, 2023
739e81f
Add xfail for test_cumprod_huge_array
pnunna93 Mar 27, 2023
6bc54fd
Merge pull request #8 from ROCmSoftwarePlatform/cupy_cumprod_huge_arr
AdrianAbeyta Mar 28, 2023
f2381dd
fix compilation issues in rocm5.6
lcskrishna Apr 12, 2023
70dc62a
refactor unit test suite automation
lcskrishna Apr 12, 2023
71cabdb
fix lint issues
lcskrishna Apr 14, 2023
2b40f53
fix more lint errors
lcskrishna Apr 14, 2023
503729d
add version conditions
lcskrishna Apr 14, 2023
a11a0ce
retrieve rocm version before installation
lcskrishna Apr 14, 2023
c486e0e
fix lint issues
lcskrishna Apr 14, 2023
9fd4cdb
version rccl.h in install build
lcskrishna Apr 14, 2023
e77a6a8
fixes for backward compatibility
lcskrishna Apr 14, 2023
c507d71
Merge pull request #11 from lcskrishna/cl/test-suite-script
AdrianAbeyta Apr 14, 2023
6c7fac9
Merge pull request #10 from lcskrishna/cl/fix-compilation-issue
AdrianAbeyta Apr 14, 2023
3ba93bc
unskip test_maxit_None for rocm 5.6
lcskrishna Apr 17, 2023
650e2b1
Merge pull request #13 from lcskrishna/cl/rocm5.6_branch
AdrianAbeyta Apr 19, 2023
70ca71f
version for test_methods
lcskrishna Apr 19, 2023
0ced0f9
Merge pull request #15 from lcskrishna/cl/rocm5.6_branch
AdrianAbeyta Apr 19, 2023
4b8b6e1
Merge remote-tracking branch 'upstream/main' into IFU-master-2023-05-11
May 11, 2023
3ccecd3
update the version number
lcskrishna May 12, 2023
f686dcc
Merge pull request #16 from lcskrishna/cl/rocm5.6_internal_testing
AdrianAbeyta May 12, 2023
3331cb7
Update version value for ROCm5.5
May 15, 2023
800adaa
Merge pull request #17 from ROCmSoftwarePlatform/adabeyta_test_maxit_fix
lcskrishna May 16, 2023
a425352
Merge pull request #19 from ROCmSoftwarePlatform/rocm_5.6_internal_te…
AdrianAbeyta May 18, 2023
970e280
Remove xfail and change test pass condition
pnunna93 Jun 8, 2023
aaf32de
Merge pull request #21 from ROCmSoftwarePlatform/test_gof_fix
AdrianAbeyta Jun 9, 2023
be0beef
Fixed failing unit tests
Jun 14, 2023
5f93651
Fix unit test syntax
Jun 14, 2023
7a18db6
Remove gpu decorator similar to upstream
Jun 14, 2023
fc251a8
Merge pull request #22 from ROCmSoftwarePlatform/IFU-master-2023-05-11
lcskrishna Jun 15, 2023
29a0d95
dummy comment
lcskrishna Jul 26, 2023
83c0f99
remove explicit cython installation
kmaehashi Jul 18, 2023
c0f81c7
Merge pull request #7723 from leofang/cuqnt_update
Jul 18, 2023
85f7543
Merge pull request #24 from lcskrishna/cl/test-ci
AdrianAbeyta Jul 27, 2023
6c64e8a
Merge remote-tracking branch 'upstream/main' into IFU-master-2023-07-31
pnunna93 Aug 14, 2023
d3ec67f
Merge remote-tracking branch 'upstream/main' into IFU-master-2024-07-31
pnunna93 Aug 18, 2023
cebf3fe
Add spaces to fix precommit failures
pnunna93 Aug 28, 2023
741027b
Merge pull request #27 from ROCmSoftwarePlatform/IFU-master-2023-07-31
pnunna93 Aug 29, 2023
2e31c83
Fix runtime compile issues for ROCm6.0
Nov 28, 2023
9a33230
Fix conditionals for ROCm6.0
Nov 28, 2023
8543331
fix flake8 cython issues
Nov 28, 2023
61e6027
remove explicit cython installation
kmaehashi Jul 18, 2023
09d53dd
Update CI
Nov 29, 2023
c720d04
Merge branch 'master' of https://github.com/ROCmSoftwarePlatform/cupy…
Nov 29, 2023
432a868
Merge pull request #38 from ROCmSoftwarePlatform/fix-rocm6.0-compile
AdrianAbeyta Dec 1, 2023
44fb4e5
Inital bringup of hipGraph
Jan 23, 2024
f69de2c
Fix test_null_stream_cannot_capture graph tests
Jan 23, 2024
602f570
Update pytests to handle hip
Jan 24, 2024
20e2e5e
enable stream capture for hip:blas/rand/solver/sparse
Jan 24, 2024
63f40bf
Clean up comments
Jan 26, 2024
6d5d699
Update autopep8
Jan 26, 2024
6fe644b
Add backport conditionals for ROCm versions
Jan 26, 2024
164f743
Merge pull request #45 from ROCm/hipgraph_enablement
lcskrishna Jan 30, 2024
82a2f11
Enable cuda_array_interface on ROCm
May 7, 2024
e0e2398
Modify UT due to ROCm support with cuda_array_interface
May 7, 2024
2a368e4
Merge pull request #55 from ROCm/enable_cuda_array_interface
AdrianAbeyta May 14, 2024
b283c68
Merge remote-tracking branch 'upstream/main' into IFU-master-2024-11-05
pnunna93 Nov 7, 2024
d418a99
Fix static check errors
pnunna93 Nov 7, 2024
04214b4
Merge remote-tracking branch 'upstream/main' into IFU-master-2024-11-05
pnunna93 Jan 7, 2025
24e350a
Merge branch 'IFU-master-2024-11-05' of https://github.com/ROCm/cupy …
pnunna93 Jan 8, 2025
244841b
Add workaround for amdgpu
pnunna93 Jan 9, 2025
ff8d2b9
Merge pull request #68 from ROCm/IFU-master-2024-11-05
pnunna93 Jan 20, 2025
9cdff17
Cherrypick thrust fix (#70)
pnunna93 Jan 21, 2025
40fb29c
build on ROCm 6.4
kmaehashi Apr 14, 2025
1cea0ec
update CI to use ROCm 6.4
kmaehashi Apr 14, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion .github/workflows/pretest.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ jobs:

- name: Setup pre-commit
run: |
pip install --upgrade autopep8
pip install pre-commit

- name: Check
Expand Down Expand Up @@ -106,4 +107,4 @@ jobs:

- name: Build & Test
run: |
docker run --rm -v "${PWD}:/src" -w /src "rocm/dev-ubuntu-22.04:6.0" bash .github/workflows/scripts/pretest-rocm-test.sh
docker run --rm -v "${PWD}:/src" -w /src "rocm/dev-ubuntu-22.04:6.4" bash .github/workflows/scripts/pretest-rocm-test.sh
8 changes: 0 additions & 8 deletions cupy/_core/core.pyx
Original file line number Diff line number Diff line change
Expand Up @@ -261,9 +261,6 @@ cdef class _ndarray_base:

@property
def __cuda_array_interface__(self):
if runtime._is_hip_environment:
raise AttributeError(
'HIP/ROCm does not support cuda array interface')
cdef dict desc = {
'shape': self.shape,
'typestr': self.dtype.str,
Expand Down Expand Up @@ -1800,8 +1797,6 @@ cdef class _ndarray_base:
# `_kernel._preprocess_args`.
check = (hasattr(x, '__cuda_array_interface__')
or hasattr(x, '__cupy_get_ndarray__'))
if runtime._is_hip_environment and isinstance(x, ndarray):
check = True
if (not check
and not type(x) in _scalar.scalar_type_set
and not isinstance(x, numpy.ndarray)):
Expand Down Expand Up @@ -3000,9 +2995,6 @@ cpdef _ndarray_base asfortranarray(_ndarray_base a, dtype=None):


cpdef _ndarray_base _convert_object_with_cuda_array_interface(a):
if runtime._is_hip_environment:
raise RuntimeError(
'HIP/ROCm does not support cuda array interface')

cdef Py_ssize_t sh, st
cdef dict desc = a.__cuda_array_interface__
Expand Down
5 changes: 5 additions & 0 deletions cupy/cuda/cupy_cufft.h
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,12 @@
#include <cufftXt.h>

#elif defined(CUPY_USE_HIP)
#include <hip/hip_version.h> //for HIP_VERSION
#if HIP_VERSION >= 50530600
#include <hipfft/hipfft.h>
#else
#include <hipfft.h>
#endif

extern "C" {

Expand Down
2 changes: 1 addition & 1 deletion cupy/cuda/cupy_thrust.cu
Original file line number Diff line number Diff line change
Expand Up @@ -476,7 +476,7 @@ struct _argsort {
#else
thrust::make_counting_iterator<size_t>(0),
thrust::make_counting_iterator<size_t>(size),
thrust::make_constant_iterator<ptrdiff_t>(shape[ndim-1]),
thrust::make_constant_iterator<ptrdiff_t>(shape[ndim-1]),
#endif
dp_keys_first,
thrust::divides<size_t>());
Expand Down
7 changes: 7 additions & 0 deletions cupy/cuda/cupy_thrust.h
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,14 @@
#ifndef CUPY_NO_CUDA
#include <vector>
#include <cstdint>

#ifndef CUPY_USE_HIP
#include <thrust/version.h> // for THRUST_VERSION
#else
// WAR #9098:
// rocThrust 3.3.0 (ROCm 6.4.0) cannot be compiled by host compiler
#define THRUST_VERSION 0
#endif

void thrust_sort(int, void *, size_t *, const std::vector<ptrdiff_t>&, intptr_t, void *);
void thrust_lexsort(int, size_t *, void *, size_t, size_t, intptr_t, void *);
Expand Down
30 changes: 6 additions & 24 deletions cupy/cuda/memory.pyx
Original file line number Diff line number Diff line change
Expand Up @@ -506,10 +506,7 @@ cdef class MemoryPointer:

"""
stream_ptr = stream_module.get_current_stream_ptr()
if (
not runtime._is_hip_environment
and runtime.streamIsCapturing(stream_ptr)
):
if runtime.streamIsCapturing(stream_ptr):
raise RuntimeError(
'the current stream is capturing, so synchronous API calls '
'are disallowed')
Expand Down Expand Up @@ -553,10 +550,7 @@ cdef class MemoryPointer:

"""
stream_ptr = stream_module.get_current_stream_ptr()
if (
not runtime._is_hip_environment
and runtime.streamIsCapturing(stream_ptr)
):
if runtime.streamIsCapturing(stream_ptr):
raise RuntimeError(
'the current stream is capturing, so synchronous API calls '
'are disallowed')
Expand All @@ -580,10 +574,7 @@ cdef class MemoryPointer:
stream_ptr = stream_module.get_current_stream_ptr()
else:
stream_ptr = stream.ptr
if (
not runtime._is_hip_environment
and runtime.streamIsCapturing(stream_ptr)
):
if runtime.streamIsCapturing(stream_ptr):
raise RuntimeError(
'the current stream is capturing, so H2D transfers '
'are disallowed')
Expand Down Expand Up @@ -651,10 +642,7 @@ cdef class MemoryPointer:

"""
stream_ptr = stream_module.get_current_stream_ptr()
if (
not runtime._is_hip_environment
and runtime.streamIsCapturing(stream_ptr)
):
if runtime.streamIsCapturing(stream_ptr):
raise RuntimeError(
'the current stream is capturing, so synchronous API calls '
'are disallowed')
Expand All @@ -678,10 +666,7 @@ cdef class MemoryPointer:
stream_ptr = stream_module.get_current_stream_ptr()
else:
stream_ptr = stream.ptr
if (
not runtime._is_hip_environment
and runtime.streamIsCapturing(stream_ptr)
):
if runtime.streamIsCapturing(stream_ptr):
raise RuntimeError(
'the current stream is capturing, so D2H transfers '
'are disallowed')
Expand All @@ -705,10 +690,7 @@ cdef class MemoryPointer:

"""
stream_ptr = stream_module.get_current_stream_ptr()
if (
not runtime._is_hip_environment
and runtime.streamIsCapturing(stream_ptr)
):
if runtime.streamIsCapturing(stream_ptr):
raise RuntimeError(
'the current stream is capturing, so synchronous API calls '
'are disallowed')
Expand Down
13 changes: 1 addition & 12 deletions cupy/cuda/stream.pyx
Original file line number Diff line number Diff line change
Expand Up @@ -369,8 +369,6 @@ class _BaseStream:
https://docs.nvidia.com/cuda/cuda-runtime-api/group__CUDART__STREAM.html#group__CUDART__STREAM_1g793d7d4e474388ddfda531603dc34aa3

"""
if runtime._is_hip_environment:
raise RuntimeError('This function is not supported on HIP')
if self.ptr == 0 or self.ptr == 1:
raise RuntimeError('cannot capture on the default (legacy) stream')
if mode is None:
Expand Down Expand Up @@ -399,8 +397,6 @@ class _BaseStream:
https://docs.nvidia.com/cuda/cuda-runtime-api/group__CUDART__STREAM.html#group__CUDART__STREAM_1gf5a0efebc818054ceecd1e3e5e76d93e

"""
if runtime._is_hip_environment:
raise RuntimeError('This function is not supported on HIP')
cdef intptr_t g = runtime.streamEndCapture(self.ptr)
return graph.Graph.from_stream(g)

Expand All @@ -415,9 +411,6 @@ class _BaseStream:
Programming Guide for detail.

"""
# TODO(leofang): is it better to be a property?
if runtime._is_hip_environment:
raise RuntimeError('This function is not supported on HIP')
try:
return runtime.streamIsCapturing(self.ptr)
except RuntimeError: # can be RuntimeError or CUDARuntimeError
Expand Down Expand Up @@ -483,9 +476,6 @@ class Stream(_BaseStream):
ptr = 0
device_id = -1
elif ptds:
if runtime._is_hip_environment:
raise ValueError('HIP does not support per-thread '
'default stream (ptds)')
ptr = runtime.streamPerThread
device_id = -1
else:
Expand Down Expand Up @@ -544,5 +534,4 @@ class ExternalStream(_BaseStream):


Stream.null = Stream(null=True)
if not runtime._is_hip_environment:
Stream.ptds = Stream(ptds=True)
Stream.ptds = Stream(ptds=True)
4 changes: 3 additions & 1 deletion cupy/random/cupy_distributions.cuh
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,9 @@ struct rk_binomial_state {
// When compiling cython extensions with hip 4.0
// gcc will be used, but the hiprand_kernel can only be compiled with llvm
// so we need to explicitly declare stubs for the functions
#if HIP_VERSION > 400
#if HIP_VERSION >= 50530600
#include <hiprand/hiprand_kernel.h>
#elif HIP_VERSION > 400
#include <hiprand_kernel.h>
#else
#include <hiprand.h>
Expand Down
22 changes: 5 additions & 17 deletions cupy_backends/cuda/api/runtime.pyx
Original file line number Diff line number Diff line change
Expand Up @@ -530,8 +530,8 @@ cpdef intptr_t mallocArray(intptr_t descPtr, size_t width, size_t height,

cpdef intptr_t mallocAsync(size_t size, intptr_t stream) except? 0:
cdef void* ptr
if _is_hip_environment:
raise RuntimeError('HIP does not support mallocAsync')
if _is_hip_environment and 0 < CUPY_HIP_VERSION < 60200000:
raise RuntimeError('mallocAsync is supported since ROCm 6.2')
with nogil:
status = cudaMallocAsync(&ptr, size, <driver.Stream>stream)
check_status(status)
Expand Down Expand Up @@ -581,8 +581,8 @@ cpdef freeArray(intptr_t ptr):
check_status(status)

cpdef freeAsync(intptr_t ptr, intptr_t stream):
if _is_hip_environment:
raise RuntimeError('HIP does not support freeAsync')
if _is_hip_environment and 0 < CUPY_HIP_VERSION < 60200000:
raise RuntimeError('freeAsync is supported since ROCm 6.2')
with nogil:
status = cudaFreeAsync(<void*>ptr, <driver.Stream>stream)
check_status(status)
Expand Down Expand Up @@ -715,7 +715,7 @@ cpdef PointerAttributes pointerGetAttributes(intptr_t ptr):
cdef _PointerAttributes attrs
status = cudaPointerGetAttributes(&attrs, <void*>ptr)
check_status(status)
IF CUPY_CUDA_VERSION > 0:
IF CUPY_CUDA_VERSION > 0 or CUPY_HIP_VERSION > 60000000:
return PointerAttributes(
attrs.device,
<intptr_t>attrs.devicePointer,
Expand Down Expand Up @@ -896,9 +896,6 @@ cdef _HostFnFunc(void* func_arg) with gil:

cpdef streamAddCallback(intptr_t stream, callback, intptr_t arg,
unsigned int flags=0):
if _is_hip_environment and stream == 0:
raise RuntimeError('HIP does not allow adding callbacks to the '
'default (null) stream')
func_arg = (callback, arg)
cpython.Py_INCREF(func_arg)
with nogil:
Expand All @@ -909,9 +906,6 @@ cpdef streamAddCallback(intptr_t stream, callback, intptr_t arg,


cpdef launchHostFunc(intptr_t stream, callback, intptr_t arg):
if _is_hip_environment:
raise RuntimeError('This feature is not supported on HIP')

func_arg = (callback, arg)
cpython.Py_INCREF(func_arg)
with nogil:
Expand All @@ -933,8 +927,6 @@ cpdef streamWaitEvent(intptr_t stream, intptr_t event, unsigned int flags=0):


cpdef streamBeginCapture(intptr_t stream, int mode=streamCaptureModeRelaxed):
if _is_hip_environment:
raise RuntimeError('streamBeginCapture is not supported in ROCm')
# TODO(leofang): check and raise if stream == 0?
with nogil:
status = cudaStreamBeginCapture(<driver.Stream>stream,
Expand All @@ -945,8 +937,6 @@ cpdef streamBeginCapture(intptr_t stream, int mode=streamCaptureModeRelaxed):
cpdef intptr_t streamEndCapture(intptr_t stream) except? 0:
# TODO(leofang): check and raise if stream == 0?
cdef Graph g
if _is_hip_environment:
raise RuntimeError('streamEndCapture is not supported in ROCm')
with nogil:
status = cudaStreamEndCapture(<driver.Stream>stream, &g)
check_status(status)
Expand All @@ -955,8 +945,6 @@ cpdef intptr_t streamEndCapture(intptr_t stream) except? 0:

cpdef bint streamIsCapturing(intptr_t stream) except*:
cdef StreamCaptureStatus s
if _is_hip_environment:
raise RuntimeError('streamIsCapturing is not supported in ROCm')
with nogil:
status = cudaStreamIsCapturing(<driver.Stream>stream, &s)
check_status(status) # cudaErrorStreamCaptureImplicit could be raised here
Expand Down
2 changes: 1 addition & 1 deletion cupy_backends/cuda/libs/cublas.pyx
Original file line number Diff line number Diff line change
Expand Up @@ -508,7 +508,7 @@ cpdef setStream(intptr_t handle, size_t stream):
# https://docs.nvidia.com/cuda/cublas/index.html#CUDA-graphs
# Before we come up with a robust strategy to test the support conditions,
# we disable this functionality.
if not runtime._is_hip_environment and runtime.streamIsCapturing(stream):
if runtime.streamIsCapturing(stream):
raise NotImplementedError(
'calling cuBLAS API during stream capture is currently '
'unsupported')
Expand Down
2 changes: 1 addition & 1 deletion cupy_backends/cuda/libs/curand.pyx
Original file line number Diff line number Diff line change
Expand Up @@ -115,7 +115,7 @@ cpdef int getVersion() except? -1:
cpdef setStream(size_t generator, size_t stream):
# TODO(leofang): The support of stream capture is not mentioned at all in
# the cuRAND docs (as of CUDA 11.5), so we disable this functionality.
if not runtime._is_hip_environment and runtime.streamIsCapturing(stream):
if runtime.streamIsCapturing(stream):
raise NotImplementedError(
'calling cuRAND API during stream capture is currently '
'unsupported')
Expand Down
2 changes: 1 addition & 1 deletion cupy_backends/cuda/libs/cusolver.pyx
Original file line number Diff line number Diff line change
Expand Up @@ -1136,7 +1136,7 @@ cpdef spDestroy(intptr_t handle):
cpdef setStream(intptr_t handle, size_t stream):
# TODO(leofang): The support of stream capture is not mentioned at all in
# the cuSOLVER docs (as of CUDA 11.5), so we disable this functionality.
if not runtime._is_hip_environment and runtime.streamIsCapturing(stream):
if runtime.streamIsCapturing(stream):
raise NotImplementedError(
'calling cuSOLVER API during stream capture is currently '
'unsupported')
Expand Down
2 changes: 1 addition & 1 deletion cupy_backends/cuda/libs/cusparse.pyx
Original file line number Diff line number Diff line change
Expand Up @@ -1630,7 +1630,7 @@ cpdef void setStream(intptr_t handle, size_t stream) except *:
# https://docs.nvidia.com/cuda/cusparse/index.html#optimization-notes
# Before we come up with a robust strategy to test the support conditions,
# we disable this functionality.
if not runtime._is_hip_environment and runtime.streamIsCapturing(stream):
if runtime.streamIsCapturing(stream):
raise NotImplementedError(
'calling cuSPARSE API during stream capture is currently '
'unsupported')
Expand Down
5 changes: 5 additions & 0 deletions cupy_backends/hip/cupy_hip_common.h
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,13 @@
#define INCLUDE_GUARD_HIP_CUPY_COMMON_H

#include <hip/hip_runtime_api.h>
#if HIP_VERSION >= 50530600
#include <hipblas/hipblas.h>
#include <rocsolver/rocsolver.h>
#else
#include <hipblas.h>
#include <rocsolver.h>
#endif

#define CUDA_VERSION 0

Expand Down
Loading