Пример #1
0
There are four differences compared to the original C API.

1. Not all functions are ported.
2. Errors are translated into CUDARuntimeError exceptions.
3. The 'cuda' prefix of each API is omitted and the next character is set to
   lower case.
4. The resulting values are returned directly instead of references.

"""
import ctypes
import sys

from cupy.cuda import internal

if 'win32' == sys.platform:
    _cudart = internal.load_library(
        internal.get_windows_cuda_library_names('cudart'))
else:
    _cudart = internal.load_library('cudart')

###############################################################################
# Types
###############################################################################

Device = ctypes.c_int
Function = ctypes.c_void_p
Stream = ctypes.c_void_p
Event = ctypes.c_void_p

memcpyHostToHost = 0
memcpyHostToDevice = 1
memcpyDeviceToHost = 2
Пример #2
0
"""Thin wrapper of CUBLAS."""
import ctypes

from cupy.cuda import driver
from cupy.cuda import internal

_cublas = internal.load_library('cublas')

_I = ctypes.c_int
_P = ctypes.c_void_p
_F = ctypes.c_float
_D = ctypes.c_double
_IP = ctypes.POINTER(_I)
_FP = ctypes.POINTER(_F)
_DP = ctypes.POINTER(_D)

Handle = _P

CUBLAS_OP_N = 0
CUBLAS_OP_T = 1
CUBLAS_OP_C = 2

CUBLAS_POINTER_MODE_HOST = 0
CUBLAS_POINTER_MODE_DEVICE = 1

###############################################################################
# Error handling
###############################################################################

STATUS = {
    0: 'CUBLAS_STATUS_SUCCESS',
Пример #3
0
"""Thin wrapper of CUDA Runtime API.

There are four differences compared to the original C API.

1. Not all functions are ported.
2. Errors are translated into CUDARuntimeError exceptions.
3. The 'cuda' prefix of each API is omitted and the next character is set to
   lower case.
4. The resulting values are returned directly instead of references.

"""
import ctypes

from cupy.cuda import internal

_cudart = internal.load_library('cudart')

###############################################################################
# Types
###############################################################################

Device = ctypes.c_int
Function = ctypes.c_void_p
Stream = ctypes.c_void_p
Event = ctypes.c_void_p

memcpyHostToHost = 0
memcpyHostToDevice = 1
memcpyDeviceToHost = 2
memcpyDeviceToDevice = 3
memcpyDefault = 4
Пример #4
0
1. Not all functions are ported.
2. Errors are translated into CUDADriverError exceptions.
3. The 'cu' prefix of each API is omitted and the next character is set to
   lower case.
4. The resulting values are returned directly instead of references.

"""
import ctypes
import sys

import six

from cupy.cuda import internal

if 'win32' == sys.platform:
    _cuda = internal.load_library('nvcuda')
else:
    _cuda = internal.load_library('cuda')

###############################################################################
# Types
###############################################################################

Device = ctypes.c_int
Context = ctypes.c_void_p
Module = ctypes.c_void_p
Function = ctypes.c_void_p
Stream = ctypes.c_void_p
Event = ctypes.c_void_p

###############################################################################
Пример #5
0
"""Thin wrapper of CUBLAS."""
import ctypes

from cupy.cuda import driver
from cupy.cuda import internal

_cublas = internal.load_library('cublas')

_I = ctypes.c_int
_P = ctypes.c_void_p
_F = ctypes.c_float
_D = ctypes.c_double
_IP = ctypes.POINTER(_I)
_FP = ctypes.POINTER(_F)
_DP = ctypes.POINTER(_D)

Handle = _P

CUBLAS_OP_N = 0
CUBLAS_OP_T = 1
CUBLAS_OP_C = 2

CUBLAS_POINTER_MODE_HOST = 0
CUBLAS_POINTER_MODE_DEVICE = 1

###############################################################################
# Error handling
###############################################################################

