Removed dependency on CLTune

pull/216/head
Cedric Nugteren 2017-11-16 21:28:36 +01:00
parent 2b8ad70b63
commit d9cf206979
3 changed files with 6 additions and 86 deletions

View File

@ -156,15 +156,6 @@ elseif(CUDA)
link_directories(${CUDA_TOOLKIT_ROOT_DIR}/lib64)
endif()
# Locates the CLTune library in case the tuners need to be compiled. "FindCLTune.cmake" is included.
if(TUNERS)
find_package(CLTune)
if(NOT CLTUNE_FOUND)
message(STATUS "Could NOT find CLTune, disabling the compilation of the tuners")
set(TUNERS OFF)
endif()
endif()
# Don't search for system libraries when cross-compiling
if(${CMAKE_SYSTEM_NAME} STREQUAL Android)
if(TESTS)
@ -374,13 +365,14 @@ endif()
# ==================================================================================================
# This section contains all the code related to the tuners. These tuners require the presence of
# the CLTune library (not included as part of the source).
# This section contains all the code related to the tuners
# TODO: Remove dependency on CLBlast
if(TUNERS)
set(TUNERS_COMMON
src/tuning/configurations.cpp
src/tuning/configurations.hpp
src/tuning/tuning.cpp
src/tuning/tuning.hpp)
# Visual Studio requires the sources of non-exported objects/libraries
@ -391,14 +383,12 @@ if(TUNERS)
# Adds tuning executables
foreach(KERNEL ${KERNELS})
add_executable(clblast_tuner_${KERNEL} ${TUNERS_COMMON} src/tuning/kernels/${KERNEL}.cpp)
target_link_libraries(clblast_tuner_${KERNEL} clblast ${CLTUNE_LIBRARIES} ${API_LIBRARIES})
target_include_directories(clblast_tuner_${KERNEL} PUBLIC ${CLTUNE_INCLUDE_DIRS})
target_link_libraries(clblast_tuner_${KERNEL} clblast ${API_LIBRARIES})
install(TARGETS clblast_tuner_${KERNEL} DESTINATION bin)
endforeach()
foreach(ROUTINE_TUNER ${ROUTINE_TUNERS})
add_executable(clblast_tuner_routine_${ROUTINE_TUNER} ${TUNERS_COMMON} src/tuning/routines/${ROUTINE_TUNER}.cpp)
target_link_libraries(clblast_tuner_routine_${ROUTINE_TUNER} clblast ${CLTUNE_LIBRARIES} ${API_LIBRARIES})
target_include_directories(clblast_tuner_routine_${ROUTINE_TUNER} PUBLIC ${CLTUNE_INCLUDE_DIRS})
target_link_libraries(clblast_tuner_routine_${ROUTINE_TUNER} clblast ${API_LIBRARIES})
install(TARGETS clblast_tuner_routine_${ROUTINE_TUNER} DESTINATION bin)
endforeach()

View File

