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
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
195338install :
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+
264439script :
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
0 commit comments