summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCedric Nugteren <web@cedricnugteren.nl>2016-08-20 12:59:21 +0200
committerCedric Nugteren <web@cedricnugteren.nl>2016-08-20 12:59:21 +0200
commit7eeef743384e83c287e5260723e8762290e3826b (patch)
tree7e4e68d90e49fec2fd7994bc043fa2d15523053e
parentce9ba27450a0be1d66cc2c266f7a2b9dce9fe28a (diff)
parent35623cd98d798173661c8d86c84fb48261a2493e (diff)
Merge branch 'development' of github.com:CNugteren/CLBlast into development
Conflicts: README.md
-rw-r--r--.appveyor.yml4
-rw-r--r--.travis.yml32
-rw-r--r--CHANGELOG1
-rw-r--r--CMakeLists.txt34
-rw-r--r--README.md1
5 files changed, 28 insertions, 44 deletions
diff --git a/.appveyor.yml b/.appveyor.yml
index 8597e43e..eb7f1c97 100644
--- a/.appveyor.yml
+++ b/.appveyor.yml
@@ -1,8 +1,8 @@
environment:
global:
- CLBLAST_ROOT: "%APPVEYOR_BUILD_FOLDER%\\bin\\clblast"
+ CLBLAST_ROOT: "%APPVEYOR_BUILD_FOLDER%\\..\\bin\\clblast"
OPENCL_REGISTRY: "https://www.khronos.org/registry/cl"
- OPENCL_ROOT: "%APPVEYOR_BUILD_FOLDER%\\bin\\opencl"
+ OPENCL_ROOT: "%APPVEYOR_BUILD_FOLDER%\\..\\bin\\opencl"
platform:
- x64
diff --git a/.travis.yml b/.travis.yml
index 8e1a80db..0465afa4 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -17,49 +17,21 @@ addons:
- kubuntu-backports
packages:
- cmake
+ - ocl-icd-opencl-dev
env:
global:
- CLBLAST_ROOT=${TRAVIS_BUILD_DIR}/bin/clblast
- - OPENCL_REGISTRY=https://www.khronos.org/registry/cl
- - OPENCL_ROOT=${TRAVIS_BUILD_DIR}/bin/opencl
before_install:
- cmake --version;
- ${CC} --version;
- ${CXX} --version;
-install:
- # The following linux logic is necessary because of Travis's move to the GCE platform, which does not
- # currently contain packages for fglrx: https://github.com/travis-ci/travis-ci/issues/5221
- # We build our own linkable .so file
- - if [ ${TRAVIS_OS_NAME} == "linux" ]; then
- mkdir -p ${OPENCL_ROOT};
- pushd ${OPENCL_ROOT};
- travis_retry git clone --depth 1 https://github.com/KhronosGroup/OpenCL-ICD-Loader.git;
- mv ./OpenCL-ICD-Loader/* .;
- travis_retry git clone --depth 1 https://github.com/KhronosGroup/OpenCL-Headers.git inc/CL;
- pushd inc/CL;
- travis_retry wget -w 1 -np -nd -nv -A h,hpp ${OPENCL_REGISTRY}/api/2.1/cl.hpp;
- popd;
- mkdir -p lib;
- pushd lib;
- cmake -G "Unix Makefiles" ..;
- make;
- cp ./bin/libOpenCL.so .;
- popd;
- pushd inc/CL;
- travis_retry git fetch origin opencl12:opencl12;
- git checkout opencl12;
- popd;
- mv inc/ include/;
- popd;
- fi
-
before_script:
- mkdir -p ${CLBLAST_ROOT}
- pushd ${CLBLAST_ROOT}
- - cmake -DOPENCL_ROOT=${OPENCL_ROOT} -DTESTS=ON -DCLIENTS=ON ${TRAVIS_BUILD_DIR}
+ - cmake -DTESTS=ON -DCLIENTS=ON ${TRAVIS_BUILD_DIR}
script:
- make
diff --git a/CHANGELOG b/CHANGELOG
index 7973655b..28e671f8 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -9,6 +9,7 @@ Development version (next release)
- Fixed a bug in the OpenCL kernels: now placing __kernel before __attribute__
- Added an option (-warm_up) to do a warm-up run before timing in the performance clients
- Improved performance significantly of rotated GEMV computations
+- Various minor fixes and enhancements
- Added tuned parameters for various devices (see README)
Version 0.8.0
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 95d1d500..7393c6e7 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -127,11 +127,6 @@ endif()
# ==================================================================================================
-# Includes directories: CLBlast and OpenCL
-include_directories(${clblast_SOURCE_DIR}/include ${clblast_SOURCE_DIR}/src ${OPENCL_INCLUDE_DIRS})
-
-# ==================================================================================================
-
# Sets the supported routines and the used kernels. New routines and kernels should be added here.
set(KERNELS copy_fast copy_pad transpose_fast transpose_pad xaxpy xdot xger xgemm xgemv)
set(SAMPLE_PROGRAMS_CPP sgemm)
@@ -173,17 +168,27 @@ endforeach()
add_library(clblast SHARED ${SOURCES})
target_link_libraries(clblast ${OPENCL_LIBRARIES})
+# Includes directories: CLBlast and OpenCL
+target_include_directories(clblast PUBLIC
+ $<BUILD_INTERFACE:${clblast_SOURCE_DIR}/include>
+ $<BUILD_INTERFACE:${clblast_SOURCE_DIR}/src>
+ $<INSTALL_INTERFACE:include>
+ ${OPENCL_INCLUDE_DIRS})
+
# Sets the proper __declspec(dllexport) keyword for Visual Studio when the library is built
if(MSVC)
target_compile_definitions(clblast PRIVATE COMPILING_DLL=1) # requires at least CMake 2.8.11
endif()
# Installs the library
-install(TARGETS clblast DESTINATION lib)
+install(TARGETS clblast EXPORT CLBlast DESTINATION lib)
install(FILES include/clblast.h DESTINATION include)
install(FILES include/clblast_c.h DESTINATION include)
install(FILES include/clblast_half.h DESTINATION include)
+# Installs the config for find_package in dependent projects
+install(EXPORT CLBlast DESTINATION lib/cmake/CLBLast FILE CLBlastConfig.cmake)
+
# ==================================================================================================
# Sets a default platform ($DEVICEPLATFORM) and device ($DEFAULT_DEVICE) to run tuners and tests on
@@ -225,9 +230,6 @@ endif()
# the CLTune library (not included as part of the source).
if(TUNERS)
- # Includes CLTune
- include_directories(${CLTUNE_INCLUDE_DIRS})
-
# Visual Studio requires the sources of non-exported objects/libraries
set(TUNERS_COMMON )
if(MSVC)
@@ -238,6 +240,7 @@ if(TUNERS)
foreach(KERNEL ${KERNELS})
add_executable(clblast_tuner_${KERNEL} ${TUNERS_COMMON} src/tuning/kernels/${KERNEL}.cpp)
target_link_libraries(clblast_tuner_${KERNEL} clblast ${CLTUNE_LIBRARIES} ${OPENCL_LIBRARIES})
+ target_include_directories(clblast_tuner_${KERNEL} PUBLIC ${CLTUNE_INCLUDE_DIRS})
install(TARGETS clblast_tuner_${KERNEL} DESTINATION bin)
endforeach()
@@ -281,9 +284,6 @@ if(CLIENTS OR TESTS)
endif()
endif()
- # Sets the include directories
- include_directories(${clblast_SOURCE_DIR} ${REF_INCLUDES})
-
endif()
# ==================================================================================================
@@ -299,6 +299,11 @@ if(CLIENTS)
else()
# Creates the common performance-tests objects (requires CMake 2.8.8)
add_library(test_performance_common OBJECT test/performance/client.cpp)
+
+ # Adds CLBlast's interface include paths because we can't link to CLBlast here
+ target_include_directories(test_performance_common PRIVATE
+ $<TARGET_PROPERTY:clblast,INTERFACE_INCLUDE_DIRECTORIES>
+ ${clblast_SOURCE_DIR})
set(CLIENTS_COMMON ${CLIENTS_COMMON} $<TARGET_OBJECTS:test_performance_common>)
endif()
@@ -321,6 +326,7 @@ if(CLIENTS)
endforeach()
foreach(ROUTINE ${ROUTINES})
target_link_libraries(clblast_client_${ROUTINE} clblast ${REF_LIBRARIES} ${OPENCL_LIBRARIES})
+ target_include_directories(clblast_client_${ROUTINE} PUBLIC ${clblast_SOURCE_DIR} ${REF_INCLUDES})
install(TARGETS clblast_client_${ROUTINE} DESTINATION bin)
endforeach()
@@ -342,6 +348,9 @@ if(TESTS)
# Creates the common correctness-tests objects (requires CMake 2.8.8)
add_library(test_correctness_common OBJECT
test/correctness/tester.cpp test/correctness/testblas.cpp)
+ target_include_directories(test_correctness_common PUBLIC
+ $<TARGET_PROPERTY:clblast,INTERFACE_INCLUDE_DIRECTORIES>
+ ${clblast_SOURCE_DIR})
set(TESTS_COMMON ${TESTS_COMMON} $<TARGET_OBJECTS:test_correctness_common>)
endif()
@@ -365,6 +374,7 @@ if(TESTS)
foreach(ROUTINE ${ROUTINES})
target_link_libraries(clblast_test_${ROUTINE} clblast ${REF_LIBRARIES} ${OPENCL_LIBRARIES})
install(TARGETS clblast_test_${ROUTINE} DESTINATION bin)
+ target_include_directories(clblast_test_${ROUTINE} PUBLIC ${clblast_SOURCE_DIR} ${REF_INCLUDES})
add_test(clblast_test_${ROUTINE} clblast_test_${ROUTINE} ${DEVICEPLATFORM})
endforeach()
diff --git a/README.md b/README.md
index 04a8e470..feff1d40 100644
--- a/README.md
+++ b/README.md
@@ -286,6 +286,7 @@ The contributing authors (code, pull requests, testing) so far are:
* [Marco Hutter](https://github.com/gpus)
* [Hugh Perkins](https://github.com/hughperkins)
* [Gian-Carlo Pascutto](https://github.com/gcp)
+* [Ivan Shapovalov](https://github.com/intelfx)
* [Dimitri VA](https://github.com/dvasschemacq)
Tuning and testing on a variety of OpenCL devices was made possible by: