我应该让cublas处理全局并在不同的(主机)函数中重用它们吗?

时间:2018-07-24 20:19:55

标签: cuda cublas

我认为这可以节省一些配置时间,但是我不确定这是否会导致意外的行为。

1 个答案:

答案 0 :(得分:2)

如果您需要在任何类型的线程并发情况下发出调用,建议使用独立的句柄:

https://docs.nvidia.com/cuda/cublas/index.html#thread-safety2

  

该库是线程安全的,并且只要线程不同时共享同一cuBLAS句柄,就可以从多个主机线程中调用其函数。

还请注意,与特定cublas手柄关联的设备在手柄使用期间应保持不变:

https://docs.nvidia.com/cuda/cublas/index.html#cublas-context

  

假定与特定cuBLAS上下文关联的设备在相应的cublasCreate()cublasDestroy()调用之间保持不变。

否则,即使在多个流之间共享,在属于同一设备和主机线程的cublas调用中,最好使用单个句柄。

CUDA batchCUBLAS sample code中给出了一个示例,该示例将单个“全局”句柄用于多个流式CUBLAS调用(来自同一主机线程,位于同一GPU设备上)。