From 90acc8c3d29a7f3309aef212ae1548494aec494a Mon Sep 17 00:00:00 2001 From: Claudius 'keldu' Holeksa Date: Tue, 17 Sep 2024 18:07:04 +0200 Subject: wip --- modules/codec/c++/data_raw.hpp | 12 ++++++------ modules/codec/tests/data_raw.cpp | 22 ++++++++++++++-------- modules/remote-hip/SConstruct | 5 ++++- modules/remote-hip/c++/device.tmpl.hpp | 2 +- modules/remote-hip/examples/SConscript | 2 +- modules/remote-hip/examples/hip_device_info.cpp | 2 ++ modules/remote-hip/examples/hip_transfer_data.cpp | 9 +++++++++ 7 files changed, 37 insertions(+), 17 deletions(-) diff --git a/modules/codec/c++/data_raw.hpp b/modules/codec/c++/data_raw.hpp index 92afc77..2236d05 100644 --- a/modules/codec/c++/data_raw.hpp +++ b/modules/codec/c++/data_raw.hpp @@ -140,7 +140,8 @@ public: SAW_FORBID_MOVE(data); constexpr void set(typename native_data_type::type val){ - value_() = val; + auto& v = value_(); + v = val; } constexpr typename native_data_type::type get() const { @@ -422,7 +423,6 @@ class data, encode::NativeRaw> { s *= dims_[iter]; } - return s; } public: @@ -456,7 +456,7 @@ class data, encode::NativeRaw> { // auto old_value = value_; // auto old_value_size = value_size_; value_size_ = get_full_size(); - value_ = new typename raw_native_array_type_helper::Type (value_size_); + value_ = new typename raw_native_array_type_helper::Type [value_size_]; } data(data init) @@ -465,12 +465,12 @@ class data, encode::NativeRaw> { dims_[i] = init.at(i).get(); } value_size_ = get_full_size(); - value_ = new typename raw_native_array_type_helper::Type (value_size_); + value_ = new typename raw_native_array_type_helper::Type [value_size_]; } ~data(){ if(value_){ - delete value_; + delete[] value_; value_ = nullptr; value_size_ = 0u; } @@ -486,7 +486,7 @@ class data, encode::NativeRaw> { template constexpr error_or adopt(typename raw_native_array_type_helper::Type* adoptee, Dims... adoptee_size){ if(value_ != nullptr){ - return make_error("Can't adopt into existing state"); + return make_error("Can't adopt into existing data"); } dims_ = {adoptee_size...}; value_size_ = get_full_size(); diff --git a/modules/codec/tests/data_raw.cpp b/modules/codec/tests/data_raw.cpp index 11e2c5e..26c2721 100644 --- a/modules/codec/tests/data_raw.cpp +++ b/modules/codec/tests/data_raw.cpp @@ -14,23 +14,29 @@ SAW_TEST("Data NativeRaw/Array of Primitives"){ using namespace saw; data prim{4u}; - prim.at(1u).set(0); + prim.at(0u).set(0); - auto a = prim.at(1u); + auto a = prim.at(0u); + auto b = prim.at(1u); + auto c = prim.at(2u); + auto d = prim.at(3u); a.set(5); + b.set(6); - auto b = prim.at(1u); // Check if it's a reference being manipulated SAW_EXPECT(a.get() == 5, "'a' has unexpected value."); - SAW_EXPECT(b.get() == 5, "'b' has unexpected value."); + SAW_EXPECT(b.get() == 6, "'b' has unexpected value."); - auto c = prim.at(1u); - c.set(10); + auto b1 = prim.at(1u); + b1.set(10); + c.set(-9); - SAW_EXPECT(a.get() == 10, "'a' has unexpected value."); + SAW_EXPECT(b1.get() == 10, "'b1' has unexpected value."); + SAW_EXPECT(a.get() == 5, "'a' has unexpected value."); SAW_EXPECT(b.get() == 10, "'b' has unexpected value."); - SAW_EXPECT(c.get() == 10, "'c' has unexpected value."); + SAW_EXPECT(c.get() == -9, "'c' has unexpected value."); + SAW_EXPECT(d.get() == 23, "'d' has unexpected value."); } } diff --git a/modules/remote-hip/SConstruct b/modules/remote-hip/SConstruct index 75057c9..35ec5b4 100644 --- a/modules/remote-hip/SConstruct +++ b/modules/remote-hip/SConstruct @@ -61,7 +61,10 @@ env=Environment(ENV=os.environ, variables=env_vars, CPPPATH=[], CPPDEFINES=['SAW_UNIX'], CXXFLAGS=[ '-std=c++20', - '-g','-Wall','-Wextra'], + '-g', + '-Wall', + '-Wextra' + ], LIBS=['forstio-core' ,'forstio-codec' ,'forstio-async' diff --git a/modules/remote-hip/c++/device.tmpl.hpp b/modules/remote-hip/c++/device.tmpl.hpp index ca9006d..6f5fc6a 100644 --- a/modules/remote-hip/c++/device.tmpl.hpp +++ b/modules/remote-hip/c++/device.tmpl.hpp @@ -44,11 +44,11 @@ struct hip_copy_to_device, Encoding> { std::cout< tmp_fake_dat; diff --git a/modules/remote-hip/examples/SConscript b/modules/remote-hip/examples/SConscript index 71bb98f..7e99497 100644 --- a/modules/remote-hip/examples/SConscript +++ b/modules/remote-hip/examples/SConscript @@ -15,7 +15,7 @@ examples_env = env.Clone(); examples_hip_env = examples_env.Clone(); examples_hip_env['CXX'] = 'hipcc'; -examples_hip_env['CXXFLAGS'] += ['-O2']; +examples_hip_env['CXXFLAGS'] += ['-O0']; examples_env.sources = sorted(glob.glob(dir_path + "/*.cpp")) examples_env.headers = sorted(glob.glob(dir_path + "/*.hpp")) diff --git a/modules/remote-hip/examples/hip_device_info.cpp b/modules/remote-hip/examples/hip_device_info.cpp index ed62e93..0a0adc7 100644 --- a/modules/remote-hip/examples/hip_device_info.cpp +++ b/modules/remote-hip/examples/hip_device_info.cpp @@ -1,3 +1,5 @@ +#include + #include "../c++/remote.hpp" #include "../c++/transfer.hpp" diff --git a/modules/remote-hip/examples/hip_transfer_data.cpp b/modules/remote-hip/examples/hip_transfer_data.cpp index b44a291..8fbf466 100644 --- a/modules/remote-hip/examples/hip_transfer_data.cpp +++ b/modules/remote-hip/examples/hip_transfer_data.cpp @@ -81,6 +81,15 @@ saw::error_or real_main(){ val.at(1u).set(3); val.at(2u).set(-6); val.at(3u).set(1); + auto raw_d = val.get_raw_data(); + raw_d[0u] = 4; + raw_d[1u] = 2; + raw_d[2u] = -8; + raw_d[3u] = -1; + + for(uint64_t i = 0; i < 4u; ++i){ + std::cout<> id_val{0u}; auto eo_send = dat_srv->send(val, id_val); if(eo_send.is_error()){ -- cgit v1.2.3