Skip to content

Commit 2135633

Browse files
authored
Merge pull request #807 from jszuppe/ci-fixes
Add Intel (1.2, 2.0, 2.1) and OpenCL 2.2 builds for Travis CI
2 parents 0f52d92 + facbfb2 commit 2135633

File tree

5 files changed

+218
-32
lines changed

5 files changed

+218
-32
lines changed

.travis.yml

+201-26
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ env:
1010
# Khronos OpenCL ICD
1111
- OPENCL_REGISTRY=https://www.khronos.org/registry/OpenCL/
1212
- OPENCL_ROOT=${DEPS_DIR}/opencl
13+
- OPENCL_ICD_LIB=${OPENCL_ROOT}/icd/build/lib/libOpenCL.so
1314
# POCL
1415
- POCL_BRANCH=release_1_2 # branch/tag
1516
- POCL_LLVM_VERSION=7.0.0
@@ -19,7 +20,7 @@ env:
1920
- POCL_C_COMPILER=${DEPS_DIR}/llvm-${POCL_LLVM_VERSION}/bin/clang
2021
- POCL_OPENCL_LIB=${POCL_ROOT}/lib/libOpenCL.so
2122
# Global build options and C++ flags
22-
- GCC_VERSION=5
23+
- GCC_VERSION=5
2324
- CMAKE_OPTIONS="-DBOOST_COMPUTE_BUILD_TESTS=ON -DBOOST_COMPUTE_BUILD_EXAMPLES=ON -DBOOST_COMPUTE_BUILD_BENCHMARKS=ON -DBOOST_COMPUTE_USE_OFFLINE_CACHE=ON -DBOOST_COMPUTE_HAVE_OPENCV=ON -DBOOST_COMPUTE_THREAD_SAFE=ON"
2425
- CXX_FLAGS="-Wall -pedantic -Werror -Wno-variadic-macros -Wno-long-long -Wno-shadow -DCI_BUILD"
2526
# Boost
@@ -104,47 +105,189 @@ matrix:
104105
- OPENCL_LIB=pocl
105106
- ENV_CXX_FLAGS="-Wno-unused-local-typedef -DBOOST_COMPUTE_MAX_CL_VERSION=101"
106107
- ENV_CMAKE_OPTIONS="-DOpenCL_LIBRARY=${POCL_OPENCL_LIB} -DOpenCL_INCLUDE_DIR=${OPENCL_ROOT}/include"
107-
# Xenial, OpenCL 1.2, New Boost Libs, C++11, Coverage
108+
# Xenial, OpenCL 1.2
108109
# CLANG
109110
- os: linux
110111
dist: xenial
111112
compiler: clang
112113
addons:
113114
apt:
114-
packages: &xenial_pocl_packages_latest_boost
115+
packages: *xenial_pocl_packages
116+
sources: *xenial_pocl_sources
117+
env:
118+
- OPENCL_LIB=pocl
119+
- ENV_CXX_FLAGS="-Wno-unused-local-typedef -DBOOST_COMPUTE_MAX_CL_VERSION=102"
120+
- ENV_CMAKE_OPTIONS="-DOpenCL_LIBRARY=${POCL_OPENCL_LIB} -DOpenCL_INCLUDE_DIR=${OPENCL_ROOT}/include"
121+
# GCC
122+
- os: linux
123+
dist: xenial
124+
compiler: gcc
125+
addons:
126+
apt:
127+
packages: *xenial_pocl_packages
128+
sources: *xenial_pocl_sources
129+
env:
130+
- OPENCL_LIB=pocl
131+
- ENV_CXX_FLAGS="-Wno-unused-local-typedef -DBOOST_COMPUTE_MAX_CL_VERSION=102"
132+
- ENV_CMAKE_OPTIONS="-DOpenCL_LIBRARY=${POCL_OPENCL_LIB} -DOpenCL_INCLUDE_DIR=${OPENCL_ROOT}/include -DBOOST_COMPUTE_ENABLE_COVERAGE=ON"
133+
134+
############################################################################
135+
# Intel OpenCL Runtime builds (1.2, 2.0, 2.1)
136+
############################################################################
137+
138+
# Linux, Intel OpenCL 1.2
139+
# CLANG
140+
- os: linux
141+
dist: xenial
142+
compiler: clang
143+
addons:
144+
apt:
145+
packages: &xenial_intel_packages
115146
- g++-5
116-
# POCL
117-
- libltdl-dev
118-
- libhwloc-dev
119-
- pkg-config
120-
- libedit-dev
147+
# Boost
148+
- libboost-chrono1.58-dev
149+
- libboost-date-time1.58-dev
150+
- libboost-test1.58-dev
151+
- libboost-system1.58-dev
152+
- libboost-filesystem1.58-dev
153+
- libboost-timer1.58-dev
154+
- libboost-program-options1.58-dev
155+
- libboost-thread1.58-dev
121156
# Misc
122157
- python-yaml
123158
- lcov
124159
- libopencv-dev
125-
sources: &xenial_pocl_sources_latest_boost
160+
sources: &xenial_intel_sources
126161
- ubuntu-toolchain-r-test
127162
env:
128-
- OPENCL_LIB=pocl
129-
- BOOST_VERSION="1_67_0"
130-
- BOOST_URL="https://dl.bintray.com/boostorg/release/1.67.0/source/boost_1_67_0.tar.gz"
131-
- ENV_CXX_FLAGS="-Wno-unused-local-typedef -DBOOST_COMPUTE_MAX_CL_VERSION=102"
132-
- ENV_CMAKE_OPTIONS="-DOpenCL_LIBRARY=${POCL_OPENCL_LIB} -DOpenCL_INCLUDE_DIR=${OPENCL_ROOT}/include -DBOOST_COMPUTE_USE_CPP11=ON"
163+
- OPENCL_LIB=intel
164+
- ENV_CXX_FLAGS="-Wno-unused-local-typedef -DBOOST_COMPUTE_MAX_CL_VERSION=102"
165+
- ENV_CMAKE_OPTIONS="-DOpenCL_INCLUDE_DIR=${OPENCL_ROOT}/include"
133166
# GCC
134167
- os: linux
135168
dist: xenial
136169
compiler: gcc
137170
addons:
138171
apt:
139-
packages: *xenial_pocl_packages_latest_boost
140-
sources: *xenial_pocl_sources_latest_boost
172+
packages: *xenial_intel_packages
173+
sources: *xenial_intel_sources
141174
env:
142-
- OPENCL_LIB=pocl
143-
- COVERAGE=true
144-
- BOOST_VERSION="1_67_0"
145-
- BOOST_URL="https://dl.bintray.com/boostorg/release/1.67.0/source/boost_1_67_0.tar.gz"
146-
- ENV_CXX_FLAGS="-Wno-unused-local-typedef -DBOOST_COMPUTE_MAX_CL_VERSION=102"
147-
- ENV_CMAKE_OPTIONS="-DOpenCL_LIBRARY=${POCL_OPENCL_LIB} -DOpenCL_INCLUDE_DIR=${OPENCL_ROOT}/include -DBOOST_COMPUTE_ENABLE_COVERAGE=ON -DBOOST_COMPUTE_USE_CPP11=ON"
175+
- OPENCL_LIB=intel
176+
- ENV_CXX_FLAGS="-Wno-unused-local-typedef -DBOOST_COMPUTE_MAX_CL_VERSION=102"
177+
- ENV_CMAKE_OPTIONS="-DOpenCL_INCLUDE_DIR=${OPENCL_ROOT}/include"
178+
# Linux, Intel OpenCL 2.0
179+
# CLANG
180+
- os: linux
181+
dist: xenial
182+
compiler: clang
183+
addons:
184+
apt:
185+
packages: *xenial_intel_packages
186+
sources: *xenial_intel_sources
187+
env:
188+
- OPENCL_LIB=intel
189+
- ENV_CXX_FLAGS="-Wno-unused-local-typedef -DBOOST_COMPUTE_MAX_CL_VERSION=200"
190+
- ENV_CMAKE_OPTIONS="-DOpenCL_INCLUDE_DIR=${OPENCL_ROOT}/include"
191+
# GCC
192+
- os: linux
193+
dist: xenial
194+
compiler: gcc
195+
addons:
196+
apt:
197+
packages: *xenial_intel_packages
198+
sources: *xenial_intel_sources
199+
env:
200+
- OPENCL_LIB=intel
201+
- ENV_CXX_FLAGS="-Wno-unused-local-typedef -DBOOST_COMPUTE_MAX_CL_VERSION=200"
202+
- ENV_CMAKE_OPTIONS="-DOpenCL_INCLUDE_DIR=${OPENCL_ROOT}/include"
203+
# Linux, Intel OpenCL 2.1, New Boost Libs, C++11, Coverage
204+
# CLANG
205+
- os: linux
206+
dist: xenial
207+
compiler: clang
208+
cache:
209+
ccache: true
210+
directories:
211+
- ${DEPS_DIR}/boost
212+
addons:
213+
apt:
214+
packages: &xenial_intel_latest_boost_packages
215+
- g++-5
216+
# Misc
217+
- python-yaml
218+
- lcov
219+
- libopencv-dev
220+
sources: &xenial_intel_latest_boost_sources
221+
- ubuntu-toolchain-r-test
222+
env:
223+
- OPENCL_LIB=intel
224+
- BOOST_VERSION="1_67_0"
225+
- ENV_CXX_FLAGS="-Wno-unused-local-typedef -DBOOST_COMPUTE_MAX_CL_VERSION=201"
226+
- ENV_CMAKE_OPTIONS="-DOpenCL_INCLUDE_DIR=${OPENCL_ROOT}/include -DBOOST_COMPUTE_USE_CPP11=ON"
227+
# GCC
228+
- os: linux
229+
dist: xenial
230+
compiler: gcc
231+
cache:
232+
ccache: true
233+
directories:
234+
- ${DEPS_DIR}/boost
235+
addons:
236+
apt:
237+
packages: *xenial_intel_latest_boost_packages
238+
sources: *xenial_intel_latest_boost_sources
239+
env:
240+
- OPENCL_LIB=intel
241+
- BOOST_VERSION="1_67_0"
242+
- COVERAGE=true
243+
- ENV_CXX_FLAGS="-Wno-unused-local-typedef -DBOOST_COMPUTE_MAX_CL_VERSION=201"
244+
- ENV_CMAKE_OPTIONS="-DOpenCL_INCLUDE_DIR=${OPENCL_ROOT}/include -DBOOST_COMPUTE_ENABLE_COVERAGE=ON -DBOOST_COMPUTE_USE_CPP11=ON"
245+
- COVERAGE=true
246+
247+
############################################################################
248+
# OpenCL 2.2 Only Build
249+
############################################################################
250+
251+
# Linux, OpenCL 2.2, Tests not run, C++11
252+
# CLANG
253+
- os: linux
254+
dist: xenial
255+
compiler: clang
256+
addons:
257+
apt:
258+
packages: &xenial_packages
259+
- g++-5
260+
# Boost
261+
- libboost-chrono1.58-dev
262+
- libboost-date-time1.58-dev
263+
- libboost-test1.58-dev
264+
- libboost-system1.58-dev
265+
- libboost-filesystem1.58-dev
266+
- libboost-timer1.58-dev
267+
- libboost-program-options1.58-dev
268+
- libboost-thread1.58-dev
269+
# Misc
270+
- libopencv-dev
271+
sources: &xenial_sources
272+
- ubuntu-toolchain-r-test
273+
env:
274+
- OPENCL_LIB=khronos-icd
275+
- RUN_TESTS=false
276+
- ENV_CXX_FLAGS="-Wno-unused-local-typedef -DBOOST_COMPUTE_MAX_CL_VERSION=202"
277+
- ENV_CMAKE_OPTIONS="-DOpenCL_LIBRARY=${OPENCL_ICD_LIB} -DOpenCL_INCLUDE_DIR=${OPENCL_ROOT}/include -DBOOST_COMPUTE_USE_CPP11=ON"
278+
# GCC
279+
- os: linux
280+
dist: xenial
281+
compiler: gcc
282+
addons:
283+
apt:
284+
packages: *xenial_packages
285+
sources: *xenial_sources
286+
env:
287+
- OPENCL_LIB=khronos-icd
288+
- RUN_TESTS=false
289+
- ENV_CXX_FLAGS="-Wno-unused-local-typedef -DBOOST_COMPUTE_MAX_CL_VERSION=202"
290+
- ENV_CMAKE_OPTIONS="-DOpenCL_LIBRARY=${OPENCL_ICD_LIB} -DOpenCL_INCLUDE_DIR=${OPENCL_ROOT}/include -DBOOST_COMPUTE_USE_CPP11=ON"
148291

