diff --git a/sycl/test-e2e/Graph/Inputs/buffer_copy_2d.cpp b/sycl/test-e2e/Graph/Inputs/buffer_copy_2d.cpp index 99f7b2ec1199c..1b38242ac61a7 100644 --- a/sycl/test-e2e/Graph/Inputs/buffer_copy_2d.cpp +++ b/sycl/test-e2e/Graph/Inputs/buffer_copy_2d.cpp @@ -3,13 +3,18 @@ #include "../graph_common.hpp" +#include + int main() { queue Queue{}; using T = int; const T ModValue = 7; - std::vector DataA(Size * Size), DataB(Size * Size), DataC(Size * Size); + + const size_t SizeX = std::sqrt(Size); + const size_t SizeY = SizeX; + std::vector DataA(Size), DataB(Size), DataC(Size); std::iota(DataA.begin(), DataA.end(), 1); std::iota(DataB.begin(), DataB.end(), 10); @@ -18,7 +23,7 @@ int main() { // Create reference data for output std::vector ReferenceA(DataA), ReferenceB(DataB), ReferenceC(DataC); for (size_t i = 0; i < Iterations; i++) { - for (size_t j = 0; j < Size * Size; j++) { + for (size_t j = 0; j < Size; j++) { ReferenceA[j] = ReferenceB[j]; ReferenceA[j] += ModValue; ReferenceB[j] = ReferenceA[j]; @@ -28,11 +33,11 @@ int main() { } // Make the buffers 2D so we can test the rect copy path - buffer BufferA{DataA.data(), range<2>(Size, Size)}; + buffer BufferA{DataA.data(), range<2>(SizeX, SizeY)}; BufferA.set_write_back(false); - buffer BufferB{DataB.data(), range<2>(Size, Size)}; + buffer BufferB{DataB.data(), range<2>(SizeX, SizeY)}; BufferB.set_write_back(false); - buffer BufferC{DataC.data(), range<2>(Size, Size)}; + buffer BufferC{DataC.data(), range<2>(SizeX, SizeY)}; BufferC.set_write_back(false); { exp_ext::command_graph Graph{ @@ -52,7 +57,7 @@ int main() { Graph, Queue, [&](handler &CGH) { auto AccA = BufferA.get_access(CGH); - CGH.parallel_for(range<2>(Size, Size), + CGH.parallel_for(range<2>(SizeX, SizeY), [=](item<2> id) { AccA[id] += ModValue; }); }, NodeA); @@ -62,7 +67,7 @@ int main() { Graph, Queue, [&](handler &CGH) { auto AccB = BufferB.get_access(CGH); - CGH.parallel_for(range<2>(Size, Size), + CGH.parallel_for(range<2>(SizeX, SizeY), [=](item<2> id) { AccB[id] += ModValue; }); }, NodeA); @@ -82,7 +87,7 @@ int main() { Graph, Queue, [&](handler &CGH) { auto AccB = BufferB.get_access(CGH); - CGH.parallel_for(range<2>(Size, Size), + CGH.parallel_for(range<2>(SizeX, SizeY), [=](item<2> id) { AccB[id] += (ModValue + 1); }); }, NodeC); @@ -109,9 +114,9 @@ int main() { host_accessor HostAccB(BufferB); host_accessor HostAccC(BufferC); - for (size_t i = 0; i < Size; i++) { - for (size_t j = 0; j < Size; j++) { - const size_t index = i * Size + j; + for (size_t i = 0; i < SizeX; i++) { + for (size_t j = 0; j < SizeY; j++) { + const size_t index = i * SizeY + j; assert(check_value(index, ReferenceA[index], HostAccA[i][j], "HostAccA")); assert(check_value(index, ReferenceB[index], HostAccB[i][j], "HostAccB")); assert(check_value(index, ReferenceC[index], HostAccC[i][j], "HostAccC")); diff --git a/sycl/test-e2e/Graph/Inputs/buffer_copy_host2target_2d.cpp b/sycl/test-e2e/Graph/Inputs/buffer_copy_host2target_2d.cpp index ce91e7fb0eaef..9b865a89618c4 100644 --- a/sycl/test-e2e/Graph/Inputs/buffer_copy_host2target_2d.cpp +++ b/sycl/test-e2e/Graph/Inputs/buffer_copy_host2target_2d.cpp @@ -3,22 +3,26 @@ #include "../graph_common.hpp" +#include + int main() { queue Queue{}; using T = int; - std::vector DataA(Size * Size), DataB(Size * Size); + const size_t SizeX = std::sqrt(Size); + const size_t SizeY = SizeX; + std::vector DataA(Size), DataB(Size); std::iota(DataA.begin(), DataA.end(), 1); std::iota(DataB.begin(), DataB.end(), 1000); std::vector ReferenceA(DataA); - for (size_t i = 0; i < Size * Size; i++) { + for (size_t i = 0; i < Size; i++) { ReferenceA[i] = DataB[i]; } // Make the buffers 2D so we can test the rect write path - buffer BufferA{DataA.data(), range<2>(Size, Size)}; + buffer BufferA{DataA.data(), range<2>(SizeX, SizeY)}; BufferA.set_write_back(false); { @@ -37,9 +41,9 @@ int main() { } host_accessor HostAccA(BufferA); - for (size_t i = 0; i < Size; i++) { - for (size_t j = 0; j < Size; j++) { - const size_t index = i * Size + j; + for (size_t i = 0; i < SizeX; i++) { + for (size_t j = 0; j < SizeY; j++) { + const size_t index = i * SizeY + j; assert(check_value(index, ReferenceA[index], HostAccA[i][j], "HostAccA")); } } diff --git a/sycl/test-e2e/Graph/Inputs/buffer_copy_target2host_2d.cpp b/sycl/test-e2e/Graph/Inputs/buffer_copy_target2host_2d.cpp index b034f33afb62d..1a5ea34c5b0e2 100644 --- a/sycl/test-e2e/Graph/Inputs/buffer_copy_target2host_2d.cpp +++ b/sycl/test-e2e/Graph/Inputs/buffer_copy_target2host_2d.cpp @@ -3,23 +3,27 @@ #include "../graph_common.hpp" +#include + int main() { queue Queue{}; using T = int; - std::vector DataA(Size * Size), DataB(Size * Size); + const size_t SizeX = std::sqrt(Size); + const size_t SizeY = SizeX; + std::vector DataA(Size), DataB(Size); std::iota(DataA.begin(), DataA.end(), 1); std::iota(DataB.begin(), DataB.end(), 1000); std::vector ReferenceA(DataA), ReferenceB(DataB); - for (size_t i = 0; i < Size * Size; i++) { + for (size_t i = 0; i < Size; i++) { ReferenceA[i] = DataA[i]; ReferenceB[i] = DataA[i]; } // Make the buffers 2D so we can test the rect read path - buffer BufferA{DataA.data(), range<2>(Size, Size)}; + buffer BufferA{DataA.data(), range<2>(SizeX, SizeY)}; BufferA.set_write_back(false); { @@ -39,7 +43,7 @@ int main() { host_accessor HostAccA(BufferA); - for (size_t i = 0; i < Size * Size; i++) { + for (size_t i = 0; i < Size; i++) { assert(check_value(i, ReferenceA[i], DataA[i], "DataA")); assert(check_value(i, ReferenceB[i], DataB[i], "DataB")); } diff --git a/sycl/test-e2e/Graph/Threading/submit.cpp b/sycl/test-e2e/Graph/Threading/submit.cpp index f71c816e54808..455664ad94247 100644 --- a/sycl/test-e2e/Graph/Threading/submit.cpp +++ b/sycl/test-e2e/Graph/Threading/submit.cpp @@ -19,8 +19,9 @@ int main() { using T = int; - const unsigned NumThreads = std::thread::hardware_concurrency(); - const unsigned SubmitsPerThread = 128; + const unsigned HwThreads = std::thread::hardware_concurrency(); + const unsigned NumThreads = std::min(HwThreads, static_cast(4)); + const unsigned SubmitsPerThread = 8; std::vector DataA(Size), DataB(Size), DataC(Size); std::iota(DataA.begin(), DataA.end(), 1);