STATUS = {
    0: 'CUBLAS_STATUS_SUCCESS',
Пример #6
0
"""Thin wrapper of cuRAND."""
import ctypes

from cupy.cuda import internal
from cupy.cuda import runtime

_curand = internal.load_library('curand')

_I = ctypes.c_int
_U = ctypes.c_uint
_S = ctypes.c_size_t
_ULL = ctypes.c_ulonglong
_P = ctypes.c_void_p
_IP = ctypes.POINTER(_I)
_UP = ctypes.POINTER(_U)
_ULLP = ctypes.POINTER(_ULL)
_F = ctypes.c_float
_D = ctypes.c_double
_FP = ctypes.POINTER(_F)
_DP = ctypes.POINTER(_D)

CURAND_RNG_PSEUDO_DEFAULT = 100
CURAND_RNG_PSEUDO_XORWOW = 101
CURAND_RNG_PSEUDO_MRG32K3A = 121
CURAND_RNG_PSEUDO_MTGP32 = 141
CURAND_RNG_PSEUDO_MT19937 = 142
CURAND_RNG_PSEUDO_PHILOX4_32_10 = 161
CURAND_RNG_QUASI_DEFAULT = 200
CURAND_RNG_QUASI_SOBOL32 = 201
CURAND_RNG_QUASI_SCRAMBLED_SOBOL32 = 202
CURAND_RNG_QUASI_SOBOL64 = 203
Пример #7
0
"""Thin wrapper of cuRAND."""
import ctypes
import sys

from cupy.cuda import internal
from cupy.cuda import runtime

if 'win32' == sys.platform:
    _curand = internal.load_library(
        internal.get_windows_cuda_library_names('curand'))
else:
    _curand = internal.load_library('curand')

_I = ctypes.c_int
_U = ctypes.c_uint
_S = ctypes.c_size_t
_ULL = ctypes.c_ulonglong
_P = ctypes.c_void_p
_IP = ctypes.POINTER(_I)
_UP = ctypes.POINTER(_U)
_ULLP = ctypes.POINTER(_ULL)
_F = ctypes.c_float
_D = ctypes.c_double
_FP = ctypes.POINTER(_F)
_DP = ctypes.POINTER(_D)

CURAND_RNG_PSEUDO_DEFAULT = 100
CURAND_RNG_PSEUDO_XORWOW = 101
CURAND_RNG_PSEUDO_MRG32K3A = 121
CURAND_RNG_PSEUDO_MTGP32 = 141
CURAND_RNG_PSEUDO_MT19937 = 142
Пример #8
0
There are four differences compared to the original C API.

1. Not all functions are ported.
2. Errors are translated into CUDARuntimeError exceptions.
3. The 'cuda' prefix of each API is omitted and the next character is set to
   lower case.
4. The resulting values are returned directly instead of references.

"""
import ctypes
import sys

from cupy.cuda import internal

if 'win32' == sys.platform:
    _cudart = internal.load_library(
        internal.get_windows_cuda_library_names('cudart'))
else:
    _cudart = internal.load_library('cudart')

###############################################################################
# Types
###############################################################################

Device = ctypes.c_int
Function = ctypes.c_void_p
Stream = ctypes.c_void_p
Event = ctypes.c_void_p

memcpyHostToHost = 0
memcpyHostToDevice = 1
memcpyDeviceToHost = 2
Пример #9
0
"""Thin wrapper of cuRAND."""
import ctypes

from cupy.cuda import internal
from cupy.cuda import runtime

_curand = internal.load_library("curand")

_I = ctypes.c_int
_U = ctypes.c_uint
_S = ctypes.c_size_t
_ULL = ctypes.c_ulonglong
_P = ctypes.c_void_p
_IP = ctypes.POINTER(_I)
_UP = ctypes.POINTER(_U)
_ULLP = ctypes.POINTER(_ULL)
_F = ctypes.c_float
_D = ctypes.c_double
_FP = ctypes.POINTER(_F)
_DP = ctypes.POINTER(_D)

CURAND_RNG_PSEUDO_DEFAULT = 100
CURAND_RNG_PSEUDO_XORWOW = 101
CURAND_RNG_PSEUDO_MRG32K3A = 121
CURAND_RNG_PSEUDO_MTGP32 = 141
CURAND_RNG_PSEUDO_MT19937 = 142
CURAND_RNG_PSEUDO_PHILOX4_32_10 = 161
CURAND_RNG_QUASI_DEFAULT = 200
CURAND_RNG_QUASI_SOBOL32 = 201
CURAND_RNG_QUASI_SCRAMBLED_SOBOL32 = 202
CURAND_RNG_QUASI_SOBOL64 = 203
Пример #10
0
"""Thin wrapper of CuDNN."""
# NOTE: This wrapper does not cover all APIs of CuDNN v2.
import ctypes

from cupy.cuda import internal
from cupy.cuda import runtime

_cudnn = internal.load_library('cudnn')

_I = ctypes.c_int
_S = ctypes.c_size_t
_P = ctypes.c_void_p
_IP = ctypes.POINTER(_I)
_SP = ctypes.POINTER(_S)

Handle = _P
TensorDescriptor = _P
ConvolutionDescriptor = _P
PoolingDescriptor = _P
FilterDescriptor = _P

CUDNN_DATA_FLOAT = 0
CUDNN_DATA_DOUBLE = 1

CUDNN_TENSOR_NCHW = 0
CUDNN_TENSOR_NHWC = 1

CUDNN_ADD_IMAGE = 0
CUDNN_ADD_SAME_HW = 0
CUDNN_ADD_FEATURE_MAP = 1
CUDNN_ADD_SAME_CHW = 1
Пример #11
0
"""Thin wrapper of CUBLAS."""
import ctypes
import sys

from cupy.cuda import driver
from cupy.cuda import internal


if 'win32' == sys.platform:
    _cublas = internal.load_library(
        internal.get_windows_cuda_library_names('cublas'))
else:
    _cublas = internal.load_library('cublas')


_I = ctypes.c_int
_P = ctypes.c_void_p
_F = ctypes.c_float
_D = ctypes.c_double
_IP = ctypes.POINTER(_I)
_FP = ctypes.POINTER(_F)
_DP = ctypes.POINTER(_D)

Handle = _P

CUBLAS_OP_N = 0
CUBLAS_OP_T = 1
CUBLAS_OP_C = 2

CUBLAS_POINTER_MODE_HOST = 0
CUBLAS_POINTER_MODE_DEVICE = 1
Пример #12
0
"""Thin wrapper of CUDA Runtime API.

There are four differences compared to the original C API.

1. Not all functions are ported.
2. Errors are translated into CUDARuntimeError exceptions.
3. The 'cuda' prefix of each API is omitted and the next character is set to
   lower case.
4. The resulting values are returned directly instead of references.

"""
import ctypes

from cupy.cuda import internal

_cudart = internal.load_library('cudart')

###############################################################################
# Types
###############################################################################

Device = ctypes.c_int
Function = ctypes.c_void_p
Stream = ctypes.c_void_p
Event = ctypes.c_void_p

memcpyHostToHost = 0
memcpyHostToDevice = 1
memcpyDeviceToHost = 2
memcpyDeviceToDevice = 3
memcpyDefault = 4
Пример #13
0
"""Thin wrapper of CuDNN."""
# NOTE: This wrapper does not cover all APIs of CuDNN v2.
import ctypes

from cupy.cuda import internal
from cupy.cuda import runtime

_cudnn = internal.load_library('cudnn')

_I = ctypes.c_int
_S = ctypes.c_size_t
_P = ctypes.c_void_p
_IP = ctypes.POINTER(_I)
_SP = ctypes.POINTER(_S)

Handle = _P
TensorDescriptor = _P
ConvolutionDescriptor = _P
PoolingDescriptor = _P
FilterDescriptor = _P

CUDNN_DATA_FLOAT = 0
CUDNN_DATA_DOUBLE = 1

CUDNN_TENSOR_NCHW = 0
CUDNN_TENSOR_NHWC = 1

CUDNN_ADD_IMAGE = 0
CUDNN_ADD_SAME_HW = 0
CUDNN_ADD_FEATURE_MAP = 1
CUDNN_ADD_SAME_CHW = 1