gpt4 book ai didi

cuda - CuSparse csrmm 示例

转载 作者:行者123 更新时间:2023-12-05 01:05:45 29 4
gpt4 key购买 nike

我只是想知道 Nvidia 或任何其他使用 csrmm 的可信来源是否提供了任何示例。来自 cusparse 的函数库,将稀疏矩阵与稠密矩阵相乘。

先感谢您

最佳答案

引用the documentation , csrmm函数用于将稀疏矩阵乘以密集矩阵:

C=α∗op(A)∗B+β∗C 

“其中 A 是 m×n 稀疏矩阵……B 和 C 是密集矩阵……”

如果您想查看示例用法,在 appendix B of the documentation 中有一个示例。 :
/* exercise Level 3 routines (csrmm) */
cudaStat1 = cudaMalloc((void**)&z, 2*(n+1)*sizeof(z[0]));
if (cudaStat1 != cudaSuccess) {
CLEANUP("Device malloc failed (z)");
return 1;
}
cudaStat1 = cudaMemset((void *)z,0, 2*(n+1)*sizeof(z[0]));
if (cudaStat1 != cudaSuccess) {
CLEANUP("Memset on Device failed");
return 1;
}
status= cusparseDcsrmm(handle, CUSPARSE_OPERATION_NON_TRANSPOSE, n, 2, n,
nnz, &dfive, descr, cooVal, csrRowPtr, cooColIndex,
y, n, &dzero, z, n+1);
if (status != CUSPARSE_STATUS_SUCCESS) {
CLEANUP("Matrix-matrix multiplication failed");
return 1;
}

在附录 B 中给出的完整工作示例的摘录中,稀疏矩阵 Adescr 表示(矩阵类型描述符), cooVal (A 的非零值), csrRowPtr (A 的 CSR 行指针)和 cooColIndex (A 的 COO 列索引)。 y是指向对应于 B 的稠密矩阵的指针, 和 z是指向对应于 C 的稠密矩阵的指针在一般公式中。

如果你想做密集时间稀疏,你可能也对@talonmies 对 this question 的评论感兴趣。 :

It is a basic associative property of the matrix dot product that (Dense * Sparse).T == Sparse.T * Dense.T

关于cuda - CuSparse csrmm 示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17501258/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com