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?
Конечно 'MyArray (:) = 0' медленно - это перемещение нагрузки нули от CPU к GPU без причины. Это не означает, что возможности графического процессора MATLAB реализованы плохо, это означает, что вам нужно знать, как их использовать; попробуйте 'myArray = gpuArray.zeros (size (myArray))' вместо. –
Сэм,
myArray(:) = 0
должен перемещать только одно целое от ЦП к графическому процессору - если его реализовать оптимально. ИспользованиеgpuArray.zeros()
еще медленнее. На данный момент я используюmyArray = myArray - myArray
, который быстрее - но все же медленный. Я надеюсь, что функциональность Jacket поступит со следующей версией MATLAB. – StiefelВы пробовали отправить по электронной почте AccelerEyes или TMW, чтобы получить ответ? – bla