Компиляция конкретного кода NULLs моих текстур - PullRequest
0 голосов
/ 06 августа 2010

Очень странная ошибка: если я добавляю какой-то определенный код в свой проект, любые используемые мной текстуры содержат только 0. Даже когда я не запускаю какой-либо добавленный код.

Конкретный код здесь - это ядра образца nVidia CUDA [1], образца фильтрации бикубической текстуры, в частности ядра CatMulRom. Я проследил это до одной из подфункций. Если я сброшу переменную там, все вернется в норму. Это действительно, очень странно, и я понятия не имею, что это может быть. Добавление и использование бикубического ядра не вызывает проблем.

Вот изменение, которое «исправляет» проблему:

__host__ __device__
float catrom_w1(float a)
{
    a = 1;  // Fix
    return 1.0f + a*a*(-2.5f + 1.5f*a);
}

Если я сбрасываю переменную, она работает, если я не использую CatMulRom. Если я попытаюсь использовать его, текстуры снова будут равны нулю. Текстуры, о которых идет речь, определяются следующим образом:

texture<uchar1, 2, cudaReadModeNormalizedFloat> tex;

Я отредактировал шаблон, надеясь, что он решит проблему, но он сохраняется.

[1] http://developer.download.nvidia.com/compute/cuda/sdk/website/samples.html

1 Ответ

3 голосов
/ 06 августа 2010

Вы разорили свой стек.

...