Hi
Why compiler using 21 gegister values in this code:
__global__ void BlurMultiKernel
(
unsigned char* input_data,
unsigned char* output_data
)
{
int x = blockIdx.x*blockDim.x + threadIdx.x;
int y = blockIdx.y*blockDim.y + threadIdx.y;
for( int k = 0; k < define_MasSize; k++ )
{
int res = 0;
float count = 0.0;
float force = 0.0;
for(int j1 = (y) - define_blur_len; j1 <= (y) + define_blur_len; ++j1 )
{
if( j1 >=0 && j1 < define__height )
{
for( int i1 = (x) - define_blur_len; i1 <= (x) + define_blur_len; ++i1 )
{
if( i1 >= 0 && i1 < define__width )
{
// 0 - данная точка, 1.0 - на расстоянии blur_len
force = 1 - pow ((sqrt (float((j1-(y))*(j1-(y)) + (i1-(x))*(i1-(x))))/ (float)define_blur_len)/2, define_blur_force);
res += int(*(((input_data+k*define__width*define__height) + j1*define__width) + i1)* force);
count += force;
} // end if
} // end for i1
} // end if
} // end for j1
*((output_data+k*define__width*define__height) + (y)*define__width + (x)) = count ? int(res/count) : *( (input_data+k*define__width*define__height) + (y)*define__width + (x));
} // end for k
}