【问题标题】:In CUDA, is it guaranteed that the default stream equals nullptr?在CUDA中,是否保证默认流等于nullptr?
【发布时间】:2017-10-27 07:49:21
【问题描述】:

在 CUDA 的 driver_types.h 中,我们有:

typedef __device_builtin__ struct CUstream_st *cudaStream_t;

cuda_runtime.h 中,我们在很多地方都有默认初始化的流参数。例如:

template<class T>
    static __inline__ __host__ cudaError_t cudaLaunchKernel(
    const T *func,
    dim3 gridDim,
    dim3 blockDim,
    void **args,
    size_t sharedMem = 0,
    cudaStream_t stream = 0
)

假设默认流是(cudaStream) nullptr 有多安全?

【问题讨论】:

  • 出于好奇:您为什么需要知道这些?
  • @m.s.:我没有注意到cudaGetDefaultStream() 函数,我想做类似my_stream = condition ? foo() : cudaGetDefaultStream() 的事情。

标签: cuda default-value cuda-streams


【解决方案1】:

这在多个地方都有记载:

  1. Programming guide:

内核启动和主机未指定任何流参数的设备内存副本,或等效地将流参数设置为零,将发布到默认流。

  1. For examplecudaMemcpyAsync

可以选择通过传递非零流参数将副本关联到流。

假设默认流等同于(cudaStream_t) 0 似乎很安全

【讨论】:

    猜你喜欢
    • 2012-04-08
    • 2020-10-15
    • 2010-12-26
    • 1970-01-01
    • 2014-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-13
    相关资源
    最近更新 更多