关于cublas的一般问题。对于单线程,如果没有从GPU到CPU的内存传输(例如cublasGetVector),cublas内核功能(例如cublasDgemm)会自动与主机同步吗?

    cublasDgemm();
//cublasGetVector();
    host_functions()


此外,在两个相邻的内核调用之间如何处理?

cublasDgemm();
cublasDgemm();


并且,不涉及先前内核中使用的全局内存的同步传输又如何呢?

cublasDgemm(...gA...gB...gC);
cublasGetVector(...gD...D...);

最佳答案

不,除了一些返回标量值的1级例程之外,CUBLAS API是异步的。

诸如cublasDgemm之类的3级例程不会阻塞主机,您需要调用阻塞API例程,例如同步内存传输或显式的主机GPU同步调用,以确保CUBLAS调用已完成。

07-26 00:45