@ -180,8 +180,6 @@ If your device is not (yet) among this list or if you want to tune CLBlast for s
cmake -DTUNERS=ON ..
Note that CLBlast's tuners are based on the [CLTune auto-tuning library](https://github.com/CNugteren/CLTune), which has to be installed separately (requires version 2.6.0 or higher).
Compiling with `-DTUNERS=ON` will generate a number of tuners, each named `clblast_tuner_xxxxx`, in which `xxxxx` corresponds to a `.opencl` kernel file as found in `src/kernels`. These kernels corresponds to routines (e.g. `xgemm`) or to common pre-processing or post-processing kernels (`copy` and `transpose`). Running such a tuner will test a number of parameter-value combinations on your device and report which one gave the best performance. Running `make alltuners` runs all tuners for all precisions in one go. You can set the default device and platform for `alltuners` by setting the `CLBLAST_DEVICE` and `CLBLAST_PLATFORM` environmental variables.
The tuners output a JSON-file with the results. The best results need to be added to `src/database/kernels/xxxxx.hpp` in the appropriate section. However, this can be done automatically based on the JSON-data using a Python (2.7 or 3.x) script in `scripts/database/database.py`. If you want the found parameters to be included in future releases of CLBlast, please attach the JSON files to the corresponding issue on GitHub or [email the main author](http://www.cedricnugteren.nl).
@ -416,7 +414,7 @@ More information
Further information on CLBlast is available through the following links:
* A 20-minute presentation of CLBlast was given at the GPU Technology Conference in May 2017. A recording is available on the [GTC on-demand website](http://on-demand.gputechconf.com/gtc/2017/video/s7280-nugteren-clblast.mp4) (poor audio quality however) and a full slide-set is also available [as PDF](http://on-demand.gputechconf.com/gtc/2017/presentation/s7280-cedric-nugteren-clblast.pdf).
* More in-depth information and experimental results are also available in a scientific paper titled [CLBlast: A Tuned OpenCL BLAS Library](https://arxiv.org/abs/1705.05249) (May 2017). For CLTune, see also the [CLTune: A Generic Auto-Tuner for OpenCL Kernels](https://arxiv.org/abs/1703.06503) paper.
* More in-depth information and experimental results are also available in a scientific paper titled [CLBlast: A Tuned OpenCL BLAS Library](https://arxiv.org/abs/1705.05249) (May 2017). For CLTune, the inspiration for the included auto-tuner, see also the [CLTune: A Generic Auto-Tuner for OpenCL Kernels](https://arxiv.org/abs/1703.06503) paper.
Support us

View File

@ -1,68 +0,0 @@
# ==================================================================================================
# This file is part of the CLBlast project. The project is licensed under Apache Version 2.0. This
# project loosely follows the Google C++ styleguide and uses a tab-size of two spaces and a max-
# width of 100 characters per line.
#
# Author(s):
# Cedric Nugteren <www.cedricnugteren.nl>
#
# ==================================================================================================
#
# Defines the following variables:
# CLTUNE_FOUND Boolean holding whether or not the CLTune library was found
# CLTUNE_INCLUDE_DIRS The CLTune include directory
# CLTUNE_LIBRARIES The CLTune library
#
# In case CLTune is not installed in the default directory, set the CLTUNE_ROOT variable to point to
# the root of CLTune, such that 'cltune.h' can be found in $CLTUNE_ROOT/include. This can either be
# done using an environmental variable (e.g. export CLTUNE_ROOT=/path/to/cltune) or using a CMake
# variable (e.g. cmake -DCLTUNE_ROOT=/path/to/cltune ..).
#
# ==================================================================================================
# Sets the possible install locations
set(CLTUNE_HINTS
${CLTUNE_ROOT}
$ENV{CLTUNE_ROOT}
)
set(CLTUNE_PATHS
/usr
/usr/local
)
# Finds the include directories
find_path(CLTUNE_INCLUDE_DIRS
NAMES cltune.h
HINTS ${CLTUNE_HINTS}
PATH_SUFFIXES include inc include/x86_64 include/x64
PATHS ${CLTUNE_PATHS}
DOC "CLTune include header cltune.h"
)
mark_as_advanced(CLTUNE_INCLUDE_DIRS)
# Finds the library
find_library(CLTUNE_LIBRARIES
NAMES cltune
HINTS ${CLTUNE_HINTS}
PATH_SUFFIXES lib lib64 lib/x86_64 lib/x64 lib/x86 lib/Win32
PATHS ${CLTUNE_PATHS}
DOC "CLTune library"
)
mark_as_advanced(CLTUNE_LIBRARIES)
# ==================================================================================================
# Notification messages
if(NOT CLTUNE_INCLUDE_DIRS)
message(STATUS "Could NOT find 'cltune.h', install CLTune or set CLTUNE_ROOT")
endif()
if(NOT CLTUNE_LIBRARIES)
message(STATUS "Could NOT find CLTune library, install it or set CLTUNE_ROOT")
endif()
# Determines whether or not CLTune was found
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(CLTune DEFAULT_MSG CLTUNE_INCLUDE_DIRS CLTUNE_LIBRARIES)
# ==================================================================================================