149292
############################################################################
150293
# OSX
@@ -194,7 +337,7 @@ before_install:
194337

195338
install:
196339
############################################################################
197-
# Download and install recent CMake
340+
# Download and install recent CMake
198341
############################################################################
199342
- |
200343
if [[ ${TRAVIS_OS_NAME} == "linux" ]]; then
@@ -205,7 +348,7 @@ install:
205348
fi
206349
207350
############################################################################
208-
# Download and install Boost
351+
# Download and install Boost
209352
############################################################################
210353
- |
211354
if [[ ${TRAVIS_OS_NAME} == "linux" && ${BOOST_VERSION} != "default" ]]; then
@@ -215,6 +358,8 @@ install:
215358
mkdir -p ${DEPS_DIR}/boost
216359
rm -rf ${DEPS_DIR}/boost/*
217360
# Download
361+
BOOST_BASENAME=$(echo ${BOOST_VERSION} | awk -F '_' '{print $1 "." $2 "." $3 }')
362+
BOOST_URL="https://dl.bintray.com/boostorg/release/${BOOST_BASENAME}/source/boost_${BOOST_VERSION}.tar.gz"
218363
travis_retry wget --no-check-certificate --quiet -O - ${BOOST_URL} | tar --strip-components=1 -xz -C ${DEPS_DIR}/boost${BOOST_VERSION}
219364
pushd ${DEPS_DIR}/boost${BOOST_VERSION}
220365
# Configure and install
@@ -243,6 +388,22 @@ install:
243388
popd
244389
fi
245390
391+
############################################################################
392+
# Only ICD
393+
############################################################################
394+
- |
395+
if [[ ${TRAVIS_OS_NAME} == "linux" && ${OPENCL_LIB} == "khronos-icd" ]]; then
396+
mkdir -p ${OPENCL_ROOT}
397+
pushd ${OPENCL_ROOT}
398+
travis_retry git clone --depth 1 https://github.com/KhronosGroup/OpenCL-ICD-Loader.git icd
399+
pushd icd
400+
mkdir -p inc/CL
401+
cp ${OPENCL_ROOT}/include/CL/* ./inc/CL/
402+
make -j2
403+
popd
404+
popd
405+
fi
406+
246407
############################################################################
247408
# Build and install POCL https://github.com/pocl/pocl
248409
############################################################################
@@ -254,13 +415,27 @@ install:
254415
mkdir build
255416
cd build
256417
cmake -DDIRECT_LINKAGE=ON -DENABLE_ICD=OFF -DCMAKE_C_COMPILER=${POCL_C_COMPILER} -DCMAKE_CXX_COMPILER=${POCL_CXX_COMPILER} -DWITH_LLVM_CONFIG=${POCL_LLVM_CONFIG} -DCMAKE_INSTALL_PREFIX=${POCL_ROOT}/ ..
257-
make install
418+
make -j2 install
258419
cd ../..
259420
else
260421
echo 'Using cached POCL lib.'
261422
fi
262423
fi
263424
425+
############################################################################
426+
# Install Intel OpenCL Runtime
427+
############################################################################
428+
- |
429+
if [[ ${TRAVIS_OS_NAME} == "linux" && ${OPENCL_LIB} == "intel" ]]; then
430+
# https://software.intel.com/en-us/articles/opencl-drivers#cpu-section
431+
PACKAGE_URL=http://registrationcenter-download.intel.com/akdlm/irc_nas/vcp/13793/l_opencl_p_18.1.0.013.tgz
432+
PACKAGE_NAME=l_opencl_p_18.1.0.013
433+
wget -q ${PACKAGE_URL} -O /tmp/opencl_runtime.tgz
434+
tar -xzf /tmp/opencl_runtime.tgz -C /tmp
435+
sed 's/decline/accept/g' -i /tmp/${PACKAGE_NAME}/silent.cfg
436+
sudo /tmp/${PACKAGE_NAME}/install.sh -s /tmp/${PACKAGE_NAME}/silent.cfg
437+
fi
438+
264439
script:
265440
############################################################################
266441
# Build Boost.Compute tests, benchmarks and examples
@@ -285,4 +460,4 @@ after_success:
285460
lcov --directory test --base-directory ../include/boost/compute/ --capture --output-file coverage.info
286461
lcov --remove coverage.info '/usr*' '*/test/*' '*/deps/*' -o coverage.info
287462
cd .. && coveralls-lcov build/coverage.info
288-
fi
463+
fi

include/boost/compute/kernel.hpp

+5
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
#include <boost/compute/program.hpp>
2525
#include <boost/compute/platform.hpp>
2626
#include <boost/compute/type_traits/is_fundamental.hpp>
27+
#include <boost/compute/detail/diagnostic.hpp>
2728
#include <boost/compute/detail/get_object_info.hpp>
2829
#include <boost/compute/detail/assert_cl_success.hpp>
2930

@@ -256,12 +257,14 @@ class kernel
256257
return boost::optional<T>();
257258
}
258259

260+
BOOST_COMPUTE_DISABLE_DEPRECATED_DECLARATIONS();
259261
clGetKernelSubGroupInfoKHR_fn clGetKernelSubGroupInfoKHR_fptr =
260262
reinterpret_cast<clGetKernelSubGroupInfoKHR_fn>(
261263
reinterpret_cast<size_t>(
262264
device.platform().get_extension_function_address("clGetKernelSubGroupInfoKHR")
263265
)
264266
);
267+
BOOST_COMPUTE_ENABLE_DEPRECATED_DECLARATIONS();
265268

266269
return detail::get_object_info<T>(
267270
clGetKernelSubGroupInfoKHR_fptr, m_kernel, info, device.id(), input_size, input
@@ -299,12 +302,14 @@ class kernel
299302
return boost::optional<T>();
300303
}
301304

305+
BOOST_COMPUTE_DISABLE_DEPRECATED_DECLARATIONS();
302306
clGetKernelSubGroupInfoKHR_fn clGetKernelSubGroupInfoKHR_fptr =
303307
reinterpret_cast<clGetKernelSubGroupInfoKHR_fn>(
304308
reinterpret_cast<size_t>(
305309
device.platform().get_extension_function_address("clGetKernelSubGroupInfoKHR")
306310
)
307311
);
312+
BOOST_COMPUTE_ENABLE_DEPRECATED_DECLARATIONS();
308313

309314
return detail::get_object_info<T>(
310315
clGetKernelSubGroupInfoKHR_fptr, m_kernel, info, device.id(), input_size, input

test/CMakeLists.txt

+2-2
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ endif()
4646
add_definitions(-DBOOST_COMPUTE_DEBUG_KERNEL_COMPILATION)
4747

4848
# enable code coverage generation (only with GCC for now)
49-
if(${BOOST_COMPUTE_ENABLE_COVERAGE} AND "${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
49+
if(${BOOST_COMPUTE_ENABLE_COVERAGE} AND ${CMAKE_CXX_COMPILER_ID} STREQUAL "GNU")
5050
add_definitions(-fprofile-arcs -ftest-coverage)
5151
endif()
5252

@@ -62,7 +62,7 @@ function(add_compute_test TEST_NAME TEST_SOURCE)
6262
)
6363

6464
# link with coverage library
65-
if(${BOOST_COMPUTE_ENABLE_COVERAGE} AND "${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
65+
if(${BOOST_COMPUTE_ENABLE_COVERAGE} AND ${CMAKE_CXX_COMPILER_ID} STREQUAL "GNU")
6666
target_link_libraries(${TEST_TARGET} -fprofile-arcs -ftest-coverage)
6767
endif()
6868

test/extra/CMakeLists.txt

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# ---------------------------------------------------------------------------
22
# Copyright (c) 2015 Kyle Lutz <[email protected]>
3-
#
3+
#
44
# Distributed under the Boost Software License, Version 1.0
55
# See accompanying file LICENSE_1_0.txt or copy at
66
# http://www.boost.org/LICENSE_1_0.txt
@@ -20,7 +20,7 @@ target_link_libraries(test_multiple_objects
2020
${Boost_LIBRARIES}
2121
)
2222
# link with coverage library
23-
if(${BOOST_COMPUTE_ENABLE_COVERAGE} AND "${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
23+
if(${BOOST_COMPUTE_ENABLE_COVERAGE} AND ${CMAKE_CXX_COMPILER_ID} STREQUAL "GNU")
2424
target_link_libraries(test_multiple_objects -fprofile-arcs -ftest-coverage)
2525
endif()
2626
add_test("misc.multiple_objects" test_multiple_objects)

0 commit comments

Comments
 (0)