Написание поверхности CUDA опирается на массив векторов - PullRequest
2 голосов
/ 15 июля 2011

Я пытаюсь записать в двумерный cudaArray через surface<void, 2>. Массив имеет формат канала {32, 32, 0, 0, cudaChannelFormatKindFloat} или, проще говоря, содержит vector2 s.

Я пытаюсь записать vector2 на поверхность в положении, указанном целочисленными координатами (x, y). Хорошо работает следующее:

// write the float2 vector d to outSurf
surf2Dwrite(d.x, outSurf, x * sizeof(float2), y);
surf2Dwrite(d.y, outSurf, x * sizeof(float2) + sizeof(float), y);

Однако, если я сделаю

surf2Dwrite(d, outSurf, x * sizeof(float2), y);

записывается только x компонента вектора. В чем причина этого немного неинтуитивного поведения?

1 Ответ

2 голосов
/ 15 июля 2011

Мне трудно поверить, что любой из этих вызовов surf2Dwrite на самом деле делает то, что, как вы думаете, он делает.Чтобы написать float2, я бы использовал это:

surf2Dwrite<float2>(d, outSurf, x, y);

Аргументы x и y - это координаты поверхности, на которую вы пишете, а параметр шаблона сообщает вызову размер доступного типа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...