Не квадратное матричное умножение в Opencl

Я хочу сделать матричное умножение с двумя неквадратными матрицами (2000,100), (100,100), я пытаюсь использовать блочную подматрицу, как в примере с Nvidia, но результат неверный, я нашел здесь решенный метод. Не квадратное матричное умножение в CUDA использует нулевое заполнение, поэтому я изменяю размер блока на 16, но это неправильный размер рабочей группы, я использую pyopencl и не могу использовать Blas и так далее.

1 ответ

Одна из лучших презентаций, которые я видел по этой теме на сегодняшний день, была на AFDS 2011.

PDF презентация.

Видео (стрим)

Видео (скачать)

Их матрицы были огромными - размером с упаковку - и не квадратными. Вы можете уменьшить размер блока их основного ядра GPU с 1024 до чего-то меньшего (32,64,128?), Чтобы лучше решить вашу проблему, возможно, даже вписавшись в LDS на вашем оборудовании. Докладчики использовали процессор для обработки областей неправильного размера, которые не были затронуты графическим процессором.

Другие вопросы по тегам