From 1c56b1c4ec29c0fb6c81d1f15ede4272233e3514 Mon Sep 17 00:00:00 2001 From: mdimakov Date: Tue, 26 Jan 2021 14:30:56 +0300 Subject: [PATCH 01/14] [SYCL] Fix set_final_data(..) for vector Signed-off-by: mdimakov --- .../include/CL/sycl/detail/sycl_mem_obj_t.hpp | 26 +++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/sycl/include/CL/sycl/detail/sycl_mem_obj_t.hpp b/sycl/include/CL/sycl/detail/sycl_mem_obj_t.hpp index 22ebb8ee97109..803f69f5138d2 100644 --- a/sycl/include/CL/sycl/detail/sycl_mem_obj_t.hpp +++ b/sycl/include/CL/sycl/detail/sycl_mem_obj_t.hpp @@ -21,7 +21,7 @@ #include #include - +#include __SYCL_INLINE_NAMESPACE(cl) { namespace sycl { namespace detail { @@ -51,7 +51,13 @@ class __SYCL_EXPORT SYCLMemObjT : public SYCLMemObjI { template using EnableIfOutputIteratorT = enable_if_t< - /*is_output_iterator::value &&*/ !std::is_pointer::value>; + /*is_output_iterator::value &&*/ !std::is_pointer::value && + !std::is_same, bool>::value>; + + template + using EnableIfOutputIteratorBool = enable_if_t< + !std::is_pointer::value && + std::is_same, bool>::value>; template using EnableIfDefaultAllocator = @@ -184,6 +190,22 @@ class __SYCL_EXPORT SYCLMemObjT : public SYCLMemObjI { }; } + template + __SYCL_DLL_LOCAL EnableIfOutputIteratorBool + set_final_data(Destination FinalData) { + MUploadDataFunctor = [this, FinalData]() { + using DestinationValueT = iterator_value_type_t; + // TODO if Destination is ContiguousIterator then don't create + // ContiguousStorage. updateHostMemory works only with pointer to + // continuous data. + const size_t Size = MSizeInBytes / sizeof(DestinationValueT); + bool* ContiguousStorage = new bool[Size]; + updateHostMemory(ContiguousStorage); + std::copy(ContiguousStorage, ContiguousStorage + Size, + FinalData); + }; + } + protected: void updateHostMemory(void *const Ptr); From a988a0b09b5dfdcd9e575ba4f1c58a004d0b0ec7 Mon Sep 17 00:00:00 2001 From: mdimakov Date: Tue, 26 Jan 2021 14:39:43 +0300 Subject: [PATCH 02/14] [SYCL] Clang-format fix Signed-off-by: mdimakov --- sycl/include/CL/sycl/detail/sycl_mem_obj_t.hpp | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/sycl/include/CL/sycl/detail/sycl_mem_obj_t.hpp b/sycl/include/CL/sycl/detail/sycl_mem_obj_t.hpp index 803f69f5138d2..ee2fd6cf6b5cf 100644 --- a/sycl/include/CL/sycl/detail/sycl_mem_obj_t.hpp +++ b/sycl/include/CL/sycl/detail/sycl_mem_obj_t.hpp @@ -21,7 +21,7 @@ #include #include -#include + __SYCL_INLINE_NAMESPACE(cl) { namespace sycl { namespace detail { @@ -55,9 +55,9 @@ class __SYCL_EXPORT SYCLMemObjT : public SYCLMemObjI { !std::is_same, bool>::value>; template - using EnableIfOutputIteratorBool = enable_if_t< - !std::is_pointer::value && - std::is_same, bool>::value>; + using EnableIfOutputIteratorBool = + enable_if_t::value && + std::is_same, bool>::value>; template using EnableIfDefaultAllocator = @@ -199,10 +199,9 @@ class __SYCL_EXPORT SYCLMemObjT : public SYCLMemObjI { // ContiguousStorage. updateHostMemory works only with pointer to // continuous data. const size_t Size = MSizeInBytes / sizeof(DestinationValueT); - bool* ContiguousStorage = new bool[Size]; + bool *ContiguousStorage = new bool[Size]; updateHostMemory(ContiguousStorage); - std::copy(ContiguousStorage, ContiguousStorage + Size, - FinalData); + std::copy(ContiguousStorage, ContiguousStorage + Size, FinalData); }; } From 02dbc6fad9201a557323084f1c3cab46d6626d80 Mon Sep 17 00:00:00 2001 From: mdimakov Date: Tue, 26 Jan 2021 16:14:22 +0300 Subject: [PATCH 03/14] [SYCL] Adress review comments Signed-off-by: mdimakov --- sycl/include/CL/sycl/detail/sycl_mem_obj_t.hpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/sycl/include/CL/sycl/detail/sycl_mem_obj_t.hpp b/sycl/include/CL/sycl/detail/sycl_mem_obj_t.hpp index ee2fd6cf6b5cf..57249bf25a22b 100644 --- a/sycl/include/CL/sycl/detail/sycl_mem_obj_t.hpp +++ b/sycl/include/CL/sycl/detail/sycl_mem_obj_t.hpp @@ -199,9 +199,9 @@ class __SYCL_EXPORT SYCLMemObjT : public SYCLMemObjI { // ContiguousStorage. updateHostMemory works only with pointer to // continuous data. const size_t Size = MSizeInBytes / sizeof(DestinationValueT); - bool *ContiguousStorage = new bool[Size]; - updateHostMemory(ContiguousStorage); - std::copy(ContiguousStorage, ContiguousStorage + Size, FinalData); + std::unique_ptr ContiguousStorage(new bool[Size]); + updateHostMemory(ContiguousStorage.get()); + std::copy(ContiguousStorage.get(), ContiguousStorage.get() + Size, FinalData); }; } From a353a66fac325afb54306c92998eb5a89bd6e9b3 Mon Sep 17 00:00:00 2001 From: mdimakov Date: Tue, 26 Jan 2021 16:17:33 +0300 Subject: [PATCH 04/14] [SYCL] Clang-format fix Signed-off-by: mdimakov --- sycl/include/CL/sycl/detail/sycl_mem_obj_t.hpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sycl/include/CL/sycl/detail/sycl_mem_obj_t.hpp b/sycl/include/CL/sycl/detail/sycl_mem_obj_t.hpp index 57249bf25a22b..ff50bf2cadae4 100644 --- a/sycl/include/CL/sycl/detail/sycl_mem_obj_t.hpp +++ b/sycl/include/CL/sycl/detail/sycl_mem_obj_t.hpp @@ -201,7 +201,8 @@ class __SYCL_EXPORT SYCLMemObjT : public SYCLMemObjI { const size_t Size = MSizeInBytes / sizeof(DestinationValueT); std::unique_ptr ContiguousStorage(new bool[Size]); updateHostMemory(ContiguousStorage.get()); - std::copy(ContiguousStorage.get(), ContiguousStorage.get() + Size, FinalData); + std::copy(ContiguousStorage.get(), ContiguousStorage.get() + Size, + FinalData); }; } From 6d5d798b97778357eff72fe7a60ca4b92de62e7c Mon Sep 17 00:00:00 2001 From: mdimakov Date: Tue, 26 Jan 2021 16:34:06 +0300 Subject: [PATCH 05/14] [SYCL] More correct usage of unique_ptr Signed-off-by: mdimakov --- sycl/include/CL/sycl/detail/sycl_mem_obj_t.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sycl/include/CL/sycl/detail/sycl_mem_obj_t.hpp b/sycl/include/CL/sycl/detail/sycl_mem_obj_t.hpp index ff50bf2cadae4..26a2e905d8c40 100644 --- a/sycl/include/CL/sycl/detail/sycl_mem_obj_t.hpp +++ b/sycl/include/CL/sycl/detail/sycl_mem_obj_t.hpp @@ -199,7 +199,7 @@ class __SYCL_EXPORT SYCLMemObjT : public SYCLMemObjI { // ContiguousStorage. updateHostMemory works only with pointer to // continuous data. const size_t Size = MSizeInBytes / sizeof(DestinationValueT); - std::unique_ptr ContiguousStorage(new bool[Size]); + auto ContiguousStorage = std::make_unique(Size); updateHostMemory(ContiguousStorage.get()); std::copy(ContiguousStorage.get(), ContiguousStorage.get() + Size, FinalData); From ccc2627989fb30d39cd90b5465a6b4abe8968150 Mon Sep 17 00:00:00 2001 From: mdimakov Date: Tue, 26 Jan 2021 17:56:11 +0300 Subject: [PATCH 06/14] [SYCL] Added lib Signed-off-by: mdimakov --- sycl/include/CL/sycl/detail/sycl_mem_obj_t.hpp | 1 + 1 file changed, 1 insertion(+) diff --git a/sycl/include/CL/sycl/detail/sycl_mem_obj_t.hpp b/sycl/include/CL/sycl/detail/sycl_mem_obj_t.hpp index 26a2e905d8c40..06425fa8547d0 100644 --- a/sycl/include/CL/sycl/detail/sycl_mem_obj_t.hpp +++ b/sycl/include/CL/sycl/detail/sycl_mem_obj_t.hpp @@ -20,6 +20,7 @@ #include #include +#include #include __SYCL_INLINE_NAMESPACE(cl) { From f2a2195e341ea5d934e107e965ffe42488088cbd Mon Sep 17 00:00:00 2001 From: mdimakov Date: Wed, 27 Jan 2021 11:28:24 +0300 Subject: [PATCH 07/14] [SYCL] Use unique_ptr constructor instead of make_unique Signed-off-by: mdimakov --- sycl/include/CL/sycl/detail/sycl_mem_obj_t.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sycl/include/CL/sycl/detail/sycl_mem_obj_t.hpp b/sycl/include/CL/sycl/detail/sycl_mem_obj_t.hpp index 06425fa8547d0..00d03efd1bf35 100644 --- a/sycl/include/CL/sycl/detail/sycl_mem_obj_t.hpp +++ b/sycl/include/CL/sycl/detail/sycl_mem_obj_t.hpp @@ -200,7 +200,7 @@ class __SYCL_EXPORT SYCLMemObjT : public SYCLMemObjI { // ContiguousStorage. updateHostMemory works only with pointer to // continuous data. const size_t Size = MSizeInBytes / sizeof(DestinationValueT); - auto ContiguousStorage = std::make_unique(Size); + std::unique_ptr ContiguousStorage(new bool[Size]); updateHostMemory(ContiguousStorage.get()); std::copy(ContiguousStorage.get(), ContiguousStorage.get() + Size, FinalData); From d841469610c19020285ed5e28901a719c545a76f Mon Sep 17 00:00:00 2001 From: mdimakov Date: Thu, 28 Jan 2021 19:07:05 +0300 Subject: [PATCH 08/14] [SYCL] Replace iterator_traits with iterators Signed-off-by: mdimakov --- sycl/include/CL/sycl/detail/sycl_mem_obj_t.hpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sycl/include/CL/sycl/detail/sycl_mem_obj_t.hpp b/sycl/include/CL/sycl/detail/sycl_mem_obj_t.hpp index 00d03efd1bf35..9fefa9392deaa 100644 --- a/sycl/include/CL/sycl/detail/sycl_mem_obj_t.hpp +++ b/sycl/include/CL/sycl/detail/sycl_mem_obj_t.hpp @@ -53,12 +53,12 @@ class __SYCL_EXPORT SYCLMemObjT : public SYCLMemObjI { template using EnableIfOutputIteratorT = enable_if_t< /*is_output_iterator::value &&*/ !std::is_pointer::value && - !std::is_same, bool>::value>; + !std::is_same::value>; template using EnableIfOutputIteratorBool = enable_if_t::value && - std::is_same, bool>::value>; + std::is_same::value>; template using EnableIfDefaultAllocator = From d19afcd10b3a76c5ca3cb03f674df4afa5da0548 Mon Sep 17 00:00:00 2001 From: mdimakov Date: Mon, 1 Feb 2021 17:05:40 +0300 Subject: [PATCH 09/14] [SYCL] Fix - added constructors with prop list for local/image accessors Signed-off-by: mdimakov --- sycl/include/CL/sycl/accessor.hpp | 55 +++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) diff --git a/sycl/include/CL/sycl/accessor.hpp b/sycl/include/CL/sycl/accessor.hpp index fe04af92ad7f2..df63757ef91de 100755 --- a/sycl/include/CL/sycl/accessor.hpp +++ b/sycl/include/CL/sycl/accessor.hpp @@ -1856,6 +1856,16 @@ class accessor> + accessor(handler &, const property_list &propList) +#ifdef __SYCL_DEVICE_ONLY__ + : impl(range{1}) { + } +#else + : LocalAccessorBaseHost(range<3>{1, 1, 1}, AdjustedDim, sizeof(DataT)) { + } +#endif + template 0)>> accessor(range AllocationSize, handler &) #ifdef __SYCL_DEVICE_ONLY__ @@ -1867,6 +1877,18 @@ class accessor 0)>> + accessor(range AllocationSize, handler &, + const property_list &propList) +#ifdef __SYCL_DEVICE_ONLY__ + : impl(AllocationSize) { + } +#else + : LocalAccessorBaseHost(detail::convertToArrayOfN<3, 1>(AllocationSize), + AdjustedDim, sizeof(DataT)) { + } +#endif + size_t get_size() const { return getSize().size() * sizeof(DataT); } size_t get_count() const { return getSize().size(); } @@ -1954,6 +1976,19 @@ class accessor + accessor(cl::sycl::image &Image, + handler &CommandGroupHandler, const property_list &propList) + : detail::image_accessor( + Image, CommandGroupHandler, + (detail::getSyclObjImpl(Image))->getElementSize()) { +#ifndef __SYCL_DEVICE_ONLY__ + detail::associateWithHandler(CommandGroupHandler, this, + access::target::image); #endif } #ifdef __SYCL_DEVICE_ONLY__ @@ -1994,6 +2029,13 @@ class accessor( Image, (detail::getSyclObjImpl(Image))->getElementSize()) {} + + template + accessor(cl::sycl::image &Image, + const property_list &propList) + : detail::image_accessor( + Image, (detail::getSyclObjImpl(Image))->getElementSize()) {} }; /// Image array accessor. @@ -2041,6 +2083,19 @@ class accessor + accessor(cl::sycl::image &Image, + handler &CommandGroupHandler, const property_list &propList) + : detail::image_accessor( + Image, CommandGroupHandler, + (detail::getSyclObjImpl(Image))->getElementSize()) { +#ifndef __SYCL_DEVICE_ONLY__ + detail::associateWithHandler(CommandGroupHandler, this, + access::target::image_array); +#endif + } + detail::__image_array_slice__ operator[](size_t Index) const { return detail::__image_array_slice__ Date: Mon, 1 Feb 2021 17:19:47 +0300 Subject: [PATCH 10/14] [SYCL] Clang-format fix Signed-off-by: mdimakov --- sycl/include/CL/sycl/accessor.hpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/sycl/include/CL/sycl/accessor.hpp b/sycl/include/CL/sycl/accessor.hpp index df63757ef91de..e1446c9d67d44 100755 --- a/sycl/include/CL/sycl/accessor.hpp +++ b/sycl/include/CL/sycl/accessor.hpp @@ -1879,7 +1879,7 @@ class accessor 0)>> accessor(range AllocationSize, handler &, - const property_list &propList) + const property_list &propList) #ifdef __SYCL_DEVICE_ONLY__ : impl(AllocationSize) { } @@ -2032,7 +2032,7 @@ class accessor accessor(cl::sycl::image &Image, - const property_list &propList) + const property_list &propList) : detail::image_accessor( Image, (detail::getSyclObjImpl(Image))->getElementSize()) {} @@ -2083,7 +2083,7 @@ class accessor + template accessor(cl::sycl::image &Image, handler &CommandGroupHandler, const property_list &propList) : detail::image_accessor Date: Mon, 1 Feb 2021 17:34:54 +0300 Subject: [PATCH 11/14] [SYCL] Clang-format fix Signed-off-by: mdimakov --- sycl/include/CL/sycl/accessor.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sycl/include/CL/sycl/accessor.hpp b/sycl/include/CL/sycl/accessor.hpp index e1446c9d67d44..aa3838abe561b 100755 --- a/sycl/include/CL/sycl/accessor.hpp +++ b/sycl/include/CL/sycl/accessor.hpp @@ -2031,7 +2031,7 @@ class accessorgetElementSize()) {} template - accessor(cl::sycl::image &Image, + accessor(cl::sycl::image &Image, const property_list &propList) : detail::image_accessor( From afa89eba18749518d851d9e0615de2dcaa7f1813 Mon Sep 17 00:00:00 2001 From: mdimakov Date: Tue, 2 Feb 2021 11:28:18 +0300 Subject: [PATCH 12/14] [SYCL] Clang-format fix Signed-off-by: mdimakov --- sycl/include/CL/sycl/accessor.hpp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/sycl/include/CL/sycl/accessor.hpp b/sycl/include/CL/sycl/accessor.hpp index aa3838abe561b..df099c42f6d70 100755 --- a/sycl/include/CL/sycl/accessor.hpp +++ b/sycl/include/CL/sycl/accessor.hpp @@ -1860,9 +1860,11 @@ class accessor{1}) { + void(propList); } #else : LocalAccessorBaseHost(range<3>{1, 1, 1}, AdjustedDim, sizeof(DataT)) { + void(propList); } #endif @@ -1882,10 +1884,12 @@ class accessor(AllocationSize), AdjustedDim, sizeof(DataT)) { + void(propList); } #endif @@ -1986,6 +1990,7 @@ class accessor( Image, CommandGroupHandler, (detail::getSyclObjImpl(Image))->getElementSize()) { + void(propList); #ifndef __SYCL_DEVICE_ONLY__ detail::associateWithHandler(CommandGroupHandler, this, access::target::image); @@ -2035,7 +2040,9 @@ class accessor( - Image, (detail::getSyclObjImpl(Image))->getElementSize()) {} + Image, (detail::getSyclObjImpl(Image))->getElementSize()) { + void(propList); + } }; /// Image array accessor. @@ -2090,6 +2097,7 @@ class accessor( Image, CommandGroupHandler, (detail::getSyclObjImpl(Image))->getElementSize()) { + void(propList); #ifndef __SYCL_DEVICE_ONLY__ detail::associateWithHandler(CommandGroupHandler, this, access::target::image_array); From 2451bc7fccdc99ee371275e4478282077169c006 Mon Sep 17 00:00:00 2001 From: mdimakov Date: Tue, 2 Feb 2021 11:36:04 +0300 Subject: [PATCH 13/14] [SYCL] Clang-format fix Signed-off-by: mdimakov --- sycl/include/CL/sycl/accessor.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sycl/include/CL/sycl/accessor.hpp b/sycl/include/CL/sycl/accessor.hpp index df099c42f6d70..98f6aa78ed4de 100755 --- a/sycl/include/CL/sycl/accessor.hpp +++ b/sycl/include/CL/sycl/accessor.hpp @@ -2042,7 +2042,7 @@ class accessor( Image, (detail::getSyclObjImpl(Image))->getElementSize()) { void(propList); - } + } }; /// Image array accessor. From 4f449ba0591b0bfb57a92422786af345a0f65ef1 Mon Sep 17 00:00:00 2001 From: mdimakov Date: Tue, 2 Feb 2021 12:29:15 +0300 Subject: [PATCH 14/14] [SYCL] Syntax error fix Signed-off-by: mdimakov --- sycl/include/CL/sycl/accessor.hpp | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/sycl/include/CL/sycl/accessor.hpp b/sycl/include/CL/sycl/accessor.hpp index 98f6aa78ed4de..1f1adf77ec7da 100755 --- a/sycl/include/CL/sycl/accessor.hpp +++ b/sycl/include/CL/sycl/accessor.hpp @@ -1860,11 +1860,11 @@ class accessor{1}) { - void(propList); + (void)propList; } #else : LocalAccessorBaseHost(range<3>{1, 1, 1}, AdjustedDim, sizeof(DataT)) { - void(propList); + (void)propList; } #endif @@ -1884,12 +1884,12 @@ class accessor(AllocationSize), AdjustedDim, sizeof(DataT)) { - void(propList); + (void)propList; } #endif @@ -1990,7 +1990,7 @@ class accessor( Image, CommandGroupHandler, (detail::getSyclObjImpl(Image))->getElementSize()) { - void(propList); + (void)propList; #ifndef __SYCL_DEVICE_ONLY__ detail::associateWithHandler(CommandGroupHandler, this, access::target::image); @@ -2041,7 +2041,7 @@ class accessor( Image, (detail::getSyclObjImpl(Image))->getElementSize()) { - void(propList); + (void)propList; } }; @@ -2097,7 +2097,7 @@ class accessor( Image, CommandGroupHandler, (detail::getSyclObjImpl(Image))->getElementSize()) { - void(propList); + (void)propList; #ifndef __SYCL_DEVICE_ONLY__ detail::associateWithHandler(CommandGroupHandler, this, access::target::image_array);