Cuda 在推力指针中包裹一个尖点稀疏矩阵变量

Cuda 在推力指针中包裹一个尖点稀疏矩阵变量,cuda,max,sparse-matrix,thrust,cusp-library,Cuda,Max,Sparse Matrix,Thrust,Cusp Library,我使用cusp进行稀疏矩阵乘法。从结果矩阵中,我需要最大值,而无需将矩阵从设备内存复制到主机内存。我计划将结果矩阵包装在推力装置指针中,然后使用函数推力::max_element获得max element。矩阵采用coo格式。如果C是合成稀疏矩阵,则 C.行索引[]:包含行编号 C.列索引[]:包含列编号 C.值[]:包含实际值 所以基本上我需要C.values数组中的最高值。 使用 推力::设备_ptrdev _ptr=C.values; 这是一个错误 error: no instance

我使用cusp进行稀疏矩阵乘法。从结果矩阵中,我需要最大值,而无需将矩阵从设备内存复制到主机内存。我计划将结果矩阵包装在推力装置指针中,然后使用函数推力::max_element获得max element。矩阵采用coo格式。如果C是合成稀疏矩阵,则
C.行索引[]:包含行编号
C.列索引[]:包含列编号
C.值[]:包含实际值

所以基本上我需要C.values数组中的最高值。
使用

推力::设备_ptrdev _ptr=C.values;
这是一个错误

error: no instance of constructor "thrust::device_ptr<T>::device_ptr [with T=int]" matches the argument list
 argument types are: (cusp::array1d<float, cusp::host_memory>)
错误:构造函数“推力::设备\u ptr::设备\u ptr[with T=int]”的实例与参数列表不匹配
参数类型有:(cusp::array1d)

如何包装结果矩阵以便在推力库中使用?

如果我的设备矩阵定义如下:

cusp::coo_matrix<int, double, cusp::device_memory> A_d = A;
cusp::coo_矩阵A_d=A;
然后试试这个:

thrust::device_ptr<double> dev_ptr = &(A_d.values[0]);
thrust::device_ptr<double> max_ptr = thrust::max_element(dev_ptr, dev_ptr + 6);
推力::设备的开发速度=&(A_d.值[0]);
推力:设备推力:最大推力=推力:最大推力元件(dev_ptr,dev_ptr+6);
thrust::device_ptr<double> dev_ptr = &(A_d.values[0]);
thrust::device_ptr<double> max_ptr = thrust::max_element(dev_ptr, dev_ptr + 6);