diff --git a/unit_tests/operator/Test_DivImpl.cpp b/unit_tests/operator/Test_DivImpl.cpp
index 552882aca19d8b334738c17b3db27af3dfd31bfb..5d7dfdf12032d4c444e38cda6d2a4298fc552b14 100644
--- a/unit_tests/operator/Test_DivImpl.cpp
+++ b/unit_tests/operator/Test_DivImpl.cpp
@@ -103,6 +103,7 @@ TEST_CASE("[cpu/operator] Div", "[Div][CPU]") {
                 Tres->resize(dims);
                 Tres -> getImpl() -> setRawPtr(result, nb_elements);
 
+                op->forwardDims();
                 start = std::chrono::system_clock::now();
                 myDiv->forward();
                 end = std::chrono::system_clock::now();
@@ -195,6 +196,7 @@ TEST_CASE("[cpu/operator] Div", "[Div][CPU]") {
                 Tres -> getImpl() -> setRawPtr(result, dimsOut[0]*dimsOut[1]*dimsOut[2]*dimsOut[3]);
 
                 // compute result
+                op->forwardDims();
                 start = std::chrono::system_clock::now();
                 myDiv->forward();
                 end = std::chrono::system_clock::now();
@@ -289,6 +291,7 @@ TEST_CASE("[cpu/operator] Div", "[Div][CPU]") {
                 Tres -> getImpl() -> setRawPtr(result, dimsOut[0]*dimsOut[1]*dimsOut[2]*dimsOut[3]);
 
                 // compute result
+                op->forwardDims();
                 start = std::chrono::system_clock::now();
                 myDiv->forward();
                 end = std::chrono::system_clock::now();
diff --git a/unit_tests/operator/Test_GlobalAveragePoolingImpl.cpp b/unit_tests/operator/Test_GlobalAveragePoolingImpl.cpp
index 9c357dc9cf6e32db655e51e10ede0e5a52d96cef..43903100a163b4499ed96c44d77ad119534d2eaa 100644
--- a/unit_tests/operator/Test_GlobalAveragePoolingImpl.cpp
+++ b/unit_tests/operator/Test_GlobalAveragePoolingImpl.cpp
@@ -154,6 +154,7 @@ TEST_CASE("[cpu/operator] GlobalAveragePooling",
         Tres->resize(dims_out);
         Tres->getImpl()->setRawPtr(result, out_nb_elems);
 
+        op->forwardDims();
         start = std::chrono::system_clock::now();
         REQUIRE_NOTHROW(globAvgPool->forward());
         end = std::chrono::system_clock::now();
@@ -224,6 +225,7 @@ TEST_CASE("[cpu/operator] GlobalAveragePooling",
           Tres->resize(dims_out);
           Tres->getImpl()->setRawPtr(result, out_nb_elems);
 
+          op->forwardDims();
           start = std::chrono::system_clock::now();
           REQUIRE_NOTHROW(globAvgPool->forward());
           end = std::chrono::system_clock::now();
@@ -348,6 +350,7 @@ TEST_CASE("[cpu/operator] GlobalAveragePooling",
           // results
           Tres->resize(out_dims);
           Tres->getImpl()->setRawPtr(result, out_nb_elems);
+          op->forwardDims();
           start = std::chrono::system_clock::now();
           REQUIRE_NOTHROW(globAvgPool->forward());
           end = std::chrono::system_clock::now();
@@ -534,6 +537,7 @@ TEST_CASE("[cpu/operator] GlobalAveragePooling",
           // results
           Tres->resize(out_dims);
           Tres->getImpl()->setRawPtr(result, out_nb_elems);
+          op->forwardDims();
           start = std::chrono::system_clock::now();
           REQUIRE_NOTHROW(globAvgPool->forward());
           end = std::chrono::system_clock::now();
diff --git a/unit_tests/operator/Test_MatMulImpl.cpp b/unit_tests/operator/Test_MatMulImpl.cpp
index 414b38f0604e94133e32599212e907adcffab375..8a1e589fa0e9a57d712c77a12501d35f5f995bcc 100644
--- a/unit_tests/operator/Test_MatMulImpl.cpp
+++ b/unit_tests/operator/Test_MatMulImpl.cpp
@@ -94,6 +94,7 @@ TEST_CASE("[cpu/operator] MatMul(forward)", "[MatMul][CPU]") {
             op->associateInput(1, T2);
             op->setDataType(DataType::Float32);
             op->setBackend("cpu");
+            op->forwardDims();
             start = std::chrono::system_clock::now();
             myMatMul->forward();
             end = std::chrono::system_clock::now();
@@ -157,6 +158,7 @@ TEST_CASE("[cpu/operator] MatMul(forward)", "[MatMul][CPU]") {
             op->associateInput(1, T2);
             op->setDataType(DataType::Float32);
             op->setBackend("cpu");
+            op->forwardDims();
             start = std::chrono::system_clock::now();
             myMatMul->forward();
             end = std::chrono::system_clock::now();
@@ -223,6 +225,7 @@ TEST_CASE("[cpu/operator] MatMul(forward)", "[MatMul][CPU]") {
             op->associateInput(1, T2);
             op->setDataType(DataType::Float32);
             op->setBackend("cpu");
+            op->forwardDims();
             start = std::chrono::system_clock::now();
             myMatMul->forward();
             end = std::chrono::system_clock::now();
@@ -255,6 +258,7 @@ TEST_CASE("[cpu/operator] MatMul(forward)", "[MatMul][CPU]") {
 
         op->setDataType(DataType::Float32);
         op->setBackend("cpu");
+        op->forwardDims();
         myMatMul->forward();
 
     }
diff --git a/unit_tests/operator/Test_MulImpl.cpp b/unit_tests/operator/Test_MulImpl.cpp
index d1bd7d0dd0a02443b9fd9cd141738a3981a3676c..9d592d31e1999f63fb0ebe3f5ad9d19e85c8645c 100644
--- a/unit_tests/operator/Test_MulImpl.cpp
+++ b/unit_tests/operator/Test_MulImpl.cpp
@@ -103,6 +103,7 @@ TEST_CASE("[cpu/operator] Mul", "[Mul][CPU]") {
                 Tres->resize(dims);
                 Tres -> getImpl() -> setRawPtr(result, nb_elements);
 
+                op->forwardDims();
                 start = std::chrono::system_clock::now();
                 myMul->forward();
                 end = std::chrono::system_clock::now();
@@ -195,6 +196,7 @@ TEST_CASE("[cpu/operator] Mul", "[Mul][CPU]") {
                 Tres -> getImpl() -> setRawPtr(result, dimsOut[0]*dimsOut[1]*dimsOut[2]*dimsOut[3]);
 
                 // compute result
+                op->forwardDims();
                 start = std::chrono::system_clock::now();
                 myMul->forward();
                 end = std::chrono::system_clock::now();
@@ -289,6 +291,7 @@ TEST_CASE("[cpu/operator] Mul", "[Mul][CPU]") {
                 Tres -> getImpl() -> setRawPtr(result, dimsOut[0]*dimsOut[1]*dimsOut[2]*dimsOut[3]);
 
                 // compute result
+                op->forwardDims();
                 start = std::chrono::system_clock::now();
                 myMul->forward();
                 end = std::chrono::system_clock::now();
diff --git a/unit_tests/operator/Test_PowImpl.cpp b/unit_tests/operator/Test_PowImpl.cpp
index 7f1ee39fe048763c8b255c6a3d297608679f67d0..3b85defb37ff76439b658faa84c3c7457a152d2f 100644
--- a/unit_tests/operator/Test_PowImpl.cpp
+++ b/unit_tests/operator/Test_PowImpl.cpp
@@ -104,6 +104,7 @@ TEST_CASE("[cpu/operator] Pow", "[Pow][CPU]") {
                 Tres->resize(dims);
                 Tres -> getImpl() -> setRawPtr(result, nb_elements);
 
+                op->forwardDims();
                 start = std::chrono::system_clock::now();
                 myPow->forward();
                 end = std::chrono::system_clock::now();
@@ -196,6 +197,7 @@ TEST_CASE("[cpu/operator] Pow", "[Pow][CPU]") {
                 Tres -> getImpl() -> setRawPtr(result, dimsOut[0]*dimsOut[1]*dimsOut[2]*dimsOut[3]);
 
                 // compute result
+                op->forwardDims();
                 start = std::chrono::system_clock::now();
                 myPow->forward();
                 end = std::chrono::system_clock::now();
@@ -290,6 +292,7 @@ TEST_CASE("[cpu/operator] Pow", "[Pow][CPU]") {
                 Tres -> getImpl() -> setRawPtr(result, dimsOut[0]*dimsOut[1]*dimsOut[2]*dimsOut[3]);
 
                 // compute result
+                op->forwardDims();
                 start = std::chrono::system_clock::now();
                 myPow->forward();
                 end = std::chrono::system_clock::now();
diff --git a/unit_tests/operator/Test_SubImpl.cpp b/unit_tests/operator/Test_SubImpl.cpp
index ef818e8dc668d7504d8731e0de12df682c9e99eb..44666ae631152c8898e24f7003b0c2ede8c67b84 100644
--- a/unit_tests/operator/Test_SubImpl.cpp
+++ b/unit_tests/operator/Test_SubImpl.cpp
@@ -103,6 +103,7 @@ TEST_CASE("[cpu/operator] Sub", "[Sub][CPU]") {
                 Tres->resize(dims);
                 Tres -> getImpl() -> setRawPtr(result, nb_elements);
 
+                op->forwardDims();
                 start = std::chrono::system_clock::now();
                 mySub->forward();
                 end = std::chrono::system_clock::now();
@@ -195,6 +196,7 @@ TEST_CASE("[cpu/operator] Sub", "[Sub][CPU]") {
                 Tres -> getImpl() -> setRawPtr(result, dimsOut[0]*dimsOut[1]*dimsOut[2]*dimsOut[3]);
 
                 // compute result
+                op->forwardDims();
                 start = std::chrono::system_clock::now();
                 mySub->forward();
                 end = std::chrono::system_clock::now();
@@ -289,6 +291,7 @@ TEST_CASE("[cpu/operator] Sub", "[Sub][CPU]") {
                 Tres -> getImpl() -> setRawPtr(result, dimsOut[0]*dimsOut[1]*dimsOut[2]*dimsOut[3]);
 
                 // compute result
+                op->forwardDims();
                 start = std::chrono::system_clock::now();
                 mySub->forward();
                 end = std::chrono::system_clock::now();