Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cuda 设备存储器上的推力减小结果_Cuda_Reduce_Thrust - Fatal编程技术网

Cuda 设备存储器上的推力减小结果

Cuda 设备存储器上的推力减小结果,cuda,reduce,thrust,Cuda,Reduce,Thrust,是否可以将推力::减少操作的返回值保留在设备分配的内存中?如果是这样的话,它是否和将值分配给cudaMalloc’ed区域一样简单,或者我应该使用一个推力::设备\u ptr 是否可以将推力::减少操作的返回值保留在设备分配的内存中 简而言之,答案是否定的 返回数量,即减少的结果。这: 以reduce为例,它是同步和 始终将其结果返回给CPU: 模板 T reduce(迭代器优先,迭代器最后,T init); 操作结果返回CPU后,如果愿意,可以将其复制到GPU: #include <i

是否可以将推力::减少操作的返回值保留在设备分配的内存中?如果是这样的话,它是否和将值分配给cudaMalloc’ed区域一样简单,或者我应该使用一个推力::设备\u ptr

是否可以将推力::减少操作的返回值保留在设备分配的内存中

简而言之,答案是否定的

返回数量,即减少的结果。这:

以reduce为例,它是同步和 始终将其结果返回给CPU:

模板
T reduce(迭代器优先,迭代器最后,T init);
操作结果返回CPU后,如果愿意,可以将其复制到GPU:

#include <iostream>
#include <thrust/device_vector.h>
#include <thrust/reduce.h>

int main(){

    thrust::device_vector<int> data(256, 1);
    thrust::device_vector<int> result(1);
    result[0] = thrust::reduce(data.begin(), data.end());
    std::cout << "result = " << result[0] << std::endl;
    return 0;
}
#包括
#包括
#包括
int main(){
推力:设备矢量数据(256,1);
推力::装置_矢量结果(1);
结果[0]=推力::减少(data.begin(),data.end());

std::cout是的,应该可以使用推力::reduce_by_键,而不是为键提供推力::常量迭代器。

回答得好,如果你真的想使用reduce并将结果返回到设备内存,你可以使用cuda npp库或自己构建reduce,在cuda示例中查找reduce。reduce_by_键使用常量迭代器是这个问题的一个很好的解决方案,谢谢。我知道这很旧,但是谢谢你的建议,这是这个问题的一个很好的解决方案
#include <iostream>
#include <thrust/device_vector.h>
#include <thrust/reduce.h>

int main(){

    thrust::device_vector<int> data(256, 1);
    thrust::device_vector<int> result(1);
    result[0] = thrust::reduce(data.begin(), data.end());
    std::cout << "result = " << result[0] << std::endl;
    return 0;
}