Использование функции MATLAB с переменными CUDA GPU - PullRequest
1 голос
/ 26 ноября 2011

После преобразования 2D-массива из ЦП в память ГП для работы на ГП я сталкиваюсь с множеством ошибок встроенных функций Matlab, таких как minmax(array), утверждающих, что моя переменная ГП не является массивом или ячейкой:

??? Ошибка при использовании ==> minmax при 27 Данные не являются матрицей или массивом ячеек.

Хотя переданная переменная является преобразованным 2D-массивом, но тип изменяется с <11x4096 double> на <11x4096 parallel.gpu.GPUArray>.

Кто-нибудь может помочь мне заставить Matlab понять, что переменная GPU - это массив?

Спасибо всем.

1 Ответ

1 голос
/ 27 ноября 2011

Для массивов, хранящихся в графическом процессоре, поддерживается только небольшое подмножество команд MATLAB (т. Е. Массивов типа GPUArray).

См. эту страницу документации из Parallel Computing Toolbox для получения подробной информации о поддерживаемых функциях. Вы заметите, что список содержит исключительно функции из базовой MATLAB, такие как арифметические, экспоненциальные и тригонометрические функции, линейная алгебра и преобразования Фурье; ничего похожего на функции панели инструментов более высокого уровня, такие как minmax из Neural Network Toolbox.

Перегрузка функции для ввода GPUArray, чтобы она выполнялась на GPU, а не на CPU, является основной задачей, включающей повторную реализацию алгоритма для новой и высокопараллельной архитектуры. Кроме того, только некоторые типы высокопараллельных алгоритмов обычно выигрывают от параллелизма GPU. Поэтому я не ожидаю, что MathWorks в ближайшее время предоставит поддержку GPUArray в Neural Network Toolbox.

Если вам конкретно нужно распараллелить minmax на графическом процессоре, а не на нейронных сетях в целом, это будет не так сложно сделать самостоятельно - возможно, всего пара строк, включающих min, max и arrayfun.

Сказав это, сообщение об ошибке может дать гораздо более подробное объяснение проблемы. Похоже, разработчики это тоже знают: если вы наберете edit nntype.data и посмотрите на строку 93, откуда и появляется сообщение об ошибке, вы увидите строку комментария % TODO - More detailed response. Ницца!

...