Не квадратное матричное умножение в Opencl
Я хочу сделать матричное умножение с двумя неквадратными матрицами (2000,100), (100,100), я пытаюсь использовать блочную подматрицу, как в примере с Nvidia, но результат неверный, я нашел здесь решенный метод. Не квадратное матричное умножение в CUDA использует нулевое заполнение, поэтому я изменяю размер блока на 16, но это неправильный размер рабочей группы, я использую pyopencl и не могу использовать Blas и так далее.
1 ответ
Одна из лучших презентаций, которые я видел по этой теме на сегодняшний день, была на AFDS 2011.
Их матрицы были огромными - размером с упаковку - и не квадратными. Вы можете уменьшить размер блока их основного ядра GPU с 1024 до чего-то меньшего (32,64,128?), Чтобы лучше решить вашу проблему, возможно, даже вписавшись в LDS на вашем оборудовании. Докладчики использовали процессор для обработки областей неправильного размера, которые не были затронуты графическим процессором.