Как правило, если вы можете написать свой код Matlab «векторизованным» способом, тогда пакеты, такие как AccelerEyes и Jacket, имеют разумные шансы на то, чтобы все было запущено на графическом процессоре. Вы можете в какой-то мере проверить это, проверив, может ли Matlab работать на нескольких ядрах на процессоре (в наши дни Matlab будет использовать несколько ядер, если все будет доступно для параллелизма очевидным образом).
Если это не сработает, вам нужно спуститься на C/C++ через mex, а затем оттуда вызвать OpenCL самостоятельно. Mex - это то, как Матлаб говорит с кодом C, поэтому вы пишете код C, который вызывается Matlab (и получает матрицы и т. Д.), Затем инициализирует и вызывает OpenCL. Это больше работает, но может быть вашим единственным маршрутом (и, даже если автоматизированные пакеты работают в некоторой степени, этот подход все равно может дать больше ускорений, потому что вы можете быть более умными в управлении памятью, например, если вы знаете, что вы делаете).
Accelereyes только для карт NVIDIA, я пользуюсь ATI Проект iptatiproject кажется многообещающим, я проверю его благодаря – omarzouk
yikes !!!! как я боялся, мне придется писать алгоритмы вручную, чтобы иметь возможность делать это с помощью OpenCL. Я имею в виду, что мне будет проще использовать C++, а не matlab, потому что все, что у меня осталось от matlab, - это всего лишь некоторые матричные структуры данных: D , хотя мне было интересно, как Accelereyes сделали свою обертку для nvidia hmmm – omarzouk
Accelereyes is просто оболочка, которая перегружает базовые операторы матриц, такие как умножение, инверсия и т. д., чтобы они выполнялись на графическом процессоре, это, конечно же, дает очень хороший импульс, но это не самый эффективный способ делать то, что сами алгоритмы не записаны чтобы в полной мере использовать параллельные возможности графического процессора, например, использовать параллельные алгоритмы сортировки вместо итеративных или рекурсивных, но это означает, что полная переработка библиотеки matlab: D – omarzouk