Умножение матриц (g++)

Проблема совсем не в этом. Проблема в том, что пытаетесь распараллелить говнокод.

А именно - хреновый паттерн доступа к памяти (при обращении к элементам матрицы b).

Перед перемножением транспонируйте матрицу b (т.е. в коде затем будет умножаться строка из a на строку из b

T

) - и перемножение ускорится

в разы

даже без распараллеливания.

Для более быстрого проведения эксперимента можете даже не транспонировать - а предположить, что матрица b уже транспонирована, и просто переставить в умножающей строке индексы (будет *b[j][k]).

Ждём-с цифр времени выполнения исходного варианта кода и предлагаемого транспонированного