diff options
Diffstat (limited to 'modules/remote-hip/c++')
-rw-r--r-- | modules/remote-hip/c++/SConscript | 24 | ||||
-rw-r--r-- | modules/remote-hip/c++/common.hpp | 5 | ||||
-rw-r--r-- | modules/remote-hip/c++/device.hpp | 2 | ||||
-rw-r--r-- | modules/remote-hip/c++/remote.hpp | 29 | ||||
-rw-r--r-- | modules/remote-hip/c++/transfer.hpp | 26 |
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>(); } /** |