澄清一些关于culasparse的事情

时间:2014-02-26 11:36:25

标签: cuda cula

检查this示例(最后的API示例),我想问几个问题。

1)在这个例子中,我们提供了非零元素的矩阵。虽然矩阵的实际大小是多少?这些是矩阵的元素还是包含非零元素的位置?

2)我可以在计算中使用(在像culaSparseSetDcooData这样的函数中使用)矩阵A,它将包含零和非零元素吗? 如果我想创建一个仅用于测试的样本矩阵,我是否应该创建一个零元素的矩阵,然后用一些元素填充它然后呢?

1 个答案:

答案 0 :(得分:2)

关于1)有趣的是,COO格式的矩阵大小没有明确规定:它由矩阵的非零元素的坐标组成。如果您有一个包含1个非零元素的COO矩阵,那么这可能是

double a[1] =  { 1.0 };
int colInd[1] = { 10 };
int rowInd[1] = { 20 };

和(从行/列索引可以看出)描述至少大小为11 * 21的矩阵的元素,或者它可能是

double a[1] =  { 1.0 };
int colInd[1] = { 1000 };
int rowInd[1] = { 2000 };

并描述至少大小为1001 * 2001

的矩阵元素

然而,在这个例子中,似乎这是一个二次矩阵,n=8似乎是大小。 (不幸的是,似乎没有culaSparseSetDcooData函数的详细文档......)

关于2)这不完全清楚。如果您的问题是“非零”值可能(实际上)是否具有值0.0,那么我可以说:是的,应该允许这样做。但是,您所引用的示例已经显示了如何创建一个简单的测试矩阵。