From 1c56b1c4ec29c0fb6c81d1f15ede4272233e3514 Mon Sep 17 00:00:00 2001 From: mdimakov Date: Tue, 26 Jan 2021 14:30:56 +0300 Subject: [PATCH 01/10] [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/10] [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/10] [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/10] [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/10] [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/10] [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/10] [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/10] [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 7a45855f43fade67fbf32b50a2a2400e2b47e843 Mon Sep 17 00:00:00 2001 From: mdimakov Date: Tue, 2 Feb 2021 10:08:33 +0300 Subject: [PATCH 09/10] [SYCL] Merge two set_final_data methods into one Signed-off-by: mdimakov --- .../include/CL/sycl/detail/sycl_mem_obj_t.hpp | 26 ++----------------- 1 file changed, 2 insertions(+), 24 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 9fefa9392deaa..67eeee27d086e 100644 --- a/sycl/include/CL/sycl/detail/sycl_mem_obj_t.hpp +++ b/sycl/include/CL/sycl/detail/sycl_mem_obj_t.hpp @@ -52,13 +52,7 @@ class __SYCL_EXPORT SYCLMemObjT : public SYCLMemObjI { template using EnableIfOutputIteratorT = enable_if_t< - /*is_output_iterator::value &&*/ !std::is_pointer::value && - !std::is_same::value>; - - template - using EnableIfOutputIteratorBool = - enable_if_t::value && - std::is_same::value>; + /*is_output_iterator::value &&*/ !std::is_pointer::value>; template using EnableIfDefaultAllocator = @@ -184,23 +178,7 @@ class __SYCL_EXPORT SYCLMemObjT : public SYCLMemObjI { // ContiguousStorage. updateHostMemory works only with pointer to // continuous data. const size_t Size = MSizeInBytes / sizeof(DestinationValueT); - vector_class ContiguousStorage(Size); - updateHostMemory(ContiguousStorage.data()); - std::copy(ContiguousStorage.cbegin(), ContiguousStorage.cend(), - FinalData); - }; - } - - 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); - std::unique_ptr ContiguousStorage(new bool[Size]); + std::unique_ptr ContiguousStorage(new DestinationValueT[Size]); updateHostMemory(ContiguousStorage.get()); std::copy(ContiguousStorage.get(), ContiguousStorage.get() + Size, FinalData); From baf0466017f24f6db300e3cfc2463932384e25fa Mon Sep 17 00:00:00 2001 From: mdimakov Date: Tue, 2 Feb 2021 11:32:48 +0300 Subject: [PATCH 10/10] [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 67eeee27d086e..f7c00622e70c8 100644 --- a/sycl/include/CL/sycl/detail/sycl_mem_obj_t.hpp +++ b/sycl/include/CL/sycl/detail/sycl_mem_obj_t.hpp @@ -178,7 +178,8 @@ 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 DestinationValueT[Size]); + std::unique_ptr ContiguousStorage( + new DestinationValueT[Size]); updateHostMemory(ContiguousStorage.get()); std::copy(ContiguousStorage.get(), ContiguousStorage.get() + Size, FinalData);