2013-06-05 9 views
54

AccelerEyes объявлено в декабре 2012 года, что он работает с Mathworks на код GPU и прекращенная свой продукт Куртка для MATLAB:Ускорение кода MATLAB с использованием графических процессоров?

http://blog.accelereyes.com/blog/2012/12/12/exciting-updates-from-accelereyes/

К сожалению, они не продают лицензии куртки больше.

Насколько я понимаю, решение ArrayFire на основе массива Jacket GPU было намного быстрее, чем решение gpuArray, предоставляемое MATLAB.

Я начал работать с gpuArray, но вижу, что многие функции реализованы плохо. Например, очень медленный

myArray(:) = 0 

. Я написал несколько пользовательских ядер CUDA, но плохо реализованная стандартная функциональность MATLAB добавляет много накладных расходов, даже если она постоянно работает с gpuArrays. Я исправил некоторые проблемы, заменив код MATLAB на написанный вручную код CUDA, но я не хочу переопределять стандартную функциональность MATLAB.

Еще одна особенность, которую я пропускаю, - это редкие матрицы графического процессора.

Так что мои вопросы:

Как это ускорить плохо реализованные реализации GPU по умолчанию, предоставляемые MATLAB? В частности, как мне ускорить работу с разреженной матрицей в MATLAB с помощью GPU?

+24

Конечно 'MyArray (:) = 0' медленно - это перемещение нагрузки нули от CPU к GPU без причины. Это не означает, что возможности графического процессора MATLAB реализованы плохо, это означает, что вам нужно знать, как их использовать; попробуйте 'myArray = gpuArray.zeros (size (myArray))' вместо. –

+2

Сэм, myArray(:) = 0 должен перемещать только одно целое от ЦП к графическому процессору - если его реализовать оптимально. Использование gpuArray.zeros() еще медленнее. На данный момент я использую myArray = myArray - myArray, который быстрее - но все же медленный. Я надеюсь, что функциональность Jacket поступит со следующей версией MATLAB. – Stiefel

+0

Вы пробовали отправить по электронной почте AccelerEyes или TMW, чтобы получить ответ? – bla

ответ

2

Мне было приятно поговорить с Джоном, основателем AccelerEyes. Они не получили ускорение, потому что они просто удалили плохо написанный код и заменили его кодом, который сохранял несколько бит здесь и там. Их ускорение в основном заключалось в использовании доступности кеша и выполнении большого количества операций в оперативной памяти (GPU). Matlab полагался на передачу данных между GPU и CPU, если я правильно помню, и, следовательно, ускорение было сумасшедшим.

4

MATLAB поддерживает графический процессор на базе CUDA. Вы должны получить к нему доступ из «Parallel Computing Toolbox».Надеюсь, что эти 2 ссылки также помогают:

Parallel Computing Toolbox Features

Основные характеристики

  • Parallel для петель (parfor) для запуска алгоритмов задачи Параллельное на нескольких процессорах
  • Поддержка CUDA -жищенные графические процессоры NVIDIA
  • Полное использование многоядерных процессоров на рабочем столе через рабочих, которые работают локально
  • Компьютер кластера и поддержка сетки (с MATLAB Distributed Computing Server)
  • Interactive и исполнение партии параллельных приложений
  • распределенных массивов и одна программа несколько данных (SPMD) конструируют для обработки больших наборов данных и алгоритмов обработки данных Параллельное

MATLAB GPU Computing Support for NVIDIA CUDA-Enabled GPUs

Использование MATLAB для GPU вычислений позволяет ускорить у наши приложения с GPU проще, чем с помощью C или Fortran. Благодаря знакомому языку MATLAB вы сможете использовать вычислительную технологию CUDA GPU без необходимости изучать тонкости архитектур GPU или низкоуровневых вычислительных библиотек GPU.

Вы можете использовать графические процессоры с MATLAB через Parallel Computing Toolbox, который поддерживает:

  • CUDA с поддержкой графических процессоров NVIDIA с вычислительной способностью 2.0 или выше. Для релизов 14a и ранее достаточно вычислительной способности 1.3.
  • использование GPU непосредственно из MATLAB
    • GPU-enabled MATLAB functions, такие как FFT, фильтр, и несколько операций линейной алгебры
    • GPU-enabled functions in toolboxes: Image Processing Toolbox, система связи Toolbox, Статистика и машинного обучения Toolbox, Neural Network Toolbox, Панель инструментов Phased Array Systems и Toolbox Toolbox (подробнее о поддержке графических процессоров для алгоритмов обработки сигналов)
    • CUDA kernel integration in MATLAB applications, используя только одну строку кода MATLAB
  • Несколько графических процессоров на настольных и компьютерных кластеров с использованием рабочих MATLAB в Parallel Computing Toolbox и MATLAB Distributed Computing Сервер
+2

Хотя эти ссылки могут ответить на этот вопрос, вам следует избегать ссылок только для ссылок и обобщать или цитировать статьи, потому что ссылки, как правило, распадаются со временем. – pinckerman