自定义内核#

cupy.ElementwiseKernel(in_params, ...[, ...])

用户定义的逐元素内核。

cupy.ReductionKernel(unicode in_params, ...)

用户定义的归约内核。

cupy.RawKernel(unicode code, unicode name, ...)

用户定义的自定义内核。

cupy.RawModule(unicode code=None, *, ...[, ...])

用户定义的自定义模块。

cupy.fuse(*args, **kwargs)

融合函数的装饰器。

JIT 内核定义#

Supported Python built-in functions include: range, len(), max(), min().

备注

If loop unrolling is needed, use cupyx.jit.range() instead of the built-in range.

cupyx.jit.rawkernel(*[, mode, device])

装饰器将 Python 函数编译为 CUDA 内核。

cupyx.jit.threadIdx

dim3 threadIdx

cupyx.jit.blockDim

dim3 blockDim

cupyx.jit.blockIdx

dim3 blockIdx

cupyx.jit.gridDim

dim3 gridDim

cupyx.jit.grid(ndim)

计算网格中的线程索引。

cupyx.jit.gridsize(ndim)

计算网格大小。

cupyx.jit.laneid()

返回调用线程的车道ID,范围在 [0, jit.warpsize) 内。

cupyx.jit.warpsize

返回一个warp中的线程数。

cupyx.jit.range(*args[, unroll])

支持循环展开的范围。

cupyx.jit.syncthreads()

调用 __syncthreads()

cupyx.jit.syncwarp(*[, mask])

调用 __syncwarp()

cupyx.jit.shfl_sync(mask, var, val_id, *[, ...])

调用 __shfl_sync 函数。

cupyx.jit.shfl_up_sync(mask, var, val_id, *)

调用 __shfl_up_sync 函数。

cupyx.jit.shfl_down_sync(mask, var, val_id, *)

调用 __shfl_down_sync 函数。

cupyx.jit.shfl_xor_sync(mask, var, val_id, *)

调用 __shfl_xor_sync 函数。

cupyx.jit.shared_memory(dtype, size[, alignment])

分配共享内存并将其作为一维数组返回。

cupyx.jit.atomic_add(array, index, value[, ...])

调用 atomicAdd 函数以原子方式操作 array[index]

cupyx.jit.atomic_sub(array, index, value[, ...])

调用 atomicSub 函数以原子方式操作 array[index]

cupyx.jit.atomic_exch(array, index, value[, ...])

调用 atomicExch 函数以原子方式操作 array[index]

cupyx.jit.atomic_min(array, index, value[, ...])

调用 atomicMin 函数以原子方式操作 array[index]

cupyx.jit.atomic_max(array, index, value[, ...])

调用 atomicMax 函数以原子方式操作 array[index]

cupyx.jit.atomic_inc(array, index, value[, ...])

调用 atomicInc 函数以原子方式操作 array[index]

cupyx.jit.atomic_dec(array, index, value[, ...])

调用 atomicDec 函数以原子方式操作 array[index]

cupyx.jit.atomic_cas(array, index, value[, ...])

调用 atomicCAS 函数以原子方式操作 array[index]

cupyx.jit.atomic_and(array, index, value[, ...])

调用 atomicAnd 函数以原子方式操作 array[index]

cupyx.jit.atomic_or(array, index, value[, ...])

调用 atomicOr 函数以原子方式操作 array[index]

cupyx.jit.atomic_xor(array, index, value[, ...])

调用 atomicXor 函数以原子方式操作 array[index]

cupyx.jit.cg.this_grid()

返回当前的网格组 (_GridGroup)。

cupyx.jit.cg.this_thread_block()

返回当前线程块组(_ThreadBlockGroup)。

cupyx.jit.cg.sync(group)

调用 cg::sync()

cupyx.jit.cg.memcpy_async(group, dst, ...[, ...])

调用 cg::memcpy_sync()

cupyx.jit.cg.wait(group)

调用 cg::wait()

cupyx.jit.cg.wait_prior(group)

调用 cg::wait_prior<N>()

cupyx.jit._interface._JitRawKernel(func, ...)

JIT CUDA 内核对象。

内核二进制记忆化#

cupy.memoize(bool for_each_device=False)

使一个函数记忆每个参数和设备的结果。

cupy.clear_memo()

清除所有由 memoize 装饰的函数的缓存结果。