Mercurial > hg > Game > Cerium
view example/fft/cuda/bitReverse.cu @ 2069:26aa08c9a1de draft default tip
cuda example fix
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Sun, 12 Feb 2017 10:04:55 +0900 |
parents | 9ebee99a9aef |
children |
line wrap: on
line source
extern "C" { __global__ void bitReverse(long* param, float* src, float* dst) { unsigned long gid = blockIdx.x*blockDim.x+threadIdx.x; // (unsigned long)s->get_param(0); unsigned long nid = blockIdx.y*blockDim.y+threadIdx.y; // (unsigned long)s->get_param(1); unsigned int j = gid; unsigned long m = param[0]; unsigned long n = param[1]; j = (j & 0x55555555) << 1 | (j & 0xAAAAAAAA) >> 1; j = (j & 0x33333333) << 2 | (j & 0xCCCCCCCC) >> 2; j = (j & 0x0F0F0F0F) << 4 | (j & 0xF0F0F0F0) >> 4; j = (j & 0x00FF00FF) << 8 | (j & 0xFF00FF00) >> 8; j = (j & 0x0000FFFF) << 16 | (j & 0xFFFF0000) >> 16; j >>= (32-m); dst[(nid*n+j)*2] = src[(nid*n+gid)*2]; dst[(nid*n+j)*2+1] = src[(nid*n+gid)*2+1]; } }