Skip to content

Commit a5a88b7

Browse files
KanclerzPiotrKanclerz
and
Kanclerz
authored
Change compiler from dpcpp to icpx -fsycl Part 1 (#1180)
* CombinationalLogic/mandelbrot * CombinationalLogic/sepia-filter * DenseLinearAlgebra/complex_mult * DenseLinearAlgebra/guided_jacobi * DenseLinearAlgebra/matrix_mul * DenseLinearAlgebra/Jacobi_Iterative * DenseLinearAlgebra/simple-add * GraphAlgorithms/all-pairs * GraphTraversal/bitonic-sort * GraphTraversal/hidden-markov-models * GraphTraversal/odd-even-merge-sort * MapReduce/MonteCarloPi * OpenCLInterop * ParallelPaterns/loop-unroll * ParallelPatterns/PrefixSum * SparseLinearAlgebra/merge-spmv * SpectralMethods/DiscreteCosineTransform * StructuredGrids/1d_HeatTransfer * StructuredGrids/guided_HSOpticalFlow * StructuredGrids/guided_iso3dfd * StructuredGrids/iso2dfd * StructuredGrids/iso3dfd * StructuredGrids/particle-diffusion * ParallelPatterns/dpc_reduce * ParallelPatterns/histogram * Remove exception Handlers and rename DPC++ extension to Intel Co-authored-by: Kanclerz <[email protected]>
1 parent 9d21dc7 commit a5a88b7

File tree

103 files changed

+271
-284
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

103 files changed

+271
-284
lines changed

DirectProgramming/DPC++/CombinationalLogic/mandelbrot/CMakeLists.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
cmake_minimum_required (VERSION 3.4)
22

3-
set(CMAKE_CXX_COMPILER dpcpp)
3+
set(CMAKE_CXX_COMPILER icpx)
44

55
# Set default build type to RelWithDebInfo if not specified
66
if (NOT CMAKE_BUILD_TYPE)

DirectProgramming/DPC++/CombinationalLogic/mandelbrot/src/CMakeLists.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -std=c++17")
1+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -std=c++17 -fsycl")
22
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS}")
33

44
add_executable(mandelbrot main.cpp)

