summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorClaudius 'keldu' Holeksa <mail@keldu.de>2024-09-17 18:07:04 +0200
committerClaudius 'keldu' Holeksa <mail@keldu.de>2024-09-17 18:07:04 +0200
commit90acc8c3d29a7f3309aef212ae1548494aec494a (patch)
treef51db26b7cf7487208e374a6cd7d7b6cd542d5f7
parentc64b9df7aceb41f5c61f46f8205a3c50ef3aef4c (diff)
wip
-rw-r--r--modules/codec/c++/data_raw.hpp12
-rw-r--r--modules/codec/tests/data_raw.cpp22
-rw-r--r--modules/remote-hip/SConstruct5
-rw-r--r--modules/remote-hip/c++/device.tmpl.hpp2
-rw-r--r--modules/remote-hip/examples/SConscript2
-rw-r--r--modules/remote-hip/examples/hip_device_info.cpp2
-rw-r--r--modules/remote-hip/examples/hip_transfer_data.cpp9
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<ReferencedSchema>::type val){
- value_() = val;
+ auto& v = value_();
+ v = val;
}
constexpr typename native_data_type<ReferencedSchema>::type get() const {
@@ -422,7 +423,6 @@ class data<schema::Array<T,Dim>, encode::NativeRaw> {
s *= dims_[iter];
}
-
return s;
}
public:
@@ -456,7 +456,7 @@ class data<schema::Array<T,Dim>, 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<T>::Type (value_size_);
+ value_ = new typename raw_native_array_type_helper<T>::Type [value_size_];
}
data(data<MetaSchema, encode::NativeRaw> init)
@@ -465,12 +465,12 @@ class data<schema::Array<T,Dim>, encode::NativeRaw> {
dims_[i] = init.at(i).get();
}
value_size_ = get_full_size();
- value_ = new typename raw_native_array_type_helper<T>::Type (value_size_);
+ value_ = new typename raw_native_array_type_helper<T>::Type [value_size_];
}
~data(){
if(value_){
- delete value_;
+ delete[] value_;
value_ = nullptr;
value_size_ = 0u;
}
@@ -486,7 +486,7 @@ class data<schema::Array<T,Dim>, encode::NativeRaw> {
template<std::integral... Dims>
constexpr error_or<void> adopt(typename raw_native_array_type_helper<T>::Type* adoptee, Dims... adoptee_size){
if(value_ != nullptr){
- return make_error<err::invalid_state>("Can't adopt into existing state");
+ return make_error<err::invalid_state>("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<sch::Int32Array,encode::NativeRaw> 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<schema::Array<T,Dim>, Encoding> {
std::cout<<from.at(i).get()<<" ";
}
std::cout<<std::endl;
-
auto raw_d = from.get_raw_data();
for(uint64_t i = 0; i < from.size(); ++i){
std::cout<<raw_d[i]<<" ";
}
+
std::cout<<std::endl;
// auto from_dat = &from.at(0);
data<Schema,Encoding> 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 <sstream>
+
#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<void> 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<<raw_d[i]<<std::endl;
+ }
id<sch::Array<sch::Int16>> id_val{0u};
auto eo_send = dat_srv->send(val, id_val);
if(eo_send.is_error()){