#include "gtest/gtest.h" #include "kompute/Kompute.hpp" //TEST(TestOpTensorCopy, CopyDeviceToDeviceTensor) //{ // // kp::Manager mgr; // // std::vector testVecA{ 1, 2, 3 }; // std::vector testVecB{ 0, 0, 0 }; // // std::shared_ptr tensorA{ new kp::Tensor(testVecA) }; // std::shared_ptr tensorB{ new kp::Tensor(testVecB) }; // // mgr.rebuild({ tensorA, tensorB }); // // EXPECT_TRUE(tensorA->isInit()); // EXPECT_TRUE(tensorB->isInit()); // // mgr.evalOpDefault({ tensorA, tensorB }); // // EXPECT_EQ(tensorA->data(), tensorB->data()); // // // Making sure the GPU holds the same data // mgr.evalOpDefault({ tensorB }); // EXPECT_EQ(tensorA->data(), tensorB->data()); //} // //TEST(TestOpTensorCopy, CopyDeviceToDeviceTensorMulti) //{ // // kp::Manager mgr; // // std::vector testVecA{ 2, 3, 4 }; // std::vector testVecB{ 0, 0, 0 }; // std::vector testVecC{ 0, 0, 0 }; // // std::shared_ptr tensorA{ new kp::Tensor(testVecA) }; // std::shared_ptr tensorB{ new kp::Tensor(testVecB) }; // std::shared_ptr tensorC{ new kp::Tensor(testVecC) }; // // mgr.rebuild({ tensorA, tensorB, tensorC }); // // EXPECT_TRUE(tensorA->isInit()); // EXPECT_TRUE(tensorB->isInit()); // EXPECT_TRUE(tensorC->isInit()); // // mgr.evalOpDefault({ tensorA, tensorB, tensorC }); // // EXPECT_EQ(tensorA->data(), tensorB->data()); // EXPECT_EQ(tensorA->data(), tensorC->data()); // // // Making sure the GPU holds the same data // mgr.evalOpDefault({ tensorB, tensorC }); // EXPECT_EQ(tensorA->data(), tensorB->data()); // EXPECT_EQ(tensorA->data(), tensorC->data()); //} // //TEST(TestOpTensorCopy, CopyDeviceToHostTensor) //{ // // kp::Manager mgr; // // std::vector testVecA{ 3, 4, 5 }; // std::vector testVecB{ 0, 0, 0 }; // // std::shared_ptr tensorA{ new kp::Tensor(testVecA) }; // std::shared_ptr tensorB{ new kp::Tensor( // testVecB, kp::Tensor::TensorTypes::eHost) }; // // mgr.rebuild({ tensorA, tensorB }, false); // // // Only calling sync on device type tensor // mgr.evalOpDefault({ tensorA }); // // EXPECT_TRUE(tensorA->isInit()); // EXPECT_TRUE(tensorB->isInit()); // // mgr.evalOpDefault({ tensorA, tensorB }); // // EXPECT_EQ(tensorA->data(), tensorB->data()); // // // Making sure the GPU holds the same data // mgr.evalOpDefault({ tensorB }); // EXPECT_EQ(tensorA->data(), tensorB->data()); //} // //TEST(TestOpTensorCopy, CopyHostToDeviceTensor) //{ // // kp::Manager mgr; // // std::vector testVecA{ 4, 5, 6 }; // std::vector testVecB{ 0, 0, 0 }; // // std::shared_ptr tensorA{ new kp::Tensor( // testVecA, kp::Tensor::TensorTypes::eHost) }; // std::shared_ptr tensorB{ new kp::Tensor(testVecB) }; // // mgr.rebuild({ tensorA, tensorB }, false); // // // Manually copy data into host memory of Tensor // tensorA->mapDataIntoHostMemory(); // // // Only calling sync on device type tensor // mgr.evalOpDefault({ tensorB }); // // EXPECT_TRUE(tensorA->isInit()); // EXPECT_TRUE(tensorB->isInit()); // // mgr.evalOpDefault({ tensorA, tensorB }); // // EXPECT_EQ(tensorA->data(), tensorB->data()); // // // Making sure the GPU holds the same data // mgr.evalOpDefault({ tensorB }); // EXPECT_EQ(tensorA->data(), tensorB->data()); //} // //TEST(TestOpTensorCopy, CopyHostToHostTensor) //{ // // kp::Manager mgr; // // std::vector testVecA{ 5, 6, 7 }; // std::vector testVecB{ 0, 0, 0 }; // // std::shared_ptr tensorA{ new kp::Tensor( // testVecA, kp::Tensor::TensorTypes::eHost) }; // std::shared_ptr tensorB{ new kp::Tensor( // testVecB, kp::Tensor::TensorTypes::eHost) }; // // mgr.rebuild({ tensorA, tensorB }); // // EXPECT_TRUE(tensorA->isInit()); // EXPECT_TRUE(tensorB->isInit()); // // mgr.evalOpDefault({ tensorA, tensorB }); // // EXPECT_EQ(tensorA->data(), tensorB->data()); // // // Making sure the GPU holds the same data // mgr.evalOpDefault({ tensorB }); // EXPECT_EQ(tensorA->data(), tensorB->data()); //} // //TEST(TestOpTensorCopy, SingleTensorShouldFail) //{ // // kp::Manager mgr; // // std::vector testVecA{ 6, 7, 8 }; // // std::shared_ptr tensorA{ new kp::Tensor( // testVecA, kp::Tensor::TensorTypes::eHost) }; // // mgr.rebuild({ tensorA }, false); // // EXPECT_TRUE(tensorA->isInit()); // // EXPECT_THROW(mgr.evalOpDefault({ tensorA }), // std::runtime_error); //}