关于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调用已完成。