Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 16 additions & 11 deletions sycl/test-e2e/Graph/Inputs/buffer_copy_2d.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,18 @@

#include "../graph_common.hpp"

#include <cmath>

int main() {
queue Queue{};

using T = int;

const T ModValue = 7;
std::vector<T> DataA(Size * Size), DataB(Size * Size), DataC(Size * Size);

const size_t SizeX = std::sqrt(Size);
const size_t SizeY = SizeX;
std::vector<T> DataA(Size), DataB(Size), DataC(Size);

std::iota(DataA.begin(), DataA.end(), 1);
std::iota(DataB.begin(), DataB.end(), 10);
Expand All @@ -18,7 +23,7 @@ int main() {
// Create reference data for output
std::vector<T> 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];
Expand All @@ -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{
Expand All @@ -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);
Expand All @@ -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);
Expand All @@ -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);
Expand All @@ -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"));
Expand Down
16 changes: 10 additions & 6 deletions sycl/test-e2e/Graph/Inputs/buffer_copy_host2target_2d.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3,22 +3,26 @@

#include "../graph_common.hpp"

#include <cmath>

int main() {
queue Queue{};

using T = int;

std::vector<T> DataA(Size * Size), DataB(Size * Size);
const size_t SizeX = std::sqrt(Size);
const size_t SizeY = SizeX;
std::vector<T> DataA(Size), DataB(Size);
std::iota(DataA.begin(), DataA.end(), 1);
std::iota(DataB.begin(), DataB.end(), 1000);

std::vector<T> 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);

{
Expand All @@ -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"));
}
}
Expand Down
12 changes: 8 additions & 4 deletions sycl/test-e2e/Graph/Inputs/buffer_copy_target2host_2d.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3,23 +3,27 @@

#include "../graph_common.hpp"

#include <cmath>

int main() {
queue Queue{};

using T = int;

std::vector<T> DataA(Size * Size), DataB(Size * Size);
const size_t SizeX = std::sqrt(Size);
const size_t SizeY = SizeX;
std::vector<T> DataA(Size), DataB(Size);
std::iota(DataA.begin(), DataA.end(), 1);
std::iota(DataB.begin(), DataB.end(), 1000);

std::vector<T> 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);

{
Expand All @@ -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"));
}
Expand Down
5 changes: 3 additions & 2 deletions sycl/test-e2e/Graph/Threading/submit.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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<unsigned>(4));
const unsigned SubmitsPerThread = 8;
std::vector<T> DataA(Size), DataB(Size), DataC(Size);

std::iota(DataA.begin(), DataA.end(), 1);
Expand Down
Loading