Умножения нескольких матриц произвольной размерности

Здравствуйте!
Мне нужно реализовать перемножение нескольких матриц.
Например 210*210 х 210*150 х 150*30. (матриц может быть любое кол-во)
Все эти матрицы передаются в функцию в виде двумерного динамического массива(float **W):
W[0] - 210*210 элементов
W[1] - 210*150 элементов
W[2] - 150*30 элементов
Также передаются их размерности.

Смотрел в CUDA SDK. Но там только для матриц ширина и высота которых кратны 16(BLOCK_SIZE).
Написал сам, но алгоритм получился неработоспособным(вложение).

Интересует решение этой задачи с использованием shared памяти.

Заранее спасибо.

AttachmentSize
Plain text icon n.txt1.64 KB

Forums: 

увеличьте размеры матриц до

увеличьте размеры матриц до величин кратных BLOCK_SIZE, и забейте нулями лишние части.
(в вашем случае получится: 224*224 х 224*160 х 160*32, BLOCK_SIZE = 16)
из результата вырежьте кусок нужного размера.
(в вашем случае: 30*30)