summaryrefslogtreecommitdiff
path: root/modules/remote-hip/c++/device.tmpl.hpp
diff options
context:
space:
mode:
authorClaudius "keldu" Holeksa <mail@keldu.de>2024-09-18 20:26:52 +0200
committerClaudius "keldu" Holeksa <mail@keldu.de>2024-09-18 20:26:52 +0200
commit9dd079f6c90405622e4b08a3337fb91f2a9935ff (patch)
tree4599380af1e1460e35d636af5b9be32fbf933c74 /modules/remote-hip/c++/device.tmpl.hpp
parent90acc8c3d29a7f3309aef212ae1548494aec494a (diff)
wip
Diffstat (limited to 'modules/remote-hip/c++/device.tmpl.hpp')
-rw-r--r--modules/remote-hip/c++/device.tmpl.hpp18
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.");