|
|
@@ -23,7 +23,10 @@ namespace traph
|
|
|
// check
|
|
|
matmul_check(a, b);
|
|
|
// result
|
|
|
- std::shared_ptr<Tensor<u8>> result(new Tensor<u8>(a.size()[0], b.size()[1]));
|
|
|
+ DimVector dim;
|
|
|
+ dim.push_back(a.size()[0]);
|
|
|
+ dim.push_back(b.size()[1]);
|
|
|
+ std::shared_ptr<Tensor<u8>> result(new Tensor<u8>(dim));
|
|
|
|
|
|
// copy data
|
|
|
Eigen::Map<const Eigen::Matrix<u8, Eigen::Dynamic, Eigen::Dynamic>> eigen_a(a.data_ptr() + a.offset(), a.size()[0], a.size()[1]);
|
|
|
@@ -40,7 +43,10 @@ namespace traph
|
|
|
// check
|
|
|
matmul_check(a, b);
|
|
|
// result
|
|
|
- std::shared_ptr<Tensor<i8>> result(new Tensor<i8>(a.size()[0], b.size()[1]));
|
|
|
+ DimVector dim;
|
|
|
+ dim.push_back(a.size()[0]);
|
|
|
+ dim.push_back(b.size()[1]);
|
|
|
+ std::shared_ptr<Tensor<i8>> result(new Tensor<i8>(dim));
|
|
|
|
|
|
// copy data
|
|
|
Eigen::Map<const Eigen::Matrix<i8, Eigen::Dynamic, Eigen::Dynamic>> eigen_a(a.data_ptr() + a.offset(), a.size()[0], a.size()[1]);
|
|
|
@@ -57,7 +63,10 @@ namespace traph
|
|
|
// check
|
|
|
matmul_check(a, b);
|
|
|
// result
|
|
|
- std::shared_ptr<Tensor<i16>> result(new Tensor<i16>(a.size()[0], b.size()[1]));
|
|
|
+ DimVector dim;
|
|
|
+ dim.push_back(a.size()[0]);
|
|
|
+ dim.push_back(b.size()[1]);
|
|
|
+ std::shared_ptr<Tensor<i16>> result(new Tensor<i16>(dim));
|
|
|
|
|
|
// copy data
|
|
|
Eigen::Map<const Eigen::Matrix<i16, Eigen::Dynamic, Eigen::Dynamic>> eigen_a(a.data_ptr() + a.offset(), a.size()[0], a.size()[1]);
|
|
|
@@ -74,7 +83,10 @@ namespace traph
|
|
|
// check
|
|
|
matmul_check(a, b);
|
|
|
// result
|
|
|
- std::shared_ptr<Tensor<i32>> result(new Tensor<i32>(a.size()[0], b.size()[1]));
|
|
|
+ DimVector dim;
|
|
|
+ dim.push_back(a.size()[0]);
|
|
|
+ dim.push_back(b.size()[1]);
|
|
|
+ std::shared_ptr<Tensor<i32>> result(new Tensor<i32>(dim));
|
|
|
|
|
|
// copy data
|
|
|
Eigen::Map<const Eigen::Matrix<i32, Eigen::Dynamic, Eigen::Dynamic>> eigen_a(a.data_ptr() + a.offset(), a.size()[0], a.size()[1]);
|
|
|
@@ -91,7 +103,10 @@ namespace traph
|
|
|
// check
|
|
|
matmul_check(a, b);
|
|
|
// result
|
|
|
- std::shared_ptr<Tensor<i64>> result(new Tensor<i64>(a.size()[0], b.size()[1]));
|
|
|
+ DimVector dim;
|
|
|
+ dim.push_back(a.size()[0]);
|
|
|
+ dim.push_back(b.size()[1]);
|
|
|
+ std::shared_ptr<Tensor<i64>> result(new Tensor<i64>(dim));
|
|
|
|
|
|
// copy data
|
|
|
Eigen::Map<const Eigen::Matrix<i64, Eigen::Dynamic, Eigen::Dynamic>> eigen_a(a.data_ptr() + a.offset(), a.size()[0], a.size()[1]);
|
|
|
@@ -108,7 +123,10 @@ namespace traph
|
|
|
// check
|
|
|
matmul_check(a, b);
|
|
|
// result
|
|
|
- std::shared_ptr<Tensor<f32>> result(new Tensor<f32>(a.size()[0], b.size()[1]));
|
|
|
+ DimVector dim;
|
|
|
+ dim.push_back(a.size()[0]);
|
|
|
+ dim.push_back(b.size()[1]);
|
|
|
+ std::shared_ptr<Tensor<f32>> result(new Tensor<f32>(dim));
|
|
|
|
|
|
#ifdef TRAPH_BUILD_EIGEN
|
|
|
// copy data
|
|
|
@@ -144,7 +162,10 @@ namespace traph
|
|
|
// check
|
|
|
matmul_check(a, b);
|
|
|
// result
|
|
|
- std::shared_ptr<Tensor<f64>> result(new Tensor<f64>(a.size()[0], b.size()[1]));
|
|
|
+ DimVector dim;
|
|
|
+ dim.push_back(a.size()[0]);
|
|
|
+ dim.push_back(b.size()[1]);
|
|
|
+ std::shared_ptr<Tensor<f64>> result(new Tensor<f64>(dim));
|
|
|
|
|
|
#ifdef TRAPH_BUILD_EIGEN
|
|
|
// copy data
|
|
|
@@ -153,7 +174,7 @@ namespace traph
|
|
|
|
|
|
Eigen::Matrix<f64, Eigen::Dynamic, Eigen::Dynamic> eigen_c = eigen_a * eigen_b;
|
|
|
// copy to result
|
|
|
- std::copy(eigen_c.data(), eigen_c.data() + a.size()[0] * b.size()[1], result.data_ptr());
|
|
|
+ std::copy(eigen_c.data(), eigen_c.data() + a.size()[0] * b.size()[1], result->data_ptr());
|
|
|
#elif defined TRAPH_BUILD_MKL
|
|
|
CBLAS_LAYOUT a_layout = a.order() == layout_type::column_major ? CBLAS_LAYOUT::CblasColMajor : CBLAS_LAYOUT::CblasRowMajor;
|
|
|
|