From 05fc803858ccb92cc57180805591afd3a49bfb80 Mon Sep 17 00:00:00 2001 From: Vanya Yaneva Date: Tue, 25 Jul 2017 13:49:08 +0100 Subject: [PATCH 1/5] Updated SYCL makefile and kernel build --- SYCL.make | 6 +++--- SYCLStream.cpp | 31 +++++++++++++++++++++++-------- 2 files changed, 26 insertions(+), 11 deletions(-) diff --git a/SYCL.make b/SYCL.make index 1e1c480..9320216 100644 --- a/SYCL.make +++ b/SYCL.make @@ -1,11 +1,11 @@ -COMPUTECPP_FLAGS = $(shell computecpp_info --dump-device-compiler-flags) +COMPUTECPP_FLAGS = $(shell $(COMPUTECPP_PREFIX)/bin/computecpp_info --dump-device-compiler-flags) sycl-stream: main.cpp SYCLStream.cpp SYCLStream.sycl - $(CXX) -O3 -std=c++11 -DSYCL main.cpp SYCLStream.cpp -include SYCLStream.sycl $(EXTRA_FLAGS) -lComputeCpp -lOpenCL -o $@ + $(CXX) -O3 -std=c++11 -DSYCL main.cpp SYCLStream.cpp -I$(COMPUTECPP_PREFIX)/include -include SYCLStream.sycl $(EXTRA_FLAGS) -L$(COMPUTECPP_PREFIX)/lib -lComputeCpp -lOpenCL -Wl,--rpath=$(COMPUTECPP_PREFIX)/lib/ -o $@ SYCLStream.sycl: SYCLStream.cpp - compute++ SYCLStream.cpp $(COMPUTECPP_FLAGS) -c + $(COMPUTECPP_PREFIX)/bin/compute++ SYCLStream.cpp $(COMPUTECPP_FLAGS) -c -I$(COMPUTECPP_PREFIX)/include -o $@ .PHONY: clean clean: diff --git a/SYCLStream.cpp b/SYCLStream.cpp index abe048c..9e228b9 100644 --- a/SYCLStream.cpp +++ b/SYCLStream.cpp @@ -47,16 +47,31 @@ SYCLStream::SYCLStream(const unsigned int ARRAY_SIZE, const int device_index) std::cout << "Driver: " << getDeviceDriver(device_index) << std::endl; std::cout << "Reduction kernel config: " << dot_num_groups << " groups of size " << dot_wgsize << std::endl; - queue = new cl::sycl::queue(dev); + queue = new cl::sycl::queue(dev, [&](cl::sycl::exception_list l) { + try { + for(auto e: l) { + std::rethrow_exception(e); + } + } catch (cl::sycl::exception e) { + std::cout << e.what(); + } + }); /* Pre-build the kernels */ - p = new program(queue->get_context()); - p->build_from_kernel_name(); - p->build_from_kernel_name(); - p->build_from_kernel_name(); - p->build_from_kernel_name(); - p->build_from_kernel_name(); - p->build_from_kernel_name(); + cl::sycl::vector_class v; + v.push_back(cl::sycl::program{queue->get_context()}); + v.back().compile_from_kernel_name(); + v.push_back(cl::sycl::program{queue->get_context()}); + v.back().compile_from_kernel_name(); + v.push_back(cl::sycl::program{queue->get_context()}); + v.back().compile_from_kernel_name(); + v.push_back(cl::sycl::program{queue->get_context()}); + v.back().compile_from_kernel_name(); + v.push_back(cl::sycl::program{queue->get_context()}); + v.back().compile_from_kernel_name(); + v.push_back(cl::sycl::program{queue->get_context()}); + v.back().compile_from_kernel_name(); + p = new program(v); // Create buffers d_a = new buffer(array_size); From 8c4af581d1167efc5a834898fc7020894b526b61 Mon Sep 17 00:00:00 2001 From: Vanya Yaneva Date: Thu, 27 Jul 2017 17:36:12 +0100 Subject: [PATCH 2/5] Reverted changes in kernel build --- SYCLStream.cpp | 21 +++++++-------------- 1 file changed, 7 insertions(+), 14 deletions(-) diff --git a/SYCLStream.cpp b/SYCLStream.cpp index 9e228b9..4b1aa44 100644 --- a/SYCLStream.cpp +++ b/SYCLStream.cpp @@ -58,20 +58,13 @@ SYCLStream::SYCLStream(const unsigned int ARRAY_SIZE, const int device_index) }); /* Pre-build the kernels */ - cl::sycl::vector_class v; - v.push_back(cl::sycl::program{queue->get_context()}); - v.back().compile_from_kernel_name(); - v.push_back(cl::sycl::program{queue->get_context()}); - v.back().compile_from_kernel_name(); - v.push_back(cl::sycl::program{queue->get_context()}); - v.back().compile_from_kernel_name(); - v.push_back(cl::sycl::program{queue->get_context()}); - v.back().compile_from_kernel_name(); - v.push_back(cl::sycl::program{queue->get_context()}); - v.back().compile_from_kernel_name(); - v.push_back(cl::sycl::program{queue->get_context()}); - v.back().compile_from_kernel_name(); - p = new program(v); + p = new program(queue->get_context()); + p->build_from_kernel_name(); + p->build_from_kernel_name(); + p->build_from_kernel_name(); + p->build_from_kernel_name(); + p->build_from_kernel_name(); + p->build_from_kernel_name(); // Create buffers d_a = new buffer(array_size); From 9916a81bc525684bb382e579ef5f1789d22f1698 Mon Sep 17 00:00:00 2001 From: Vanya Yaneva Date: Thu, 27 Jul 2017 17:39:13 +0100 Subject: [PATCH 3/5] Small formatting change --- SYCLStream.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/SYCLStream.cpp b/SYCLStream.cpp index 4b1aa44..d334dd1 100644 --- a/SYCLStream.cpp +++ b/SYCLStream.cpp @@ -49,9 +49,9 @@ SYCLStream::SYCLStream(const unsigned int ARRAY_SIZE, const int device_index) queue = new cl::sycl::queue(dev, [&](cl::sycl::exception_list l) { try { - for(auto e: l) { - std::rethrow_exception(e); - } + for(auto e: l) { + std::rethrow_exception(e); + } } catch (cl::sycl::exception e) { std::cout << e.what(); } From 6d7e4b5f3f5cd4e0c4e8cb6e8f99953ed682c650 Mon Sep 17 00:00:00 2001 From: Vanya Yaneva Date: Thu, 27 Jul 2017 17:55:56 +0100 Subject: [PATCH 4/5] Changed name of sycl make var to match the sdk --- SYCL.make | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/SYCL.make b/SYCL.make index 9320216..f3c5c80 100644 --- a/SYCL.make +++ b/SYCL.make @@ -1,11 +1,11 @@ -COMPUTECPP_FLAGS = $(shell $(COMPUTECPP_PREFIX)/bin/computecpp_info --dump-device-compiler-flags) +COMPUTECPP_FLAGS = $(shell $(COMPUTECPP_PACKAGE_ROOT_DIR)/bin/computecpp_info --dump-device-compiler-flags) sycl-stream: main.cpp SYCLStream.cpp SYCLStream.sycl - $(CXX) -O3 -std=c++11 -DSYCL main.cpp SYCLStream.cpp -I$(COMPUTECPP_PREFIX)/include -include SYCLStream.sycl $(EXTRA_FLAGS) -L$(COMPUTECPP_PREFIX)/lib -lComputeCpp -lOpenCL -Wl,--rpath=$(COMPUTECPP_PREFIX)/lib/ -o $@ + $(CXX) -O3 -std=c++11 -DSYCL main.cpp SYCLStream.cpp -I$(COMPUTECPP_PACKAGE_ROOT_DIR)/include -include SYCLStream.sycl $(EXTRA_FLAGS) -L$(COMPUTECPP_PACKAGE_ROOT_DIR)/lib -lComputeCpp -lOpenCL -Wl,--rpath=$(COMPUTECPP_PACKAGE_ROOT_DIR)/lib/ -o $@ SYCLStream.sycl: SYCLStream.cpp - $(COMPUTECPP_PREFIX)/bin/compute++ SYCLStream.cpp $(COMPUTECPP_FLAGS) -c -I$(COMPUTECPP_PREFIX)/include -o $@ + $(COMPUTECPP_PACKAGE_ROOT_DIR)/bin/compute++ SYCLStream.cpp $(COMPUTECPP_FLAGS) -c -I$(COMPUTECPP_PACKAGE_ROOT_DIR)/include -o $@ .PHONY: clean clean: From b8f7a5427e82068f61b43373a8c59c6111858b35 Mon Sep 17 00:00:00 2001 From: Vanya Yaneva Date: Mon, 31 Jul 2017 17:38:59 +0100 Subject: [PATCH 5/5] Added exception after printing the SYCL exceptions --- SYCLStream.cpp | 25 ++++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/SYCLStream.cpp b/SYCLStream.cpp index d334dd1..68b4840 100644 --- a/SYCLStream.cpp +++ b/SYCLStream.cpp @@ -47,14 +47,25 @@ SYCLStream::SYCLStream(const unsigned int ARRAY_SIZE, const int device_index) std::cout << "Driver: " << getDeviceDriver(device_index) << std::endl; std::cout << "Reduction kernel config: " << dot_num_groups << " groups of size " << dot_wgsize << std::endl; - queue = new cl::sycl::queue(dev, [&](cl::sycl::exception_list l) { - try { - for(auto e: l) { - std::rethrow_exception(e); - } - } catch (cl::sycl::exception e) { - std::cout << e.what(); + queue = new cl::sycl::queue(dev, [&](cl::sycl::exception_list l) + { + bool error = false; + for(auto e: l) + { + try + { + std::rethrow_exception(e); } + catch (cl::sycl::exception e) + { + std::cout << e.what(); + error = true; + } + } + if(error) + { + throw std::runtime_error("SYCL errors detected"); + } }); /* Pre-build the kernels */