小编use*_*868的帖子

C/C++和CUDA中的双线性插值

我想模仿CPU上CUDA双线性插值的行为,但我发现返回值tex2D似乎不适合双线性公式.

我想将插值系数从比特值[1]的比特转换float9比特定点格式导致不同的值.8

根据转换fomula [2,线106] ,该转换的结果将是相同的作为输入float时coeffient是1/2^n,与n=0,1,..., 8,但我仍然(不总是)接收怪异值.

下面我报告一个奇怪值的例子.在这种情况下,奇怪的价值总是发生在id = 2*n+1,有人可以告诉我为什么吗?

Src数组:

Src[0][0] =  38;  
Src[1][0] =  39;  
Src[0][1] = 118;  
Src[1][1] =  13;  
Run Code Online (Sandbox Code Playgroud)

纹理定义:

static texture<float4, 2, cudaReadModeElementType> texElnt;
texElnt.addressMode[0] = cudaAddressModeClamp;
texElnt.addressMode[1] = cudaAddressModeClamp;
texElnt.filterMode = cudaFilterModeLinear;
texElnt.normalized = false;
Run Code Online (Sandbox Code Playgroud)

内核功能:

static __global__ void kernel_texElnt(float* pdata, int w, int h, int c, float stride/*0.03125f*/) {
    const int gx = blockIdx.x*blockDim.x + …
Run Code Online (Sandbox Code Playgroud)

c++ cuda

11
推荐指数
1
解决办法
8499
查看次数

使用 Thrust 计算直方图

如果i是像下面这样的随机游走(每个索引不是唯一的),并且有一个A用零填充的设备向量。

{0, 1, 0, 2, 3, 3,  ....}
Run Code Online (Sandbox Code Playgroud)

推力是否可以A[i]自动增加,操作后A可能看起来像

//2 means appears count of 0's
//1 means appears count of 1's
//1 means appears count of 2's
//2 means appears count of 3's
{2, 1, 1, 2}
Run Code Online (Sandbox Code Playgroud)

我试过几种情况,但这些情况只在A宿主向量时工作正常,我猜是因为推力是并行的,所以以前的结果不能影响新的结果,结果可能看起来像 //only count once no索引出现多少次{1, 1, 1, 1}

推力可以通过设备向量 A 和随机游走索引向量实现我的目标吗?

cuda thrust

5
推荐指数
1
解决办法
1546
查看次数

标签 统计

cuda ×2

c++ ×1

thrust ×1