jacobian

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README

commit 420ad001a1a9953d0a382603759d30b2bffd02f1
parent aa4909edda563601024eeb6fe0cef6ca0a0bfba6
Author: David Freifeld <freifeld.david@gmail.com>
Date:   Wed,  5 Aug 2020 18:27:41 -0700

Mystery memory leak isnt in AVX

Diffstat:
Msrc/utils.cpp | 12++++++++----
1 file changed, 8 insertions(+), 4 deletions(-)

diff --git a/src/utils.cpp b/src/utils.cpp @@ -8,6 +8,7 @@ #include <iostream> #include <fstream> +#include <algorithm> #include <cstdlib> #include <ctime> #include <cmath> @@ -94,10 +95,13 @@ Eigen::MatrixXf avx_product(Eigen::MatrixXf a, Eigen::MatrixXf b) #ifndef RECKLESS assert(a.rows() == b.rows() && a.cols() == b.rows()); #endif - float arr1[(((a.rows() * a.cols()) % 8) * 8) + 8]; - memcpy(arr1, a.data(), sizeof(float)*a.cols()*a.rows()); - float arr2[(((b.rows() * b.cols()) % 8) * 8) + 8]; - memcpy(arr1, b.data(), sizeof(float)*b.cols()*a.rows()); + int size = ((a.rows() * a.cols()) + 7) & (-8); + float arr1[size]; + //memcpy(arr1, a.data(), sizeof(float)*a.cols()*a.rows()); + std::copy(a.data(), a.data()+(a.rows()*a.cols()), arr1); + float arr2[size]; + std::copy(b.data(), b.data()+(b.rows()*b.cols()), arr2); + //memcpy(arr1, b.data(), sizeof(float)*b.cols()*a.rows()); for (int i = 0; i < (((a.rows() * a.cols()) % 8) * 8) + 8; i++) { _mm256_store_ps(arr1, _mm256_mul_ps(_mm256_load_ps(arr1+i*8), _mm256_load_ps(arr2+i*8))); }