История изменений
Исправление SZT, (текущая версия) :
mat4 mat4_mul_mat4(mat4 m1, mat4 m2) {
А что за структуры это, mat4
? Может попробовать сделать отдельные массивы, типа
void mat4_mul_mat4(
float* restrict m1_xx, float* restrict m1_xy, float* restrict m1_xz, float* restrict m1_xw,
float* restrict m1_yx, float* restrict m1_yy, float* restrict m1_yz, float* restrict m1_yw,
float* restrict m1_zx, float* restrict m1_zy, float* restrict m1_zz, float* restrict m1_zw,
float* restrict m1_wx, float* restrict m1_wy, float* restrict m1_wz, float* restrict m1_ww,
float* restrict m2_xx, float* restrict m2_xy, float* restrict m2_xz, float* restrict m2_xw,
float* restrict m2_yx, float* restrict m2_yy, float* restrict m2_yz, float* restrict m2_yw,
float* restrict m2_zx, float* restrict m2_zy, float* restrict m2_zz, float* restrict m2_zw,
float* restrict m2_wx, float* restrict m2_wy, float* restrict m2_wz, float* restrict m2_ww,
float* restrict mat_out_xx, float* restrict mat_out_xy, float* restrict mat_out_xz, float* restrict mat_out_xw,
float* restrict mat_out_yx, float* restrict mat_out_yy, float* restrict mat_out_yz, float* restrict mat_out_yw,
float* restrict mat_out_zx, float* restrict mat_out_zy, float* restrict mat_out_zz, float* restrict mat_out_zw,
float* restrict mat_out_wx, float* restrict mat_out_wy, float* restrict mat_out_wz, float* restrict mat_out_ww,
size_t num) {
// тут дальше что-то умножать и суммировать в цикле и писать результат в mat_out_??, можно сразу много матриц обрабатывать
Которая б принимала на вход просто массивы соответствующих значений конкретных матриц.
Да и вообще, почему б это на GPU не делать? По-моему это как раз идеальная для GPU задача
Исправление SZT, :
mat4 mat4_mul_mat4(mat4 m1, mat4 m2) {
А что за структуры это, mat4
? Может попробовать сделать отдельные массивы, типа
void mat4_mul_mat4(
float* restrict m1_xx, float* restrict m1_xy, float* restrict m1_xz, float* restrict m1_xw,
float* restrict m1_yx, float* restrict m1_yy, float* restrict m1_yz, float* restrict m1_yw,
float* restrict m1_zx, float* restrict m1_zy, float* restrict m1_zz, float* restrict m1_zw,
float* restrict m1_wx, float* restrict m1_wy, float* restrict m1_wz, float* restrict m1_ww,
float* restrict m2_xx, float* restrict m2_xy, float* restrict m2_xz, float* restrict m2_xw,
float* restrict m2_yx, float* restrict m2_yy, float* restrict m2_yz, float* restrict m2_yw,
float* restrict m2_zx, float* restrict m2_zy, float* restrict m2_zz, float* restrict m2_zw,
float* restrict m2_wx, float* restrict m2_wy, float* restrict m2_wz, float* restrict m2_ww,
float* restrict mat_out_xx, float* restrict mat_out_xy, float* restrict mat_out_xz, float* restrict mat_out_xw,
float* restrict mat_out_yx, float* restrict mat_out_yy, float* restrict mat_out_yz, float* restrict mat_out_yw,
float* restrict mat_out_zx, float* restrict mat_out_zy, float* restrict mat_out_zz, float* restrict mat_out_zw,
float* restrict mat_out_wx, float* restrict mat_out_wy, float* restrict mat_out_wz, float* restrict mat_out_ww,
size_t num) {
// тут дальше что-то умножать и суммировать в цикле и писать результат в mat_out_??, можно сразу много матриц обрабатывать
Которая б принимала на вход просто массивы соответствующих значений конкретных матриц
Исправление SZT, :
mat4 mat4_mul_mat4(mat4 m1, mat4 m2) {
А что за структуры это, mat4
? Может попробовать сделать отдельные массивы, типа
void mat4_mul_mat4(
float* restrict m1_xx, float* restrict m1_xy, float* restrict m1_xz, float* restrict m1_xw,
float* restrict m1_yx, float* restrict m1_yy, float* restrict m1_yz, float* restrict m1_yw,
float* restrict m1_zx, float* restrict m1_zy, float* restrict m1_zz, float* restrict m1_zw,
float* restrict m1_wx, float* restrict m1_wy, float* restrict m1_wz, float* restrict m1_ww,
float* restrict m1_yx, float* restrict m1_yy, float* restrict m1_yz, float* restrict m1_yw,
float* restrict m2_xx, float* restrict m2_xy, float* restrict m2_xz, float* restrict m2_xw,
float* restrict m2_yx, float* restrict m2_yy, float* restrict m2_yz, float* restrict m2_yw,
float* restrict m2_zx, float* restrict m2_zy, float* restrict m2_zz, float* restrict m2_zw,
float* restrict m2_wx, float* restrict m2_wy, float* restrict m2_wz, float* restrict m2_ww,
float* restrict m2_yx, float* restrict m2_yy, float* restrict m2_yz, float* restrict m2_yw,
float* restrict mat_out_xx, float* restrict mat_out_xy, float* restrict mat_out_xz, float* restrict mat_out_xw,
float* restrict mat_out_yx, float* restrict mat_out_yy, float* restrict mat_out_yz, float* restrict mat_out_yw,
float* restrict mat_out_zx, float* restrict mat_out_zy, float* restrict mat_out_zz, float* restrict mat_out_zw,
float* restrict mat_out_wx, float* restrict mat_out_wy, float* restrict mat_out_wz, float* restrict mat_out_ww,
float* restrict mat_out_yx, float* restrict mat_out_yy, float* restrict mat_out_yz, float* restrict mat_out_yw,
size_t num) {
// тут дальше что-то умножать и суммировать в цикле и писать результат в mat_out_??, можно сразу много матриц обрабатывать
Которая б принимала на вход просто массивы соответствующих значений конкретных матриц
Исходная версия SZT, :
[code=c]mat4 mat4_mul_mat4(mat4 m1, mat4 m2) {[/code]
А что за структуры это, mat4
? Может попробовать сделать отдельные массивы, типа
void mat4_mul_mat4(
float* restrict m1_xx, float* restrict m1_xy, float* restrict m1_xz, float* restrict m1_xw,
float* restrict m1_yx, float* restrict m1_yy, float* restrict m1_yz, float* restrict m1_yw,
float* restrict m1_zx, float* restrict m1_zy, float* restrict m1_zz, float* restrict m1_zw,
float* restrict m1_wx, float* restrict m1_wy, float* restrict m1_wz, float* restrict m1_ww,
float* restrict m1_yx, float* restrict m1_yy, float* restrict m1_yz, float* restrict m1_yw,
float* restrict m2_xx, float* restrict m2_xy, float* restrict m2_xz, float* restrict m2_xw,
float* restrict m2_yx, float* restrict m2_yy, float* restrict m2_yz, float* restrict m2_yw,
float* restrict m2_zx, float* restrict m2_zy, float* restrict m2_zz, float* restrict m2_zw,
float* restrict m2_wx, float* restrict m2_wy, float* restrict m2_wz, float* restrict m2_ww,
float* restrict m2_yx, float* restrict m2_yy, float* restrict m2_yz, float* restrict m2_yw,
float* restrict mat_out_xx, float* restrict mat_out_xy, float* restrict mat_out_xz, float* restrict mat_out_xw,
float* restrict mat_out_yx, float* restrict mat_out_yy, float* restrict mat_out_yz, float* restrict mat_out_yw,
float* restrict mat_out_zx, float* restrict mat_out_zy, float* restrict mat_out_zz, float* restrict mat_out_zw,
float* restrict mat_out_wx, float* restrict mat_out_wy, float* restrict mat_out_wz, float* restrict mat_out_ww,
float* restrict mat_out_yx, float* restrict mat_out_yy, float* restrict mat_out_yz, float* restrict mat_out_yw,
size_t num) {
// тут дальше что-то умножать и суммировать в цикле и писать результат в mat_out_??, можно сразу много матриц обрабатывать
Которая б принимала на вход просто массивы соответствующих значений конкретных матриц