#define DOCTEST_CONFIG_IMPLEMENT_WITH_MAIN #include #include #include #include template void copy_vec() { tf::Taskflow taskflow; tf::Executor executor; std::vector host1(1024, -1), host2(1024, 1); auto gpu = tf::cuda_malloc_device(1024); taskflow.emplace([&](tf::cudaFlow& cf){ cf.capture([&](tf::cudaFlowCapturer& cap) { auto bf = cap.make_capturer(); auto h2d = bf->vset(1024, host1.data(), 1, gpu, 1); auto d2h = bf->vget(1024, gpu, 1, host2.data(), 1); h2d.precede(d2h); }); }); executor.run(taskflow).wait(); REQUIRE(host1 == host2); } TEST_CASE("copy_vec.float") { copy_vec(); } TEST_CASE("copy_vec.double") { copy_vec(); }