我正在使用cusparseDgtsv_nopivot
函数来求解三对角方程组。输出是正确的,但该功能没有正确使用 cuda 多流。nvvp 分析器显示,尽管对该求解器的每次调用都在不同的流中,但它们永远不会重叠。我想到了隐式同步,并通过 nvvp 发现库函数在两者之间有很多对 cudaFree 的调用。有没有办法避免这种隐式同步?
使用cusparse的伪代码:
create array of streams[];
create cusparse handle;
for (int i=0;i<Nsystem;i++){
cusparseSetStream(handle,stream[i]);
cusparseDgtsv_nopivot(handle, var for linear system i);
}
destroy cusaprse handle;
PS:提出了类似的 cudafree 问题并解决了处理矩阵:here。