Cublas или поддерживаемые библиотеки и акцент на чтение для новичка

StackOverflow https://stackoverflow.com/questions/1549920

  •  20-09-2019
  •  | 
  •  

Вопрос

Я пытаюсь использовать мощность графического процессора (NVIDIA Quadro NVS140M), чтобы ускорить некоторые матричные вычисления в моем проекте. Я читаю некоторую документацию (Руководство по программированию, руководство по лучшим практикам и справочное руководство), но не уверен, на каком разделе я должен сосредоточиться. Было бы здорово, если бы я мог получить некоторые советы по этому поводу.

Кроме того, мне интересно, есть ли сторонние SDK, такие как Cublas.net, которые могут упростить процесс разработки Cublas, прежде чем я буду придерживаться предлагаемых функций Cublas, которые помогут мне достичь моих целей с помощью моего проекта. Еще раз заранее спасибо за комментарии.

Это было полезно?

Решение

Большая часть документации, которая поставляется с загрузкой CUDA Toolkit и SDK, касается CUDA в целом, а не CubLAS. Начните с CUBLAS_Library_2.3.pdf Файл, если вы просто собираетесь использовать Cublas-вам не нужно будет писать свои собственные ядра Cuda. Если вы уже используете BLA процессора, КУББАС не должно быть сложно забрать. (А если нет, то подумайте о том, чтобы попробовать оптимизированный процессор один перед Cublas, поскольку программировать его будет легче).

Если вы кодируете на .NET, то самый простой способ использования CUBLAS, вероятно,-через вызовы платформы Invoke в cublas.dll. Обязательно сохраните прямо, какие массивы находятся в памяти хоста (процессора), а какие в памяти устройства (GPU).

Имейте в виду, что Cuda & Cublas не волшебные пули. Производительность зависит от множества факторов (особенно трансфертов в автобусе PCIe), и простое обмен Cublas вызовов на вызовы процессоров BLA могут не дать вам ускорения. Возможно, вам придется внести более существенные изменения в свой собственный код, чтобы получить улучшение производительности. Те другие руководства, которые вы упоминаете, очень полезны для понимания архитектуры CUDA и ее узких мест.

РЕДАКТИРОВАТЬ: Я не понял о границе между кодом пользователя и кодом ядра. Cublas-это библиотека предварительно построенных, оптимизированных ядер CUDA. Если вам нужна только функциональность BLA, вам не нужно писать свои собственные ядра. Вместо этого просто вызовите функции Cublas. При настройке производительности вам не нужно настраивать ядра Cublas, но вам, возможно, потребуется изменить то, как и когда вы их называете, и как вы используете память, чтобы минимизировать количество трансфертов на автобусе PCI Express.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top