0

我正在使用 cusp 进行稀疏矩阵乘法。从结果矩阵中,我需要最大值而不将矩阵从设备内存复制到主机内存。我打算将结果矩阵包装在推力设备指针中,然后使用函数推力::max_element来获取最大元素。矩阵采用 coo 格式。如果 C 是结果稀疏矩阵,则
C.row_indices[]:包含行号
C.column_indices[]:包含列号
C.values[]:包含实际值

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

thrust::device_ptr<int> dev_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>)

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

4

1 回答 1

1

如果我的设备矩阵定义是这样的:

cusp::coo_matrix<int, double, cusp::device_memory> 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);
于 2012-10-30T15:54:00.923 回答