Можно использовать массивы графического процессора в качестве аргументов ввода и вывода к функции точки входа при генерации CUDA® MEX, исходный код, статические библиотеки, динамические библиотеки и исполняемые файлы. GPU Coder™ автоматически заботится о копиях CPU-GPU на основе входного типа и использования переменной в вашем MATLAB® проект. Функциональность графического процессора массивов полезна в минимизации копий CPU-GPU, когда вы пытаетесь:
Интегрируйте сгенерированный код с существующей реализацией, которая имеет ее выходные параметры на памяти графического процессора.
Передайте MATLAB gpuArray
входные параметры к сгенерированной MEX-функции.
Чтобы отметить вход к функции точки входа как тип графического процессора, используйте один из следующих подходов:
Использование coder.typeof
представлять gpuArray
тип входного параметра функции точки входа. Например:
coder.typeof(rand(20),'Gpu',true);
Используйте gpuArray
функция. Например:
in = gpuArray(rand(1,10)); codegen -config cfg -args {in} test
GPU Coder поддерживает весь тип данных, поддержанный gpuArray
.
Для использования переменных массивов размерности только поддерживаются ограниченные типы.
Для 'lib'
, 'dll'
, и 'exe'
цели, необходимо передать правильные указатели на функцию точки входа в примере основная функция. Например, если вход отмечен как 'Gpu'
, указатель графического процессора должен быть передан, когда точка входа называется от основной функции.
MemoryMode
(режим выделения памяти), свойство объекта настройки кода должно быть установлено в 'discrete'
. Например,
cfg.GpuConfig.MallocMode = 'discrete';
Во время генерации кода, если один вход к функции точки входа имеет массив графического процессора, то GPU Coder пытается сделать все выходные переменные типами массива графического процессора, если они поддерживаются gpuArray
. Например. если функция точки входа возвращает struct
и потому что struct
не поддерживается gpuArray
, сгенерированный код возвращает CPU выход. Однако, если поддерживаемый матричный тип возвращен, то сгенерированный код возвращает GPU выход.
Примечание
Передача gpuArray
входные параметры не гарантируют выходные параметры, чтобы также быть gpuArray
.
GPU Coder не поддерживает следующие типы:
char
half
Скалярные массивы графического процессора
Структуры
Массивы ячеек
Классы
Перечислимые типы
Типы данных с фиксированной точкой
GPU Coder не поддерживает 'unified'
режим memory для массивов графического процессора.
coder.gpu.kernel
| coder.gpu.kernelfun
| gpucoder.matrixMatrixKernel
| coder.gpu.constantMemory
| gpucoder.stencilKernel