2013-09-10 1 views
4

В настоящее время я выполняю некоторые алгоритмы обработки изображений, используя OpenCL. В основном мой алгоритм требует решения линейной системы уравнений для каждого пикселя. Каждая система не зависит от других, поэтому переход к параллельной реализации является естественным.Вызов подпрограмм BLAS внутри ядер OpenCL

Я рассмотрел несколько пакетов BLAS, таких как ViennaCL и AMD APPML, но, похоже, все они имеют один и тот же шаблон использования (хост, вызывающий подпрограммы BLAS, который должен выполняться на устройстве CL).

Мне нужна библиотека BLAS, которую можно вызвать внутри ядра OpenCL, чтобы я мог параллельно решать множество линейных систем.

Я нашел этот похожий вопрос на форумах AMD.

Благодаря

+0

Хороший вопрос, если библиотека BLAS имела быстрый доступ к OpenCL, тогда было бы легко. Но это вряд ли будет. – DarkZeros

ответ

0

Его не возможно. Процедуры clBLAS делают серию запусков ядра, некоторые «решаемые» запуски запуска ядра действительно сложны. Подпрограммы clBLAS принимают cl_mem и commandQueues в качестве аргументов. Поэтому, если ваш буфер уже находится на устройстве, clBLAS будет непосредственно воздействовать на него. Он не принимает хост-буфер или управляет передачей хоста-> устройства

Если вы хотите посмотреть, какое ядро ​​сгенерировано и запущено, раскомментируйте эту строку https://github.com/clMathLibraries/clBLAS/blob/master/src/library/blas/generic/common.c#L461 и создайте clBLAS. Он сбрасывает все ядра, вызываемые

+0

Спасибо за ссылку @krishnaraj. К сожалению, мой вариант использования для процедур blas не совпадает с clBlas. Например, я хочу решить системы линейных уравнений 640x480 (каждая система с 6 переменными), поэтому я хочу построить каждую линейную систему на памяти GPU и решить ее независимо от других. Поскольку я не нашел никакой библиотеки, которая выполняет эту работу, я начал писать свои собственные процедуры blas, действующие на выделенные матрицы (их размер известен до выполнения) в частной памяти ядра. –

+0

Является ли ваша проблема чем-то похожей на TRSM http://publib.boulder.ibm.com/infocenter/pseries/v5r3/index.jsp?topic=/com.ibm.aix.basetechref/doc/basetrf2/STRSM.htm тринагулярной матрицей -матрица решить – krishnaraj

+0

Не в оригинальной форме, но она может быть преобразована в треугольную систему с помощью разложения Холецкого, я думаю. Зачем? –