CUBLAS или поддерживаемые библиотеки, и акцент для чтения для начинающих - PullRequest
1 голос
/ 11 октября 2009

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

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

1 Ответ

2 голосов
/ 11 октября 2009

Большая часть документации, которая поставляется с инструментарием CUDA и загрузками SDK, в основном относится к CUDA, а не к CuBLAS. Начните с файла CUBLAS_Library_2.3.pdf, если вы просто собираетесь использовать CuBLAS - вам не нужно писать собственные ядра CUDA. Если вы уже используете CPU BLAS, CuBLAS не должно быть трудно подобрать. (А если нет, то попробуйте оптимизировать процессор до CuBLAS, так как его будет легче программировать).

Если вы кодируете в .NET, то самый простой способ использовать CuBLAS - это, вероятно, вызовы платформенного вызова в cublas.dll. Не забудьте указать, какие массивы находятся в памяти хоста (ЦП), а какие - в памяти устройства (ГП).

Имейте в виду, что CUDA и CuBLAS не являются волшебными пулями. Производительность зависит от многих факторов (особенно передачи по шине PCIe), и простое переключение вызовов CUBLAS на вызовы CPU-BLAS может не дать вам ускорений. Возможно, вам придется внести более существенные изменения в свой собственный код, чтобы повысить производительность. Эти другие упомянутые вами руководства очень полезны для понимания архитектуры CUDA и ее узких мест.

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

...