exponenta event banner

Технологический процесс

  1. Графический процессор Coder™ использует функциональные возможности, предоставляемые MATLAB ® Coder™, поэтому первым шагом в процессе поиска и устранения неисправностей является обеспечение совместимости кода с кодером MATLAB. Для просмотра требований к программированию и передовых практик для кодера MATLAB см. раздел Программирование MATLAB для генерации кода.

  2. Кодер GPU имеет различную поддержку функций, совместимых с кодером MATLAB и Toolbox™ обработки изображений. Список функций, протестированных с помощью кодера графического процессора, приведен в документе MATLAB Algorithm Design for GPU. Эти функции подразделяются на полностью поддерживаемые функции, неподдерживаемые функции и функции, поддерживаемые при определенных условиях. Например, существуют определенные функции, которые работают в векторных операциях, но не при использовании в теле цикла. Однако рекомендуется по возможности переписывать функции панели инструментов с использованием только MATLAB.

  3. Кодер GPU использует программный анализ параллелизма для обнаружения параллельных циклов. Традиционные последовательные алгоритмы могут значительно различаться в том, насколько они параллелизуемы. Некоторые проблемы смущающе параллельны и легко делятся на части. С другой стороны, некоторые алгоритмы требуют некоторого объема рефакторинга, чтобы раскрыть присущий им параллелизм. Параллельный анализ, который выполняет GPU Coder, консервативен. В результате бывают случаи, когда петли действительно параллельны, но анализ зависимости не может обнаружить параллелизм.

  4. Для определения размеров ядра необходимо выполнить статическую привязку петель. Например, если циклы, циклы с инструкциями break и циклы, диапазон итераций которых не может быть статически определен, не могут быть легко сопоставлены с ядрами CUDA ® и должны быть перезаписаны. Дополнительные сведения см. в разделе, посвященном анализу ядра.

  5. После рассмотрения и устранения этих проблем вы готовы создать код CUDA. Самый простой способ создать код - это отказаться от прагматики coder.gpu.kernelfun в функции точки входа. Затем можно выполнить действия, описанные в разделе Начало работы с кодером графического процессора, чтобы создать код CUDA из командной строки или с помощью приложения кодера графического процессора.

  6. Для оценки производительности сгенерированного кода CUDA можно использовать MATLAB. tic и toc функции и определение времени выполнения. Если результирующее ускорение графического процессора неудовлетворительно, можно выполнить предварительную диагностику, например:

    • Анализ ядра

    • Анализ узких мест памяти

    • Анализ с помощью визуального профилировщика NVIDIA (nvvp) инструмент

Связанные темы