我想模仿CPU上CUDA双线性插值的行为,但我发现返回值tex2D似乎不适合双线性公式.
我想将插值系数从比特值[1]的比特转换float为9比特定点格式导致不同的值.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) 如果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 和随机游走索引向量实现我的目标吗?