diff options
author | Claudius "keldu" Holeksa <mail@keldu.de> | 2024-09-18 20:26:52 +0200 |
---|---|---|
committer | Claudius "keldu" Holeksa <mail@keldu.de> | 2024-09-18 20:26:52 +0200 |
commit | 9dd079f6c90405622e4b08a3337fb91f2a9935ff (patch) | |
tree | 4599380af1e1460e35d636af5b9be32fbf933c74 /modules/remote-hip/c++/device.tmpl.hpp | |
parent | 90acc8c3d29a7f3309aef212ae1548494aec494a (diff) |
wip
Diffstat (limited to 'modules/remote-hip/c++/device.tmpl.hpp')
-rw-r--r-- | modules/remote-hip/c++/device.tmpl.hpp | 18 |
1 files changed, 18 insertions, 0 deletions
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."); |