Делают ли make_cudaExtent, make_cudaPitchedPtr, make_cudaPos что-то особенное? - PullRequest
1 голос
/ 11 января 2020

CUDA имеет три функции, которые принимают отдельные скалярные значения и создают структуры CUDA-Runtime-API-speci c с этими значениями:

__host__ ​cudaExtent make_cudaExtent ( size_t w, size_t h, size_t d );
__host__ ​cudaPitchedPtr make_cudaPitchedPtr ( void* d, size_t p, size_t xsz, size_t ysz );
__host__ ​cudaPos make_cudaPos ( size_t x, size_t y, size_t z );

Эти функции делают что-то кроме того, что мы могли бы делаем себя как:

cudaExtent { w, h, d };
cudaPitchedPtr { d, p, xsz, ysz };
cudaPos { x, y, z };

? То есть CUDA как-то "благословляет" созданные структуры? С одной стороны, не похоже, что такое «благословение» должно быть; но тогда - зачем API для этого? Я имею в виду, что не все структуры, связанные с API CUDA, имеют такие функции конструктора.

1 Ответ

2 голосов
/ 11 января 2020

Делают ли эти функции что-то кроме того, что мы могли бы сделать сами ...?

Нет. Чтобы выбрать пример, вы можете точно увидеть, что делает make_cudaExtent, посмотрев его определение в заголовочном файле CUDA driver_functions.h

То есть, CUDA каким-то образом "благословляет" созданные структуры?

Нет.

.... зачем есть API для этого?

Это потребует спекуляций о мотивации CUDA команда разработчиков, которую вы, я и кто-либо другой, кроме, может быть, Иан Бак, Ник Уилт, Майк Мерфи, Норберт Джуффа и несколько других могут быть посвящены или вспомнить.

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