我将CUSP用于GPU加速代码的一部分。我需要从尖峰矩阵C中提取对角线。应在下面的代码中将其放入对角线。

cusp::extract_diagonal(C, diagonal);


但是在编译时,我得到“尖峰”没有成员“ extract_diagonal”

如果我有:

#include <cusp/format_utils.h>


如在示例中,我找不到format_utils.h。如果我插入详细信息以完成标题的路径,如下所示:

#include <cusp/detail/format_utils.h>


编译能够找到format_utils.h,但仍然说没有“ extract_diagonal”

我正在查看的示例是:

// include cusp array1d header file
#include <cusp/array1d.h>
#include <cusp/coo_matrix.h>
#include <cusp/print.h>
#incldue <cusp/gallery/poisson.h>
#include <cusp/format_utils.h>
int main()
{
// initialize 5x5 poisson matrix
cusp::coo_matrix<int,float,cusp::host_memory> A;
cusp::gallery::poisson5pt(A, 5, 5);
// allocate array to hold diagonal entries
cusp::array1d<float, cusp::host_memory> diagonal(A.num_rows);
// extract diagonal of A
cusp::extract_diagonal(A, diagonal);
// print diagonal entries
cusp::print(diagonal);
}


版本如下:

The following libraries were found:
CUDA   v6.0
Thrust v1.7.1
Cusp   v0.4.0


我是否缺少某些包含或其他内容?不得已时,我将所有头文件都包含在主cusp目录中无济于事。

任何建议都很好。

最佳答案

您找不到cusp/format_utils.h,因为您正在使用的CUSP版本中不存在cusp/format.h,该版本已有4年的历史,并且从那时起代码库已被重构。如果升级到CUSP 0.5.1(编写了您正在使用的示例),则应该会发现它可以工作。

或者,如果将include更改为,则可能会发现它也可以正常工作,尽管我不能保证,并且懒得提取CUSP的较早版本并进行检查。

10-08 18:46