Вы можете использовать условие коллапса, в вашем случае у вас есть 3 последовательных цикла for, поэтому это будет что-то вроде:
#pragma omp параллельный по умолчанию (нет), частный (j, k, l), общий (A, B, C, D, ctd) collapse (3)
Это будет работать, если циклы for являются последовательными, а код находится в самом внутреннем цикле (это относится и к коду, который вы разместили). Это не намного больше, чем ваш максимальный счет потока, ускорение не будет впечатляющим. Если он работает медленно даже параллельно, это, вероятно, означает, что узкое место - это не ваша вычислительная мощность (более вероятно, что оперативная память уже работает на 100%).
Кроме того, я не уверен, что вы действительно хотите этого частного (j, k, l) ...