summaryrefslogtreecommitdiff
path: root/modules
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
parent90acc8c3d29a7f3309aef212ae1548494aec494a (diff)
wip
Diffstat (limited to 'modules')
-rw-r--r--modules/remote-hip/c++/device.hpp17
-rw-r--r--modules/remote-hip/c++/device.tmpl.hpp18
-rw-r--r--modules/remote-hip/c++/transfer.hpp1
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();
}