Рабочий процесс

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

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

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

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

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

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

    • Анализ ядра

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

    • Анализ с инструментом NVIDIA Visual Profiler (nvvp)