DirectProgramming/DPC++/CombinationalLogic/mandelbrot/src/main.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ int main(int argc, char *argv[]) {
7373
try {
7474
// Create a queue on the default device. Set SYCL_DEVICE_TYPE environment
7575
// variable to (CPU|GPU|FPGA|HOST) to change the device.
76-
queue q(default_selector{}, dpc_common::exception_handler);
76+
queue q(default_selector_v);
7777

7878
// Display the device info.
7979
ShowDevice(q);

DirectProgramming/DPC++/CombinationalLogic/sepia-filter/CMakeLists.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
set(CMAKE_CXX_COMPILER "dpcpp")
1+
set(CMAKE_CXX_COMPILER "icpx")
22
# Set default build type to RelWithDebInfo if not specified
33
if (NOT CMAKE_BUILD_TYPE)
44
message (STATUS "Default CMAKE_BUILD_TYPE not set using Release with Debug Info")

DirectProgramming/DPC++/CombinationalLogic/sepia-filter/src/CMakeLists.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++17")
1+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++17 -fsycl")
22
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS}")
33
add_executable (sepia sepia_dpcpp.cpp)
44
target_link_libraries(sepia OpenCL sycl)

DirectProgramming/DPC++/CombinationalLogic/sepia-filter/src/device_selector.hpp

+2-3
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,12 @@
1818
// which '()' returned the highest number, is selected. If a negative number
1919
// was returned for all devices, then the selection process will cause an
2020
// exception.
21-
class MyDeviceSelector : public cl::sycl::device_selector {
21+
class MyDeviceSelector {
2222
public:
2323
MyDeviceSelector() {}
2424

2525
// This is the function which gives a "rating" to devices.
26-
virtual int operator()(const cl::sycl::device &device) const override {
26+
virtual int operator()(const cl::sycl::device &device) const {
2727
// The template parameter to device.get_info can be a variety of properties
2828
// defined by the SYCL spec's cl::sycl::info:: enum. Properties may have
2929
// different types. Here we query name which is a string.
@@ -37,7 +37,6 @@ class MyDeviceSelector : public cl::sycl::device_selector {
3737
if (device.is_gpu()) return 500;
3838
if (device.is_accelerator()) return 400;
3939
if (device.is_cpu()) return 300;
40-
if (device.is_host()) return 100;
4140
return -1;
4241
}
4342
};

DirectProgramming/DPC++/CombinationalLogic/sepia-filter/src/sepia_dpcpp.cpp

+6-6
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
#include <chrono>
77
#include <cmath>
88
#include <iostream>
9-
#include "CL/sycl.hpp"
9+
#include <sycl/sycl.hpp>
1010
#include "device_selector.hpp"
1111

1212
// dpc_common.hpp can be found in the dev-utilities include folder.
@@ -26,7 +26,7 @@ using namespace sycl;
2626
// Few useful acronyms.
2727
constexpr auto sycl_read = access::mode::read;
2828
constexpr auto sycl_write = access::mode::write;
29-
constexpr auto sycl_global_buffer = access::target::global_buffer;
29+
constexpr auto sycl_device = access::target::device;
3030

3131
static void ReportTime(const string &msg, event e) {
3232
cl_ulong time_start =
@@ -72,8 +72,8 @@ class SepiaFunctor {
7272
public:
7373
// Constructor captures needed data into fields
7474
SepiaFunctor(
75-
accessor<uint8_t, 1, sycl_read, sycl_global_buffer> &image_acc_,
76-
accessor<uint8_t, 1, sycl_write, sycl_global_buffer> &image_exp_acc_)
75+
accessor<uint8_t, 1, sycl_read, sycl_device> &image_acc_,
76+
accessor<uint8_t, 1, sycl_write, sycl_device> &image_exp_acc_)
7777
: image_acc(image_acc_), image_exp_acc(image_exp_acc_) {}
7878

7979
// The '()' operator is the actual kernel
@@ -83,8 +83,8 @@ class SepiaFunctor {
8383

8484
private:
8585
// Captured values:
86-
accessor<uint8_t, 1, sycl_read, sycl_global_buffer> image_acc;
87-
accessor<uint8_t, 1, sycl_write, sycl_global_buffer> image_exp_acc;
86+
accessor<uint8_t, 1, sycl_read, sycl_device> image_acc;
87+
accessor<uint8_t, 1, sycl_write, sycl_device> image_exp_acc;
8888
};
8989

9090
int main(int argc, char **argv) {

DirectProgramming/DPC++/DenseLinearAlgebra/complex_mult/Makefile

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
CXX = dpcpp
2-
CXXFLAGS = -std=c++17 -g -o
1+
CXX = icpx
2+
CXXFLAGS = -std=c++17 -g -fsycl -o
33
LDFLAGS =
44
EXE_NAME = complex_mult.exe
55
SOURCES = src/complex_mult.cpp

DirectProgramming/DPC++/DenseLinearAlgebra/complex_mult/src/complex_mult.cpp

+4-4
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
//
55
// SPDX-License-Identifier: MIT
66
// =============================================================
7-
#include <CL/sycl.hpp>
7+
#include <sycl/sycl.hpp>
88
#include <iomanip>
99
#include <vector>
1010
// dpc_common.hpp can be found in the dev-utilities include folder.
@@ -18,10 +18,10 @@ using namespace std;
1818
// Number of complex numbers passing to the SYCL code
1919
static const int num_elements = 10000;
2020

21-
class CustomDeviceSelector : public device_selector {
21+
class CustomDeviceSelector {
2222
public:
2323
CustomDeviceSelector(std::string vendorName) : vendorName_(vendorName){};
24-
int operator()(const device &dev) const override {
24+
int operator()(const device &dev) const {
2525
int device_rating = 0;
2626
// In the below code we are querying for the custom device specific to a
2727
// Vendor and if it is a GPU device we are giving the highest rating. The
@@ -124,7 +124,7 @@ int main() {
124124
// std::string vendor_name = "Nvidia";
125125
// queue constructor passed exception handler
126126
CustomDeviceSelector selector(vendor_name);
127-
queue q(selector, dpc_common::exception_handler);
127+
queue q(selector);
128128
// Call the DpcppParallel with the required inputs and outputs
129129
DpcppParallel(q, input_vect1, input_vect2, out_vect_parallel);
130130
} catch (...) {

DirectProgramming/DPC++/DenseLinearAlgebra/guided_jacobi_iterative_gpu_optimization/CMakeLists.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
cmake_minimum_required (VERSION 3.5)
22

3-
set(CMAKE_CXX_COMPILER dpcpp)
3+
set(CMAKE_CXX_COMPILER icpx)
44

55
# Set default build type to RelWithDebInfo if not specified
66
if (NOT CMAKE_BUILD_TYPE)

DirectProgramming/DPC++/DenseLinearAlgebra/guided_jacobi_iterative_gpu_optimization/src/1_guided_jacobi_iterative_solver_cpu.cpp

+1-2
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
// =============================================================
77
#include <bits/stdc++.h>
88

9-
#include <CL/sycl.hpp>
9+
#include <sycl/sycl.hpp>
1010
#include <algorithm>
1111
#include <chrono>
1212
#include <cstdlib>
@@ -26,7 +26,6 @@ static const int kMinRand = -1000;
2626
static const int kMaxRaand = 1000;
2727
static const int kMaxSweepps = 100;
2828
static const std::uint32_t kSeed = 666;
29-
cpu_selector selector;
3029
std::ofstream outfile;
3130

3231
// Function responsible for generating a float type

DirectProgramming/DPC++/DenseLinearAlgebra/guided_jacobi_iterative_gpu_optimization/src/2_guided_jacobi_iterative_solver_gpu.cpp

+3-4
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
// =============================================================
77
#include <bits/stdc++.h>
88

9-
#include <CL/sycl.hpp>
9+
#include <sycl/sycl.hpp>
1010
#include <algorithm>
1111
#include <chrono>
1212
#include <cstdlib>
@@ -26,7 +26,6 @@ static const int kMinRand = -1000;
2626
static const int kMaxRand = 1000;
2727
static const int kMaxSweeps = 100;
2828
static const std::uint32_t kSeed = 666;
29-
gpu_selector selector;
3029
std::ofstream outfile;
3130

3231
// Function responsible for generating a float type
@@ -38,7 +37,7 @@ std::ofstream outfile;
3837
// drasticly.
3938
void GenerateMatrix(std::vector<float> &input_matrix,
4039
std::vector<Real> &input_results) {
41-
queue q(selector);
40+
queue q(gpu_selector_v);
4241

4342
buffer bufin_mat(input_matrix);
4443
buffer bufin_res(input_results);
@@ -126,7 +125,7 @@ int main(int argc, char *argv[]) {
126125
std::vector<float> input_matrix(kSize * kSize);
127126
std::vector<Real> input_results(kSize);
128127

129-
queue q(selector);
128+
queue q(gpu_selector_v);
130129

131130
std::cout << "Device : " << q.get_device().get_info<info::device::name>()
132131
<< std::endl;

DirectProgramming/DPC++/DenseLinearAlgebra/guided_jacobi_iterative_gpu_optimization/src/3_guided_jacobi_iterative_solver_multi_gpu.cpp

+1-2
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
// =============================================================
77
#include <bits/stdc++.h>
88

9-
#include <CL/sycl.hpp>
9+
#include <sycl/sycl.hpp>
1010
#include <algorithm>
1111
#include <chrono>
1212
#include <cstdlib>
@@ -26,7 +26,6 @@ static const int kMinRand = -1000;
2626
static const int kMaxRand = 1000;
2727
static const int kMaxSweeps = 100;
2828
static const std::uint32_t kSeed = 666;
29-
gpu_selector selector;
3029
std::ofstream outfile;
3130

3231
// Function responsible for generating a float type

DirectProgramming/DPC++/DenseLinearAlgebra/guided_jacobi_iterative_gpu_optimization/src/CMakeLists.txt

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -std=c++17")
1+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -fsycl -std=c++17")
22
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS}")
33

4-
add_executable(1_guided_jacobi_iterative_solver_cpu 1_guided_jacobi_iterative_solver_cpu)
4+
add_executable(1_guided_jacobi_iterative_solver_cpu 1_guided_jacobi_iterative_solver_cpu.cpp)
55
add_executable(2_guided_jacobi_iterative_solver_gpu 2_guided_jacobi_iterative_solver_gpu.cpp)
66
add_executable(3_guided_jacobi_iterative_solver_multi_gpu 3_guided_jacobi_iterative_solver_multi_gpu.cpp)
77

DirectProgramming/DPC++/DenseLinearAlgebra/jacobi_iterative/CMakeLists.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
cmake_minimum_required (VERSION 3.4.0)
22

3-
set(CMAKE_CXX_COMPILER "dpcpp")
3+
set(CMAKE_CXX_COMPILER "icpx")
44

55
project (jacobi_iterative)
66
# Set default build type to RelWithDebInfo if not specified

DirectProgramming/DPC++/DenseLinearAlgebra/jacobi_iterative/sycl_dpct_migrated/CMakeLists.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
1+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsycl")
22
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS}")
33
include_directories(${CMAKE_SOURCE_DIR}/sycl_dpct_migrated/Common/)
44

DirectProgramming/DPC++/DenseLinearAlgebra/jacobi_iterative/sycl_migrated/CMakeLists.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
1+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsycl")
22
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS}")
33

44
add_executable (sycl_migrated src/main.cpp src/jacobi.cpp)

DirectProgramming/DPC++/DenseLinearAlgebra/jacobi_iterative/sycl_migrated/src/jacobi.cpp

+7-7
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333
*/
3434

3535

36-
#include <CL/sycl.hpp>
36+
#include <sycl/sycl.hpp>
3737

3838
#include "jacobi.h"
3939

@@ -194,9 +194,9 @@ double JacobiMethodGpu(const float *A, const double *b,
194194

195195
if ((k & 1) == 0) {
196196
q.submit([&](handler &cgh) {
197-
accessor<double, 1, access_mode::read_write, access::target::local>
197+
local_accessor<double, 1>
198198
x_shared_acc_ct1(range<1>(N_ROWS), cgh);
199-
accessor<double, 1, access_mode::read_write, access::target::local>
199+
local_accessor<double, 1>
200200
b_shared_acc_ct1(range<1>(ROWS_PER_CTA + 1), cgh);
201201

202202
cgh.parallel_for(nd_range<3>(nblocks * nthreads, nthreads),
@@ -210,9 +210,9 @@ double JacobiMethodGpu(const float *A, const double *b,
210210
});
211211
} else {
212212
q.submit([&](handler &cgh) {
213-
accessor<double, 1, access_mode::read_write, access::target::local>
213+
local_accessor<double, 1>
214214
x_shared_acc_ct1(range<1>(N_ROWS), cgh);
215-
accessor<double, 1, access_mode::read_write, access::target::local>
215+
local_accessor<double, 1>
216216
b_shared_acc_ct1(range<1>(ROWS_PER_CTA + 1), cgh);
217217

218218
cgh.parallel_for(nd_range<3>(nblocks * nthreads, nthreads),
@@ -237,7 +237,7 @@ double JacobiMethodGpu(const float *A, const double *b,
237237

238238
if ((k & 1) == 0) {
239239
q.submit([&](handler &cgh) {
240-
accessor<uint8_t, 1, access_mode::read_write, access::target::local>
240+
local_accessor<uint8_t, 1>
241241
sycl_local_acc_ct1(range<1>(sharedMemSize), cgh);
242242

243243
cgh.parallel_for(nd_range<3>(nblocks * nthreads, nthreads),
@@ -249,7 +249,7 @@ double JacobiMethodGpu(const float *A, const double *b,
249249
});
250250
} else {
251251
q.submit([&](handler &cgh) {
252-
accessor<uint8_t, 1, access_mode::read_write, access::target::local>
252+
local_accessor<uint8_t, 1>
253253
sycl_local_acc_ct1(range<1>(sharedMemSize), cgh);
254254

255255
cgh.parallel_for(nd_range<3>(nblocks * nthreads, nthreads),

DirectProgramming/DPC++/DenseLinearAlgebra/jacobi_iterative/sycl_migrated/src/main.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333
*/
3434

3535

36-
#include <CL/sycl.hpp>
36+
#include <sycl/sycl.hpp>
3737
#include <chrono>
3838

3939
#include "jacobi.h"
@@ -63,7 +63,7 @@ int main(int argc, char **argv) {
6363
double *b = NULL;
6464
float *A = NULL;
6565

66-
queue q{default_selector(), property::queue::in_order()};
66+
queue q{default_selector_v, property::queue::in_order()};
6767

6868
b = (double *)malloc(N_ROWS * sizeof(double));
6969
memset(b, 0, N_ROWS * sizeof(double));

DirectProgramming/DPC++/DenseLinearAlgebra/jacobi_iterative/sycl_migrated_optimized/CMakeLists.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O2")
1+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O2 -fsycl")
22
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS}")
33

44
add_executable (sycl_migrated_optimized src/main.cpp src/jacobi.cpp)

DirectProgramming/DPC++/DenseLinearAlgebra/jacobi_iterative/sycl_migrated_optimized/src/jacobi.cpp

+7-7
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333
*/
3434

3535

36-
#include <CL/sycl.hpp>
36+
#include <sycl/sycl.hpp>
3737

3838
#include "jacobi.h"
3939

@@ -181,9 +181,9 @@ double JacobiMethodGpu(const float *A, const double *b,
181181

182182
if ((k & 1) == 0) {
183183
q.submit([&](handler &cgh) {
184-
accessor<double, 1, access_mode::read_write, access::target::local>
184+
local_accessor<double, 1>
185185
x_shared_acc_ct1(range<1>(N_ROWS), cgh);
186-
accessor<double, 1, access_mode::read_write, access::target::local>
186+
local_accessor<double, 1>
187187
b_shared_acc_ct1(range<1>(ROWS_PER_CTA + 1), cgh);
188188

189189
cgh.parallel_for(nd_range<3>(nblocks * nthreads, nthreads),
@@ -197,9 +197,9 @@ double JacobiMethodGpu(const float *A, const double *b,
197197
});
198198
} else {
199199
q.submit([&](handler &cgh) {
200-
accessor<double, 1, access_mode::read_write, access::target::local>
200+
local_accessor<double, 1>
201201
x_shared_acc_ct1(range<1>(N_ROWS), cgh);
202-
accessor<double, 1, access_mode::read_write, access::target::local>
202+
local_accessor<double, 1>
203203
b_shared_acc_ct1(range<1>(ROWS_PER_CTA + 1), cgh);
204204

205205
cgh.parallel_for(nd_range<3>(nblocks * nthreads, nthreads),
@@ -224,7 +224,7 @@ double JacobiMethodGpu(const float *A, const double *b,
224224

225225
if ((k & 1) == 0) {
226226
q.submit([&](handler &cgh) {
227-
accessor<uint8_t, 1, access_mode::read_write, access::target::local>
227+
local_accessor<uint8_t, 1>
228228
sycl_local_acc_ct1(range<1>(sharedMemSize), cgh);
229229

230230
cgh.parallel_for(nd_range<3>(nblocks * nthreads, nthreads),
@@ -236,7 +236,7 @@ double JacobiMethodGpu(const float *A, const double *b,
236236
});
237237
} else {
238238
q.submit([&](handler &cgh) {
239-
accessor<uint8_t, 1, access_mode::read_write, access::target::local>
239+
local_accessor<uint8_t, 1>
240240
sycl_local_acc_ct1(range<1>(sharedMemSize), cgh);
241241

242242
cgh.parallel_for(nd_range<3>(nblocks * nthreads, nthreads),

DirectProgramming/DPC++/DenseLinearAlgebra/jacobi_iterative/sycl_migrated_optimized/src/main.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333
*/
3434

3535

36-
#include <CL/sycl.hpp>
36+
#include <sycl/sycl.hpp>
3737
#include <chrono>
3838

3939
#include "jacobi.h"
@@ -63,7 +63,7 @@ int main(int argc, char **argv) {
6363
double *b = NULL;
6464
float *A = NULL;
6565

66-
queue q{default_selector(), property::queue::in_order()};
66+
queue q{default_selector_v, property::queue::in_order()};
6767

6868
b = (double *)malloc(N_ROWS * sizeof(double));
6969
memset(b, 0, N_ROWS * sizeof(double));

0 commit comments

Comments
 (0)