小编use*_*730的帖子

boost :: device_vector在常量内存中

我有一个需要在设备上多次引用的float数组,所以我认为存储它的最佳位置是__ constant __ memory(使用此引用).数组(或向量)需要在初始化时在运行时写入一次,但是由多个不同的函数读取数百万次,因此每次函数调用向内核的不断复制似乎是一个坏主意.

const int n = 32;
__constant__ float dev_x[n]; //the array in question

struct struct_max : public thrust::unary_function<float,float> {
    float C;
    struct_max(float _C) : C(_C) {}
    __host__ __device__ float operator()(const float& x) const { return fmax(x,C);}
};
void foo(const thrust::host_vector<float> &, const float &);

int main() {
    thrust::host_vector<float> x(n);
    //magic happens populate x
    cudaMemcpyToSymbol(dev_x,x.data(),n*sizeof(float));

    foo(x,0.0);
    return(0);
}

void foo(const thrust::host_vector<float> &input_host_x, const float &x0) {
    thrust::device_vector<float> dev_sol(n);
    thrust::host_vector<float> host_sol(n);

    //this method works fine, but the …
Run Code Online (Sandbox Code Playgroud)

cuda thrust

8
推荐指数
1
解决办法
1905
查看次数

标签 统计

cuda ×1

thrust ×1