Постоянное использование хоста float в ядре в CUDA

Я использую CUDA 5.0. Я заметил, что компилятор позволит мне использовать объявленный хостИНТ константы в ядрах. Однако он отказывается компилировать любые ядра, которые используют объявленные хостомпоплавок константы. Кто-нибудь знает причину этого кажущегося несоответствия?

Например, следующий код работает нормально, как есть, но он не скомпилируется, если последняя строка в ядре не закомментирована.

#include 
#include 

static int   __constant__ DEV_INT_CONSTANT   = 1;
static float __constant__ DEV_FLOAT_CONSTANT = 2.0f;

static int   const        HST_INT_CONSTANT   = 3;
static float const        HST_FLOAT_CONSTANT = 4.0f;

__global__ void uselessKernel(float * val)
{
    *val = 0.0f;

    // Use device int and float constants
    *val += DEV_INT_CONSTANT;
    *val += DEV_FLOAT_CONSTANT;

    // Use host int and float constants
    *val += HST_INT_CONSTANT;
    //*val += HST_FLOAT_CONSTANT; // won't compile if uncommented
}

int main(void)
{
    float * d_val;
    cudaMalloc((void **)&d_val, sizeof(float));

    uselessKernel(d_val);

    cudaFree(d_val);
}

Ответы на вопрос(1)

Ваш ответ на вопрос