我认为这可以节省一些配置时间,但是我不确定这是否会导致意外的行为。
答案 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设备上)。