summaryrefslogtreecommitdiff
path: root/modules/remote-hip/c++
diff options
context:
space:
mode:
authorClaudius 'keldu' Holeksa <mail@keldu.de>2024-08-30 16:58:28 +0200
committerClaudius 'keldu' Holeksa <mail@keldu.de>2024-08-30 16:58:28 +0200
commit636abd840ef43ff5bca30f963d6d1cf28f016cf7 (patch)
tree40a80b47076e4c9840ea6449072c7574cd29da2b /modules/remote-hip/c++
parent75c402b68c0092663916eb25c2270ca853437fcc (diff)
Trying to fix chrono issues
Diffstat (limited to 'modules/remote-hip/c++')
-rw-r--r--modules/remote-hip/c++/SConscript24
-rw-r--r--modules/remote-hip/c++/common.hpp5
-rw-r--r--modules/remote-hip/c++/device.hpp2
-rw-r--r--modules/remote-hip/c++/remote.hpp29
-rw-r--r--modules/remote-hip/c++/transfer.hpp26
5 files changed, 53 insertions, 33 deletions
diff --git a/modules/remote-hip/c++/SConscript b/modules/remote-hip/c++/SConscript
index 29b7ca4..69f56da 100644
--- a/modules/remote-hip/c++/SConscript
+++ b/modules/remote-hip/c++/SConscript
@@ -10,29 +10,29 @@ Import('env')
dir_path = Dir('.').abspath
# Environment for base library
-dev_sycl_env = env.Clone();
+dev_hip_env = env.Clone();
-dev_sycl_env.sources = sorted(glob.glob(dir_path + "/*.cpp"))
-dev_sycl_env.headers = sorted(glob.glob(dir_path + "/*.hpp"))
+dev_hip_env.sources = sorted(glob.glob(dir_path + "/*.cpp"))
+dev_hip_env.headers = sorted(glob.glob(dir_path + "/*.hpp"))
-env.sources += dev_sycl_env.sources;
-env.headers += dev_sycl_env.headers;
+env.sources += dev_hip_env.sources;
+env.headers += dev_hip_env.headers;
## Shared lib
objects_shared = []
-dev_sycl_env.add_source_files(objects_shared, dev_sycl_env.sources, shared=True);
-env.library_shared = dev_sycl_env.SharedLibrary('#build/forstio-remote-sycl', [objects_shared]);
+dev_hip_env.add_source_files(objects_shared, dev_hip_env.sources, shared=True);
+env.library_shared = dev_hip_env.SharedLibrary('#build/forstio-remote-hip', [objects_shared]);
## Static lib
objects_static = []
-dev_sycl_env.add_source_files(objects_static, dev_sycl_env.sources, shared=False);
-env.library_static = dev_sycl_env.StaticLibrary('#build/forstio-remote-sycl', [objects_static]);
+dev_hip_env.add_source_files(objects_static, dev_hip_env.sources, shared=False);
+env.library_static = dev_hip_env.StaticLibrary('#build/forstio-remote-hip', [objects_static]);
# Set Alias
-env.Alias('library_remote_sycl', [env.library_shared, env.library_static]);
+env.Alias('library_remote_hip', [env.library_shared, env.library_static]);
-env.targets += ['library_remote_sycl'];
+env.targets += ['library_remote_hip'];
# Install
env.Install('$prefix/lib/', [env.library_shared, env.library_static]);
-env.Install('$prefix/include/forstio/remote/sycl/', [dev_sycl_env.headers]);
+env.Install('$prefix/include/forstio/remote/hip/', [dev_hip_env.headers]);
diff --git a/modules/remote-hip/c++/common.hpp b/modules/remote-hip/c++/common.hpp
index cf1ca93..d2dda5c 100644
--- a/modules/remote-hip/c++/common.hpp
+++ b/modules/remote-hip/c++/common.hpp
@@ -1,8 +1,9 @@
#pragma once
#include <forstio/remote/remote.hpp>
-#include <forstio/codec/data.hpp>
-#include <forstio/codec/id_map.hpp>
+
+#define __HIP_PLATFORM_AMD__
+#include <hip/hip_runtime.h>
namespace saw {
namespace rmt {
diff --git a/modules/remote-hip/c++/device.hpp b/modules/remote-hip/c++/device.hpp
index 97204f0..227ed1b 100644
--- a/modules/remote-hip/c++/device.hpp
+++ b/modules/remote-hip/c++/device.hpp
@@ -7,7 +7,7 @@ namespace saw {
* Represents a remote Sycl device.
*/
template<>
-class device<rmt::Sycl> final {
+class device<rmt::Hip> final {
private:
public:
device() = default;
diff --git a/modules/remote-hip/c++/remote.hpp b/modules/remote-hip/c++/remote.hpp
index 5bb41cf..ce4c248 100644
--- a/modules/remote-hip/c++/remote.hpp
+++ b/modules/remote-hip/c++/remote.hpp
@@ -63,6 +63,35 @@ public:
}
/**
+ * Info
+ */
+ std::string get_info() const {
+ std::stringstream sstr;
+ int dev_count;
+ hipGetDeviceCount(&dev_count);
+ for(int i = 0; i < dev_count; ++i){
+ hipSetDevice(i);
+
+ hipDeviceProp_t props{};
+ hipGetDeviceProperties(&props, i);
+
+ sstr << "Name: " << props.name << '\n';
+ /*
+ sstr << "totalGlobalMem: " << props.totalGlobalMem << " GiB\n";
+ sstr << "sharedMemPerBlock: " << props.sharedMemPerBlock << " KiB\n";
+ sstr << "regsPerBlock: " << props.regsPerBlock << '\n';
+ sstr << "warpSize: " << props.warpSize << '\n';
+ sstr << "maxThreadsPerBlock: " << props.maxThreadsPerBlock << '\n';
+ sstr << "maxThreadsDim: " << "(" << props.maxThreadsDim[0] << ", " << props.maxThreadsDim[1] << ", " << props.maxThreadsDim[2] << ")\n";
+ sstr << "maxGridSize: " << "(" << props.maxGridSize[0] << ", " << props.maxGridSize[1] << ", " << props.maxGridSize[2] << ")\n";
+ sstr << "clockRate: " << props.clockRate << " Mhz\n";
+ */
+ }
+
+ return sstr.str();
+ }
+
+ /**
* Parse address, but don't resolve it.
*/
error_or<own<remote_address<rmt::Hip>>> parse_address(uint64_t dev_id = 0u){
diff --git a/modules/remote-hip/c++/transfer.hpp b/modules/remote-hip/c++/transfer.hpp
index 1fd97e8..a81f657 100644
--- a/modules/remote-hip/c++/transfer.hpp
+++ b/modules/remote-hip/c++/transfer.hpp
@@ -22,22 +22,7 @@ public:
{}
error_or<void> send(const data<Schema,Encoding>& dat, id<Schema> store_id){
- auto eo_val = device_->template copy_to_device(dat);
- if(eo_val.is_error()){
- auto& err = eo_val.get_error();
- return std::move(err);
- }
- auto& val = eo_val.get_value();
-
- try {
- auto insert_res = values_.emplace(std::make_pair(store_id.get_value(), std::move(val)));
- if(!insert_res.second){
- return make_error<err::already_exists>();
- }
- }catch(const std::exception&){
- return make_error<err::out_of_memory>();
- }
- return make_void();
+ return make_error<err::not_implemented>();
}
error_or<void> allocate(const data<typename meta_schema<Schema>::MetaSchema, Encoding>& dat, id<Schema> store_id){
@@ -89,6 +74,8 @@ public:
*/
template<typename Sch>
error_or<void> send(const data<Sch, Encoding>& dat, id<Sch> store_id){
+ return make_error<err::not_implemented>();
+ /*
auto& vals = std::get<std::unordered_map<uint64_t, data<Sch,encode::Hip<Encoding>>>>(values_);
auto eoval = device_->template copy_to_device<Sch, Encoding>(dat);
if(eoval.is_error()){
@@ -105,10 +92,13 @@ public:
return make_error<err::out_of_memory>();
}
return void_t{};
+ */
}
template<typename Sch>
error_or<void> allocate(const data<typename meta_schema<Sch>::MetaSchema, Encoding>& dat, id<Sch> store_id){
+ return make_error<err::not_implemented>();
+ /*
auto& vals = std::get<std::unordered_map<uint64_t, data<Sch,encode::Hip<Encoding>>>>(values_);
auto eoval = device_->template allocate_on_device<Sch, Encoding>(dat);
if(eoval.is_error()){
@@ -125,6 +115,7 @@ public:
return make_error<err::out_of_memory>();
}
return void_t{};
+ */
}
/**
@@ -139,8 +130,7 @@ public:
}
auto& dat = find_res->second;
- auto eoval = device_->template copy_to_host<Sch, Encoding>(dat);
- return eoval;
+ return make_error<err::not_implemented>();
}
/**