私は関数を使用して、三重対角方程式系を解きます。出力は正しいが、関数はマルチ・ストリーミングを正しく使用していない。 nvvpプロファイラは、このソルバへの呼び出しがすべて異なるストリームにあるものの、オーバーラップしないことを示しています。 私は暗黙的な同期を考え、ライブラリ関数はnvvpを介してcudaFreeの呼び出しをたくさん持っていることが判明しました。 この暗黙の同期を回避する方法はありますか? cusparseの使用のcuSparse tridiagonalソルバーからcudaFreeを大量に使用
擬似コード:
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。
ありがとうございました。あなたは "仮説を立てるように"言う。 cudaFreeなどの同期関数は、マルチストリーミングの並行性を破るのに十分ではありませんか? –