用法:
class mxnet.rtc.CudaModule(source, options=(), exports=())
- source:(
str
) - 完整的源代码。 - options:(
tuple of str
) - 编译器标志。例如,使用 “-I/usr/local/cuda/include” 添加 cuda 标头以包含路径。 - exports:(
tuple of str
) - 导出内核名称。
- source:(
参数:
基础:
object
从 Python 编译和运行 CUDA 代码。
在 CUDA 7.5 中,您需要在内核定义前添加“extern “C””以避免名称混淆:
source = r''' extern "C" __global__ void axpy(const float *x, float *y, float alpha) { int i = threadIdx.x + blockIdx.x * blockDim.x; y[i] += alpha * x[i]; } ''' module = mx.rtc.CudaModule(source) func = module.get_kernel("axpy", "const float *x, float *y, float alpha") x = mx.nd.ones((10,), ctx=mx.gpu(0)) y = mx.nd.zeros((10,), ctx=mx.gpu(0)) func.launch([x, y, 3.0], mx.gpu(0), (1, 1, 1), (10, 1, 1)) print(y)
从 CUDA 8.0 开始,您可以改为按名称导出函数。这也允许您使用模板:
source = r''' template<typename DType> __global__ void axpy(const DType *x, DType *y, DType alpha) { int i = threadIdx.x + blockIdx.x * blockDim.x; y[i] += alpha * x[i]; } ''' module = mx.rtc.CudaModule(source, exports=['axpy<float>', 'axpy<double>']) func32 = module.get_kernel("axpy<float>", "const float *x, float *y, float alpha") x = mx.nd.ones((10,), dtype='float32', ctx=mx.gpu(0)) y = mx.nd.zeros((10,), dtype='float32', ctx=mx.gpu(0)) func32.launch([x, y, 3.0], mx.gpu(0), (1, 1, 1), (10, 1, 1)) print(y) func64 = module.get_kernel("axpy<double>", "const double *x, double *y, double alpha") x = mx.nd.ones((10,), dtype='float64', ctx=mx.gpu(0)) y = mx.nd.zeros((10,), dtype='float64', ctx=mx.gpu(0)) func32.launch([x, y, 3.0], mx.gpu(0), (1, 1, 1), (10, 1, 1)) print(y)
相关用法
- Python mxnet.recordio.unpack用法及代码示例
- Python mxnet.recordio.MXIndexedRecordIO.tell用法及代码示例
- Python mxnet.recordio.MXIndexedRecordIO.write_idx用法及代码示例
- Python mxnet.recordio.pack_img用法及代码示例
- Python mxnet.recordio.MXRecordIO.reset用法及代码示例
- Python mxnet.recordio.pack用法及代码示例
- Python mxnet.random.seed用法及代码示例
- Python mxnet.recordio.unpack_img用法及代码示例
- Python mxnet.recordio.MXIndexedRecordIO用法及代码示例
- Python mxnet.recordio.MXRecordIO.read用法及代码示例
- Python mxnet.recordio.MXIndexedRecordIO.read_idx用法及代码示例
- Python mxnet.recordio.MXRecordIO用法及代码示例
- Python mxnet.recordio.MXRecordIO.write用法及代码示例
- Python mxnet.symbol.op.broadcast_logical_xor用法及代码示例
- Python mxnet.test_utils.get_zip_data用法及代码示例
- Python mxnet.ndarray.op.uniform用法及代码示例
- Python mxnet.symbol.op.log_softmax用法及代码示例
- Python mxnet.symbol.space_to_depth用法及代码示例
- Python mxnet.ndarray.op.sample_negative_binomial用法及代码示例
- Python mxnet.ndarray.NDArray.ndim用法及代码示例
注:本文由纯净天空筛选整理自apache.org大神的英文原创作品 mxnet.rtc.CudaModule。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。