From c0549d71b2109f10c1238db8b22362e7826ba61b Mon Sep 17 00:00:00 2001 From: "Claudius \"keldu\" Holeksa" Date: Sun, 5 Jul 2026 15:59:23 +0200 Subject: Just rename from lib to modules --- lib/sycl/.nix/derivation.nix | 43 -- lib/sycl/SConstruct | 80 ---- lib/sycl/c++/SConscript | 27 -- lib/sycl/c++/common.hpp | 12 - lib/sycl/c++/data.hpp | 961 ------------------------------------------- lib/sycl/c++/index.hpp | 18 - lib/sycl/c++/lbm.hpp | 3 - lib/sycl/c++/sycl.hpp | 5 - lib/sycl/tests/SConscript | 32 -- lib/sycl/tests/data.cpp | 56 --- 10 files changed, 1237 deletions(-) delete mode 100644 lib/sycl/.nix/derivation.nix delete mode 100644 lib/sycl/SConstruct delete mode 100644 lib/sycl/c++/SConscript delete mode 100644 lib/sycl/c++/common.hpp delete mode 100644 lib/sycl/c++/data.hpp delete mode 100644 lib/sycl/c++/index.hpp delete mode 100644 lib/sycl/c++/lbm.hpp delete mode 100644 lib/sycl/c++/sycl.hpp delete mode 100644 lib/sycl/tests/SConscript delete mode 100644 lib/sycl/tests/data.cpp (limited to 'lib/sycl') diff --git a/lib/sycl/.nix/derivation.nix b/lib/sycl/.nix/derivation.nix deleted file mode 100644 index 4422739..0000000 --- a/lib/sycl/.nix/derivation.nix +++ /dev/null @@ -1,43 +0,0 @@ -{ lib -, stdenv -, scons -, clang-tools -, pname -, version -, forstio -, kel -, adaptive-cpp -}: - -stdenv.mkDerivation { - pname = "${pname}-sycl"; - inherit version; - src = ./..; - - nativeBuildInputs = [ - scons - clang-tools - ]; - - buildInputs = [ - forstio.core - forstio.async - forstio.codec - forstio.codec-unit - forstio.codec-json - forstio.remote - #forstio.remote-sycl - kel.lbm.core - adaptive-cpp - ]; - - doCheck = true; - checkPhase = '' - scons test - ./bin/tests - ''; - - preferLocalBuild = true; - - outputs = [ "out" "dev" ]; -} diff --git a/lib/sycl/SConstruct b/lib/sycl/SConstruct deleted file mode 100644 index f8bfbcb..0000000 --- a/lib/sycl/SConstruct +++ /dev/null @@ -1,80 +0,0 @@ -#!/usr/bin/env python3 - -import sys -import os -import os.path -import glob -import re - - -if sys.version_info < (3,): - def isbasestring(s): - return isinstance(s,basestring) -else: - def isbasestring(s): - return isinstance(s, (str,bytes)) - -def add_kel_source_files(self, sources, filetype, lib_env=None, shared=False, target_post=""): - - if isbasestring(filetype): - dir_path = self.Dir('.').abspath - filetype = sorted(glob.glob(dir_path+"/"+filetype)) - - for path in filetype: - target_name = re.sub( r'(.*?)(\.cpp|\.c\+\+)', r'\1' + target_post, path ) - if shared: - target_name+='.os' - sources.append( self.SharedObject( target=target_name, source=path ) ) - else: - target_name+='.o' - sources.append( self.StaticObject( target=target_name, source=path ) ) - pass - -def isAbsolutePath(key, dirname, env): - assert os.path.isabs(dirname), "%r must have absolute path syntax" % (key,) - -env_vars = Variables( - args=ARGUMENTS -) - -env_vars.Add('prefix', - help='Installation target location of build results and headers', - default='/usr/local/', - validator=isAbsolutePath -) - -env=Environment(ENV=os.environ, variables=env_vars, CPPPATH=[], - CPPDEFINES=['SAW_UNIX'], - CXX = ['syclcc-clang'], - CXXFLAGS=[ - '-std=c++20', - '-g', - '-O3', - '-Wall', - '-Wextra', - '-isystem', 'AdaptiveCpp' - ], - LIBS=[ - 'forstio-core', - 'acpp-rt', - 'omp' - ] -); -env.__class__.add_source_files = add_kel_source_files -env.Tool('compilation_db'); -env.cdb = env.CompilationDatabase('compile_commands.json'); - -env.objects = []; -env.sources = []; -env.headers = []; -env.targets = []; - -Export('env') -SConscript('c++/SConscript') -SConscript('tests/SConscript') - -env.Alias('cdb', env.cdb); -env.Alias('all', [env.targets]); -env.Default('all'); - -env.Alias('install', '$prefix') diff --git a/lib/sycl/c++/SConscript b/lib/sycl/c++/SConscript deleted file mode 100644 index 2ed63ba..0000000 --- a/lib/sycl/c++/SConscript +++ /dev/null @@ -1,27 +0,0 @@ -#!/bin/false - -import os -import os.path -import glob - - -Import('env') - -dir_path = Dir('.').abspath - -# Environment for base library -core_env = env.Clone(); - -core_env.sources = sorted(glob.glob(dir_path + "/*.cpp")); -core_env.headers = sorted(glob.glob(dir_path + "/*.hpp")); - -env.sources += core_env.sources; -env.headers += core_env.headers; - -## Static lib -objects = [] -core_env.add_source_files(objects, core_env.sources, shared=False); -env.library_static = core_env.StaticLibrary('#build/kel-lbm-sycl', [objects]); - -env.Install('$prefix/lib/', env.library_static); -env.Install('$prefix/include/kel/lbm/sycl/', core_env.headers); diff --git a/lib/sycl/c++/common.hpp b/lib/sycl/c++/common.hpp deleted file mode 100644 index 8ff76fc..0000000 --- a/lib/sycl/c++/common.hpp +++ /dev/null @@ -1,12 +0,0 @@ -#pragma once - -#include -#include - -namespace kel { -namespace lbm { -namespace sycl { -using namespace acpp::sycl; -} -} -} diff --git a/lib/sycl/c++/data.hpp b/lib/sycl/c++/data.hpp deleted file mode 100644 index 9f43848..0000000 --- a/lib/sycl/c++/data.hpp +++ /dev/null @@ -1,961 +0,0 @@ -#include "common.hpp" -#include - -namespace kel { -namespace lbm { -namespace encode { -template -struct Sycl { -}; -} - -/* -namespace impl { -template -struct struct_has_only_equal_dimension_array{}; -} -*/ -} -} - -namespace saw { -template -class data, kel::lbm::encode::Sycl> final { -public: - using Schema = schema::FixedArray; -private: - acpp::sycl::queue* q_; - data* values_; - - SAW_FORBID_COPY(data); - SAW_FORBID_MOVE(data); -public: - data(const data::MetaSchema>& meta__, acpp::sycl::queue& q__): - q_{&q__}, - values_{nullptr} - { - (void) meta__; - SAW_ASSERT(q_); - values_ = acpp::sycl::malloc_device>(ct_multiply::value,*q_); - SAW_ASSERT(values_); - } - - data(acpp::sycl::queue& q__): - q_{&q__}, - values_{nullptr} - { - SAW_ASSERT(q_); - values_ = acpp::sycl::malloc_device>(ct_multiply::value,*q_); - SAW_ASSERT(values_); - } - - ~data(){ - if(not values_){ - return; - } - SAW_ASSERT(q_); - - acpp::sycl::free(values_,*q_); - values_ = nullptr; - } - - static constexpr data> get_dims() { - return saw::data>{{Dims...}}; - } - - constexpr data& at(const data>& index){ - return values_[kel::lbm::flatten_index::apply(index,get_dims()).get()]; - } - - constexpr data& at(const data>& index) const{ - return values_[kel::lbm::flatten_index::apply(index,get_dims()).get()]; - } - - constexpr data* flat_data() const { - return values_; - } -}; - -template -class data>, kel::lbm::encode::Sycl> final { -public: - using Schema = schema::Ptr>; -private: - data* values_; - -public: - SAW_DEFAULT_COPY(data); - SAW_DEFAULT_MOVE(data); - - data(): - values_{nullptr} - {} - - data(data, kel::lbm::encode::Sycl>& values__): - values_{values__.flat_data()} - {} - - data(data* values__): - values_{values__} - {} - - static constexpr data> get_dims() { - return saw::data>{{Dims...}}; - } - - constexpr data& at(const data>& index){ - return values_[kel::lbm::flatten_index::apply(index,get_dims()).get()]; - } - - constexpr data& at(const data>& index) const{ - return values_[kel::lbm::flatten_index::apply(index,get_dims()).get()]; - } - - constexpr data* flat_data() const { - return values_; - } -}; - -template -class data, kel::lbm::encode::Sycl> final { -public: - using Schema = schema::Array; -private: - static_assert(Dims > 0u, "Zero Dim Arrays make no sense here. If you meant to use this for math style approaches then use Tensor instead of Array"); - - data* values_; - data,Encode> meta_; - acpp::sycl::queue* q_; - - SAW_FORBID_COPY(data); - SAW_FORBID_MOVE(data); -public: - data(const data::MetaSchema>& meta__, acpp::sycl::queue& q__): - values_{nullptr}, - meta_{meta__}, - q_{&q__} - { - SAW_ASSERT(q_); - values_ = acpp::sycl::malloc_device>(flat_size().get(),*q_); - SAW_ASSERT(values_); - } - - data(acpp::sycl::queue& q__): - values_{nullptr}, - meta_{}, - q_{&q__} - { - SAW_ASSERT(q_); - } - - ~data(){ - if(not values_){ - return; - } - SAW_ASSERT(q_); - - acpp::sycl::free(values_,*q_); - values_ = nullptr; - } - - constexpr data, Encode> meta() const { - return meta_; - } - - constexpr data& at(const data, Encode>& index){ - return values_[kel::lbm::flatten_index::apply(index,meta()).get()]; - } - - constexpr data& at(const data, Encode>& index) const{ - return values_[kel::lbm::flatten_index::apply(index,meta()).get()]; - } - - constexpr error_or reset_to(const data::MetaSchema>& meta_arg){ - SAW_ASSERT(q_); - meta_ = meta_arg; - - if(values_){ - acpp::sycl::free(values_,*q_); - } - values_ = acpp::sycl::malloc_device>(flat_size().get(),*q_); - SAW_ASSERT(q_); - - return make_void(); - } - - constexpr data* flat_data() const { - return values_; - } - - constexpr data flat_size() const { - data mult{1u}; - - for(uint64_t i{0u}; i < Dims; ++i){ - mult = mult * meta_.at({i}); - } - - return mult; - } -}; - -template -class data>, kel::lbm::encode::Sycl> final { -public: - using Schema = schema::Ptr>; -private: - static_assert(Dims > 0u, "Zero Dim Arrays make no sense here. If you meant to use this for math style approaches then use Tensor instead of Array"); - - data* values_; - data,Encode> meta_; - -public: - SAW_DEFAULT_COPY(data); - SAW_DEFAULT_MOVE(data); - - data(): - values_{nullptr} - {} - - data(const data, kel::lbm::encode::Sycl>& values__): - values_{values__.flat_data()}, - meta_{values__.meta()} - {} - - constexpr data, Encode> meta() const { - return meta_; - } - - constexpr data& at(const data, Encode>& index){ - return values_[kel::lbm::flatten_index::apply(index,meta()).get()]; - } - - constexpr data& at(const data, Encode>& index) const{ - return values_[kel::lbm::flatten_index::apply(index,meta()).get()]; - } - - constexpr data* flat_data() const { - return values_; - } - - constexpr data flat_size() const { - data mult{1u}; - - for(uint64_t i{0u}; i < Dims; ++i){ - mult = mult * meta_.at({i}); - } - - return mult; - } -}; - -template -class data,kel::lbm::encode::Sycl> final { -public: - using Schema = kel::lbm::sch::Chunk; -private: - using InnerSchema = typename Schema::InnerSchema; - using ValueSchema = typename InnerSchema::ValueType; - - data> values_; -public: - data(const data::MetaSchema>& meta__, acpp::sycl::queue& q__): - values_{meta__,q__} - {} - - data(acpp::sycl::queue& q__): - values_{q__} - {} - - constexpr data& ghost_at(const data>& index){ - return values_.at(index); - } - - constexpr data& ghost_at(const data>& index) const { - return values_.at(index); - } - - static constexpr auto get_ghost_dims() { - return data>::get_dims(); - } - - static constexpr auto ghost_meta() { - return data>::meta(); - } - - data& at(const data>& index){ - std::decay_t ind; - for(uint64_t i = 0u; i < sizeof...(Sides); ++i){ - ind.at({i}) = index.at({i}) + Ghost; - } - return values_.at(ind); - } - - data& at(const data>& index) const { - std::decay_t ind; - for(uint64_t i = 0u; i < sizeof...(Sides); ++i){ - ind.at({i}) = index.at({i}) + Ghost; - } - return values_.at(ind); - } - - static constexpr auto get_dims(){ - return data,Encode>{{Sides...}}; - } - - static constexpr auto meta(){ - return data,Encode>{{Sides...}}; - } - - auto flat_data() const { - return values_.flat_data(); - } - - static constexpr auto flat_size() { - return data>::flat_size(); - } -}; - -template -class data>,kel::lbm::encode::Sycl> final { -public: - using Schema = schema::Ptr>; -private: - using InnerSchema = typename kel::lbm::sch::Chunk::InnerSchema; - using ValueSchema = typename InnerSchema::ValueType; - - data,kel::lbm::encode::Sycl> values_; - -public: - SAW_DEFAULT_MOVE(data); - SAW_DEFAULT_COPY(data); - - data(): - values_{nullptr} - {} - - data(const data, kel::lbm::encode::Sycl>& values__): - values_{values__.flat_data()} - {} - - data(data* values__): - values_{values__} - {} - - constexpr data& ghost_at(const data>& index){ - return values_.at(index); - } - - constexpr data& ghost_at(const data>& index) const { - return values_.at(index); - } - - static constexpr auto get_ghost_dims() { - return data>::get_dims(); - } - - static constexpr auto ghost_meta() { - return data>::meta(); - } - - data& at(const data>& index){ - std::decay_t ind; - for(uint64_t i = 0u; i < sizeof...(Sides); ++i){ - ind.at({i}) = index.at({i}) + Ghost; - } - return values_.at(ind); - } - - data& at(const data>& index) const { - std::decay_t ind; - for(uint64_t i = 0u; i < sizeof...(Sides); ++i){ - ind.at({i}) = index.at({i}) + Ghost; - } - return values_.at(ind); - } - - static constexpr auto meta(){ - return data,Encode>{{Sides...}}; - } - - static constexpr auto get_dims(){ - return data,Encode>{{Sides...}}; - } - - auto flat_data() const { - return values_.flat_data(); - } - - static constexpr auto flat_size() { - return data>::flat_size(); - } -}; - -template -struct data, kel::lbm::encode::Sycl> final { -public: - using StorageT = std::tuple>...>; - using Schema = schema::Tuple; -private: - StorageT members_; - - /** - * A helper constructor to forward the sycl queue to the inner "default" constructors - */ - template - constexpr data(acpp::sycl::queue& q, std::index_sequence): - members_{(static_cast(Is), q)...} - {} -public: - /* - data(data::MetaSchema>& meta__, acpp::sycl::queue& q__): - data{q__, std::make_index_sequence{}} - {} - */ - - data(acpp::sycl::queue& q__): - data{q__, std::make_index_sequence{}} - { - q__.wait(); - } - - template - auto& get(){ - return std::get(members_); - } - - template - auto& get() const { - return std::get(members_); - } -}; - -template -struct data>, kel::lbm::encode::Sycl> final { -public: - using StorageT = std::tuple,kel::lbm::encode::Sycl>...>; - using Schema = schema::Tuple; -private: - StorageT members_; - - /** - * A helper constructor to forward the sycl queue to the inner "default" constructors - */ -public: - data() = default; - - template - auto& get(){ - return std::get(members_); - } - - template - const auto& get() const { - return std::get(members_); - } -}; - -template -class data, kel::lbm::encode::Sycl > final { -public: - using StorageT = std::tuple>...>; - using Schema = schema::Struct; -private: - /** - * @todo Check by static assert that the members all have the same dimensions. Alternatively - * Do it here by specializing. - */ - StorageT members_; - - /** - * A helper constructor to forward the sycl queue to the inner "default" constructors - */ - template - constexpr data(acpp::sycl::queue& q, std::index_sequence): - members_{(static_cast(Is), q)...} - {} -public: - data(acpp::sycl::queue& q__): - data{q__, std::make_index_sequence{}} - { - q__.wait(); - } - - template - auto& get(){ - return std::get(members_); - } - - template - auto& get() const { - return std::get(members_); - } - - template - auto& get(){ - return std::get::value>(members_); - } - - template - auto& get() const { - return std::get::value>(members_); - } -}; - -template -class data...>>, kel::lbm::encode::Sycl > final { -public: - using StorageT = std::tuple,kel::lbm::encode::Sycl>...>; - using Schema = schema::Struct,Keys>...>; -private: - /** - * @todo Check by static assert that the members all have the same dimensions. Alternatively - * Do it here by specializing. - */ - StorageT members_; -public: - data() = default; - - template - auto& get(){ - return std::get(members_); - } - - template - auto& get() const { - return std::get(members_); - } - - template - auto& get(){ - return std::get::value>(members_); - } - - template - auto& get() const { - return std::get::value>(members_); - } -}; -} - -namespace kel { -namespace lbm { -namespace impl { -template -struct sycl_copy_helper; - -template -struct sycl_copy_helper, Encode> final { - using Schema = sch::Struct; - - template - static saw::error_or copy_to_device_member(saw::data& host_data, saw::data>& sycl_data, sycl::queue& q){ - if constexpr (i < sizeof...(Members)){ - using M = typename saw::parameter_pack_type::type; - auto& host_member_data = host_data.template get(); - auto& sycl_member_data = sycl_data.template get(); - - auto eov = sycl_copy_helper::copy_to_device(host_member_data,sycl_member_data,q); - if(eov.is_error()){ - return eov; - } - - return copy_to_device_member(host_data,sycl_data,q); - } - - return saw::make_void(); - } - - static saw::error_or copy_to_device(saw::data& host_data, saw::data>& sycl_data, sycl::queue& q){ - - return copy_to_device_member<0u>(host_data, sycl_data, q); - } - - template - static saw::error_or copy_to_host_member(saw::data>& sycl_data, saw::data& host_data, sycl::queue& q){ - if constexpr (i < sizeof...(Members)){ - using M = typename saw::parameter_pack_type::type; - auto& host_member_data = host_data.template get(); - auto& sycl_member_data = sycl_data.template get(); - - auto eov = sycl_copy_helper::copy_to_host(sycl_member_data,host_member_data,q); - if(eov.is_error()){ - return eov; - } - - return copy_to_host_member(sycl_data,host_data,q); - } - - return saw::make_void(); - } - - - static saw::error_or copy_to_host(saw::data>& sycl_data, saw::data& host_data, sycl::queue& q){ - return copy_to_host_member<0u>(sycl_data, host_data, q); - } - - template - static saw::error_or malloc_on_device_member(saw::data& host_data, saw::data>& sycl_data, sycl::queue& q){ - - if constexpr (i < sizeof...(Members)){ - using M = typename saw::parameter_pack_type::type; - auto& host_member_data = host_data.template get(); - auto& sycl_member_data = sycl_data.template get(); - - auto eov = sycl_copy_helper::malloc_on_device(host_member_data,sycl_member_data,q); - if(eov.is_error()){ - return eov; - } - - return malloc_on_device_member(host_data,sycl_data,q); - } - - return saw::make_void(); - } - - static saw::error_or malloc_on_device(saw::data& host_data, saw::data>& sycl_data, sycl::queue& q){ - return malloc_on_device_member<0u>(host_data,sycl_data,q); - } -}; - -template -struct sycl_copy_helper, Encode> final { - using Schema = sch::Tuple; - - template - static saw::error_or copy_to_device_member(saw::data& host_data, saw::data>& sycl_data, sycl::queue& q){ - if constexpr (i < sizeof...(Members)){ - using M = typename saw::parameter_pack_type::type; - auto& host_member_data = host_data.template get(); - auto& sycl_member_data = sycl_data.template get(); - - auto eov = sycl_copy_helper::copy_to_device(host_member_data,sycl_member_data,q); - if(eov.is_error()){ - return eov; - } - - return copy_to_device_member(host_data,sycl_data,q); - } - - return saw::make_void(); - } - - static saw::error_or copy_to_device(saw::data& host_data, saw::data>& sycl_data, sycl::queue& q){ - return copy_to_device_member<0u>(host_data, sycl_data, q); - } - - template - static saw::error_or copy_to_host_member(saw::data>& sycl_data, saw::data& host_data, sycl::queue& q){ - if constexpr (i < sizeof...(Members)){ - using M = typename saw::parameter_pack_type::type; - - auto& host_member_data = host_data.template get(); - auto& sycl_member_data = sycl_data.template get(); - - auto eov = sycl_copy_helper::copy_to_host(sycl_member_data,host_member_data,q); - if(eov.is_error()){ - return eov; - } - - return copy_to_host_member(sycl_data,host_data,q); - } - - return saw::make_void(); - } - - - static saw::error_or copy_to_host( - saw::data& host_data, - saw::data>& sycl_data, - sycl::queue& q - ){ - return copy_to_host_member<0u>(sycl_data, host_data, q); - } - - template - static saw::error_or malloc_on_device_member(saw::data& host_data, saw::data>& sycl_data, sycl::queue& q){ - - if constexpr (i < sizeof...(Members)){ - using M = typename saw::parameter_pack_type::type; - auto& host_member_data = host_data.template get(); - auto& sycl_member_data = sycl_data.template get(); - - auto eov = sycl_copy_helper::malloc_on_device(host_member_data,sycl_member_data,q); - if(eov.is_error()){ - return eov; - } - - return malloc_on_device_member(host_data,sycl_data,q); - } - - return saw::make_void(); - } - - static saw::error_or malloc_on_device(saw::data& host_data, saw::data>& sycl_data, sycl::queue& q){ - return malloc_on_device_member<0u>(host_data,sycl_data,q); - } -}; - -template -struct sycl_copy_helper, Encode> final { - using Schema = sch::FixedArray; - - static saw::error_or copy_to_host(saw::data>& sycl_data, saw::data& host_data, sycl::queue& q){ - auto host_ptr = host_data.flat_data(); - auto sycl_ptr = sycl_data.flat_data(); - - static_assert(sizeof(std::decay_t) == sizeof(std::decay_t), "Unequal size"); - - q.submit([&](acpp::sycl::handler& h){ - h.copy(sycl_ptr,host_ptr, saw::ct_multiply::value); - }).wait(); - return saw::make_void(); - } - - static saw::error_or copy_to_device(saw::data& host_data, saw::data>& sycl_data, sycl::queue& q){ - auto host_ptr = host_data.flat_data(); - auto sycl_ptr = sycl_data.flat_data(); - - static_assert(sizeof(std::decay_t) == sizeof(std::decay_t), "Unequal size"); - - q.submit([&](acpp::sycl::handler& h){ - h.copy(host_ptr,sycl_ptr, saw::ct_multiply::value); - }).wait(); - return saw::make_void(); - } - - static saw::error_or malloc_on_device(saw::data& host_data, saw::data>& sycl_data, sycl::queue& q){ - (void) host_data; - (void) sycl_data; - (void) q; - return saw::make_void(); - } -}; - -template -struct sycl_copy_helper, Encode> final { - using Schema = sch::Chunk; - - static saw::error_or copy_to_host(saw::data>& sycl_data, saw::data& host_data, sycl::queue& q){ - auto host_ptr = host_data.flat_data(); - auto sycl_ptr = sycl_data.flat_data(); - - static_assert(sizeof(std::decay_t) == sizeof(std::decay_t), "Unequal size"); - - auto flat_size = host_data.flat_size(); - - q.submit([&](acpp::sycl::handler& h){ - h.copy(sycl_ptr,host_ptr, flat_size.get()); - }).wait(); - return saw::make_void(); - } - - static saw::error_or copy_to_device(saw::data& host_data, saw::data>& sycl_data, sycl::queue& q){ - auto host_ptr = host_data.flat_data(); - auto sycl_ptr = sycl_data.flat_data(); - - static_assert(sizeof(std::decay_t) == sizeof(std::decay_t), "Unequal size"); - - auto flat_size = host_data.flat_size(); - - q.submit([&](acpp::sycl::handler& h){ - h.copy(host_ptr,sycl_ptr, flat_size.get()); - }).wait(); - return saw::make_void(); - } -}; - -template -struct sycl_copy_helper, Encode> final { - using Schema = sch::Array; - - static saw::error_or copy_to_host(saw::data>& sycl_data, saw::data& host_data, sycl::queue& q){ - auto host_ptr = host_data.flat_data(); - auto sycl_ptr = sycl_data.flat_data(); - - static_assert(sizeof(std::decay_t) == sizeof(std::decay_t), "Unequal size"); - - SAW_ASSERT(host_data.flat_size() == sycl_data.flat_size()); - q.submit([&](acpp::sycl::handler& h){ - h.copy(sycl_ptr,host_ptr, host_data.flat_size().get()); - }).wait(); - return saw::make_void(); - } - - static saw::error_or copy_to_device(saw::data& host_data, saw::data>& sycl_data, sycl::queue& q){ - - { - auto hm = host_data.meta(); - auto sm = sycl_data.meta(); - bool equ{true}; - for(uint64_t i{0u}; i < Dims; ++i){ - equ &= (hm.at({i}).get() == sm.at({i}).get()); - } - if(not equ){ - sycl_data.reset_to(hm); - } - } - - auto host_ptr = host_data.flat_data(); - auto sycl_ptr = sycl_data.flat_data(); - static_assert(sizeof(std::decay_t) == sizeof(std::decay_t), "Unequal size"); - - q.submit([&](acpp::sycl::handler& h){ - h.copy(host_ptr,sycl_ptr, host_data.flat_size().get()); - }).wait(); - - return saw::make_void(); - } - - static saw::error_or malloc_on_device(saw::data& host_data, saw::data>& sycl_data, sycl::queue& q){ - sycl_data = {host_data.meta(),q}; - return saw::make_void(); - } -}; - - -template -struct make_view_helper; - -template -struct make_view_helper, encode::Sycl> { -public: -static saw::error_or apply( - saw::data, encode::Sycl>& dat, - saw::data>, encode::Sycl>& dat_view -){ - dat_view = {dat}; - return saw::make_void(); -} -}; - -template -struct make_view_helper, encode::Sycl> { -public: - static saw::error_or apply( - saw::data, encode::Sycl>& dat, - saw::data>, encode::Sycl>& dat_view - ){ - dat_view = {dat}; - return saw::make_void(); - } -}; - -template -struct make_view_helper, encode::Sycl> { -public: - static saw::error_or apply( - saw::data, encode::Sycl>& dat, - saw::data>, encode::Sycl>& dat_view - ){ - dat_view = {dat}; - return saw::make_void(); - } -}; - -template -struct make_view_helper...>, encode::Sycl> { -private: -template -static saw::error_or apply_i( - saw::data...>, encode::Sycl>& dat, - saw::data...>>, encode::Sycl>& dat_view - ){ - if constexpr (i < sizeof...(Sch)){ - using M = typename saw::parameter_pack_type...>::type; - - auto eov = make_view_helper>::apply(dat.template get(),dat_view.template get()); - if(eov.is_error()){ - return eov; - } - - return apply_i(dat,dat_view); - } - - return saw::make_void(); - } -public: -static saw::error_or apply( - saw::data...>, encode::Sycl>& dat, - saw::data...>>, encode::Sycl>& dat_view -){ - return apply_i<0u>(dat,dat_view); -} -}; - -template -struct make_view_helper, encode::Sycl> { -private: - template - static saw::error_or apply_i( - saw::data, encode::Sycl>& dat, - saw::data>, encode::Sycl>& dat_view - ){ - if constexpr (i < sizeof...(Sch)){ - using M = typename saw::parameter_pack_type::type; - - auto eov = make_view_helper>::apply(dat.template get(), dat_view.template get()); - if(eov.is_error()){ - return eov; - } - - return apply_i(dat,dat_view); - } - - return saw::make_void(); - } -public: - static saw::error_or apply( - saw::data, encode::Sycl>& dat, - saw::data>, encode::Sycl> dat_view - ){ - return apply_i<0u>(dat,dat_view); - } -}; -} - -// Ptr => Ptr>> => Ptr -template -auto make_view(saw::data& dat){ - saw::data,Encode> dat_view; - auto eov = impl::make_view_helper::apply(dat,dat_view); - (void) eov; - - return dat_view; -} - -class device final { -private: - sycl::queue q_; - - SAW_FORBID_COPY(device); - SAW_FORBID_MOVE(device); -public: - device() = default; - ~device() = default; - - template - saw::error_or copy_to_device(saw::data& host_data, saw::data>& sycl_data){ - return impl::sycl_copy_helper::copy_to_device(host_data, sycl_data, q_); - } - - template - saw::error_or copy_to_host(saw::data>& sycl_data, saw::data& host_data){ - return impl::sycl_copy_helper::copy_to_host(sycl_data, host_data, q_); - } - - template - saw::error_or malloc_on_device( - saw::data& host_data, - saw::data>& sycl_data - ){ - auto eov = impl::sycl_copy_helper::malloc_on_device(host_data, sycl_data, q_); - q_.wait(); - return eov; - } - - auto& get_handle(){ - return q_; - } -}; -} -} diff --git a/lib/sycl/c++/index.hpp b/lib/sycl/c++/index.hpp deleted file mode 100644 index 0d2c035..0000000 --- a/lib/sycl/c++/index.hpp +++ /dev/null @@ -1,18 +0,0 @@ -#pragma once - -#include "common.hpp" - -namespace kel { -namespace lbm { -template -saw::data> sycl_to_saw_index(const acpp::sycl::id& idx){ - saw::data> trans_index; - - for(uint64_t i{0u}; i < D; ++i){ - trans_index.at({{i}}).set(idx[i]); - } - - return trans_index; -} -} -} diff --git a/lib/sycl/c++/lbm.hpp b/lib/sycl/c++/lbm.hpp deleted file mode 100644 index 3e67ae6..0000000 --- a/lib/sycl/c++/lbm.hpp +++ /dev/null @@ -1,3 +0,0 @@ -#pragma once - -#include "data.hpp" diff --git a/lib/sycl/c++/sycl.hpp b/lib/sycl/c++/sycl.hpp deleted file mode 100644 index 973b511..0000000 --- a/lib/sycl/c++/sycl.hpp +++ /dev/null @@ -1,5 +0,0 @@ -#pragma once - -#include "common.hpp" -#include "data.hpp" -#include "index.hpp" diff --git a/lib/sycl/tests/SConscript b/lib/sycl/tests/SConscript deleted file mode 100644 index d1b381e..0000000 --- a/lib/sycl/tests/SConscript +++ /dev/null @@ -1,32 +0,0 @@ -#!/bin/false - -import os -import os.path -import glob - - -Import('env') - -dir_path = Dir('.').abspath - -# Environment for base library -test_cases_env = env.Clone(); - -test_cases_env.Append(LIBS=['forstio-test']); - -test_cases_env.sources = sorted(glob.glob(dir_path + "/*.cpp")) -test_cases_env.headers = sorted(glob.glob(dir_path + "/*.hpp")) - -env.sources += test_cases_env.sources; -env.headers += test_cases_env.headers; - -objects_static = [] -test_cases_env.add_source_files(objects_static, test_cases_env.sources, shared=False); -test_cases_env.program = test_cases_env.Program('#bin/tests', [objects_static]); -# , env.library_static]); - -# Set Alias -env.Alias('test', test_cases_env.program); -env.Alias('check', test_cases_env.program); - -env.targets += ['test','check']; diff --git a/lib/sycl/tests/data.cpp b/lib/sycl/tests/data.cpp deleted file mode 100644 index 4321a0d..0000000 --- a/lib/sycl/tests/data.cpp +++ /dev/null @@ -1,56 +0,0 @@ -#include - -#include "../c++/lbm.hpp" - -namespace { - -namespace sch { -using namespace kel::lbm::sch; -using TestObjSchema = Tuple< - Member, "foo">, - Member, "bar">, - Member< - Array< - Struct< - Member,"pos"> - > - >, - "baz" - > ->; -} - -SAW_TEST("Sycl Data Compilation"){ - acpp::sycl::queue q; - saw::data< - saw::schema::Struct< - saw::schema::Member< - kel::lbm::sch::Chunk, - "test" - > - >, - kel::lbm::encode::Sycl - > dat{q}; - - auto& test_f = dat.template get<"test">(); - - // test_f.at({}).set(1); - // SAW_EXPECT(test_f.at({}).get() == 1, "Value check failed"); -} - -SAW_TEST("Sycl Data Array of Struct"){ - acpp::sycl::queue q; - - saw::data, kel::lbm::encode::Sycl> a{{{2u}},q}; -} - -/* -SAW_TEST("Sycl Data Compilation for Particle Similacrum"){ - acpp::sycl::queue q; - - saw::data< - sch::TestObjSchema - > a; -} -*/ -} -- cgit v1.2.3