Поддержка массивов графического процессора

Можно использовать массивы графического процессора в качестве аргументов ввода и вывода к функции точки входа при генерации CUDA® MEX, исходного кода, статических библиотек, динамических библиотек и исполняемых файлов. В зависимости от того, идентифицирован ли данный вход к функции точки входа как центральный процессор или основанный на графическом процессоре вход и в зависимости от использования переменной (используемый на графическом процессоре или на центральном процессоре) cudaMemcpy вызовы вставляются эффективно в сгенерированном коде. При помощи функциональности графического процессора массивов можно минимизировать количество cudaMemcpy вызовы в сгенерированном коде.

Чтобы использовать эту функциональность, выполнить одно из следующих действий:

  • Использование coder.typeof представлять gpuArray тип входного параметра функции точки входа. Например:

    coder.typeof(rand(20),'Gpu',true);
    

  • Используйте gpuArray функция. Например:

    in = gpuArray(rand(1,10)); 
    codegen -config cfg -args {in} test
    

Факторы

  • GPU Coder™ поддерживает все числовые и логические типы. char и half типы данных не поддерживаются. Для использования переменных массивов размерности только поддерживаются ограниченные типы. Скалярные массивы графического процессора, структуры, массивы ячеек, классы, перечислимые типы и типы данных с фиксированной точкой не поддерживаются.

  • Генератор кода поддерживает все целевые типы для массивов графического процессора - 'mex', 'lib', 'dll', и 'exe'. Для 'lib', 'dll', и 'exe' цели, необходимо передать правильные указатели на функцию точки входа в примере основная функция. Например, если вход отмечен как 'Gpu', указатель графического процессора должен быть передан, когда точка входа называется от основной функции. Программное обеспечение В цикле (SIL) поддерживается для 'lib' и 'dll'.

  • Выделение памяти (malloc) свойство режима объекта настройки кода должно быть установлено в быть 'discrete'. Например,

    cfg.GpuConfig.MallocMode = 'discrete';
    
    Массивы графического процессора не поддерживаются в 'unified' режим memory.

  • Во время генерации кода, Если один вход к функции точки входа имеет массив графического процессора, то выходные переменные являются всеми типами массива графического процессора, если они поддерживаются для генерации кода графического процессора. Например. если функция точки входа возвращает struct и потому что struct не поддерживается, сгенерированный код возвращает CPU выход. Однако, если поддерживаемый матричный тип возвращен, то сгенерированный код возвращает GPU выход.

Смотрите также

| | | |

Похожие темы