При последовательном умножении матриц (для построения полносвязанной нейронной сети)
I * W1 = H1
H1 * W2 = H2
H2 * W3 = O
очень много времени уходит на синхронизацию. Особенно при малых размерах матрицы (16*16).
Исключение промежуточных H1.synchronize(), H2.synchronize() не дает существенно прироста на малых матрицах, желаемый эффект проявляется только при размерах матрицы более (64*64).
Можно ли как-то увеличить скорость работы программы при работе с последовательном перемножении относительно малых матриц с использованием C++ AMP (GP GPU)?