Updated SYCL makefile and kernel build

This commit is contained in:
Vanya Yaneva 2017-07-25 13:49:08 +01:00
parent dafc63030f
commit 05fc803858
2 changed files with 26 additions and 11 deletions

View File

@ -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 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 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 .PHONY: clean
clean: clean:

View File

@ -47,16 +47,31 @@ SYCLStream<T>::SYCLStream(const unsigned int ARRAY_SIZE, const int device_index)
std::cout << "Driver: " << getDeviceDriver(device_index) << std::endl; std::cout << "Driver: " << getDeviceDriver(device_index) << std::endl;
std::cout << "Reduction kernel config: " << dot_num_groups << " groups of size " << dot_wgsize << 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 */ /* Pre-build the kernels */
p = new program(queue->get_context()); cl::sycl::vector_class<cl::sycl::program> v;
p->build_from_kernel_name<init_kernel>(); v.push_back(cl::sycl::program{queue->get_context()});
p->build_from_kernel_name<copy_kernel>(); v.back().compile_from_kernel_name<init_kernel>();
p->build_from_kernel_name<mul_kernel>(); v.push_back(cl::sycl::program{queue->get_context()});
p->build_from_kernel_name<add_kernel>(); v.back().compile_from_kernel_name<copy_kernel>();
p->build_from_kernel_name<triad_kernel>(); v.push_back(cl::sycl::program{queue->get_context()});
p->build_from_kernel_name<dot_kernel>(); v.back().compile_from_kernel_name<mul_kernel>();
v.push_back(cl::sycl::program{queue->get_context()});
v.back().compile_from_kernel_name<add_kernel>();
v.push_back(cl::sycl::program{queue->get_context()});
v.back().compile_from_kernel_name<triad_kernel>();
v.push_back(cl::sycl::program{queue->get_context()});
v.back().compile_from_kernel_name<dot_kernel>();
p = new program(v);
// Create buffers // Create buffers
d_a = new buffer<T>(array_size); d_a = new buffer<T>(array_size);