diff options
Diffstat (limited to 'modules')
-rw-r--r-- | modules/remote-hip/c++/device.hpp | 17 | ||||
-rw-r--r-- | modules/remote-hip/c++/device.tmpl.hpp | 18 | ||||
-rw-r--r-- | modules/remote-hip/c++/transfer.hpp | 1 |
3 files changed, 35 insertions, 1 deletions
diff --git a/modules/remote-hip/c++/device.hpp b/modules/remote-hip/c++/device.hpp index f760024..ed2b42f 100644 --- a/modules/remote-hip/c++/device.hpp +++ b/modules/remote-hip/c++/device.hpp @@ -22,15 +22,30 @@ public: error_or<void> copy_to_device(data<Schema, Encoding>& from, data<Schema, encode::Hip<Encoding>>& to){ auto dev_data = to.get_device_data(); - auto eov = impl::hip_copy_to_device<Schema,Encoding>::apply(from, dev_data); return eov; } template<typename Schema, typename Encoding> error_or<void> copy_to_host(data<Schema,encode::Hip<Encoding>>& from, data<Schema,Encoding>& to){ + auto dev_data = from.get_device_data(); + auto eov = impl::hip_copy_to_host<Schema,Encoding>::apply(dev_data,to); + return make_error<err::not_implemented>(); + } + + template<typename Schema, typename Encoding> + error_or<void> erase_from_device(data<Schema,encode::Hip<Encoding>>& dev_dat){ + (void) dev_dat; return make_error<err::not_implemented>(); } + + template<typename Schema, typename Encoding> + error_or<void> allocate_on_device(const typename data<SchemaEncoding>::Init& from, data<Schema,encode::Hip<Encoding>>& to){ + (void) from; + (void) to; + return make_error<err::not_implemented>(); + } + }; } diff --git a/modules/remote-hip/c++/device.tmpl.hpp b/modules/remote-hip/c++/device.tmpl.hpp index 6f5fc6a..c3d0bff 100644 --- a/modules/remote-hip/c++/device.tmpl.hpp +++ b/modules/remote-hip/c++/device.tmpl.hpp @@ -10,6 +10,14 @@ struct hip_copy_to_device { } }; +template<typename Schema, typename Encoding> +struct hip_copy_to_host { + static error_or<void> apply(data<Schema, Encoding>** dev_dat, data<Schema,Encoding>& to){ + static_assert(always_false<Schema,Encoding>, "Unsupported case."); + return make_void(); + } +}; + template<typename T, uint64_t N, typename Encoding> struct hip_copy_to_device<schema::Primitive<T,N>, Encoding> { using Schema = schema::Primitive<T,N>; @@ -25,6 +33,16 @@ struct hip_copy_to_device<schema::Primitive<T,N>, Encoding> { } }; +template<typename T, uint64_t N, typename Encoding> +struct hip_copy_to_host<schema::Primitive<T,N>, Encoding> { + using Schema = schema::Primitive<T,N>; + + static error_or<void> apply(data<Schema,Encoding>** dev_dat, data<Schema,Encoding>& to){ + hipError_t copy_err = hipMemcpy(*dev_dat, &to, sizeof(data<Schema,Encoding>), hipMemcpyDeviceToHost); + return make_void(); + } +}; + template<typename T, uint64_t Dim, typename Encoding> struct hip_copy_to_device<schema::Array<T,Dim>, Encoding> { static_assert(Dim == 1u, "Only 1D arrays are supported for now."); diff --git a/modules/remote-hip/c++/transfer.hpp b/modules/remote-hip/c++/transfer.hpp index a4c4c30..5844c27 100644 --- a/modules/remote-hip/c++/transfer.hpp +++ b/modules/remote-hip/c++/transfer.hpp @@ -55,6 +55,7 @@ public: } error_or<void> erase(id<Schema> store_id){ + return make_error<err::not_implemented>("Erase not implemented"); return make_void(); } |