Assets 4

CLBlast version 1.5.0. Changes since previous release (version 1.4.1):

  • Added support for shuffle instructions for NVIDIA GPUs (thanks to 'tyler-utah')
  • Added an option to compile the Netlib API with static OpenCL device and context (-DNETLIB_PERSISTENT_OPENCL=ON)
  • Added a FAQ page to the documentation
  • The tuners now check beforehand on invalid local thread sizes and skip those completely
  • Made the tuning API (OverrideParameters) more flexible, disregarding superfluous parameters
  • Fixed an issue with conjugate transpose not being executed in certain cases for a.o. XOMATCOPY
  • Fixed an issue with AMD GPUs and the new GEMMK == 1 kernel
  • Fixed an issue with the preprocessor and the new GEMMK == 1 kernel
  • Fixed an issue for unequal MWG and NWG and the new GEMMK == 1 kernel
  • Fixed an issue for certain parameters for AXPY's 'XaxpyFaster' kernel
  • Various minor fixes and enhancements
  • Added non-BLAS routines:
    • SCONVGEMM/DCONVGEMM/HCONVGEMM (convolution as im2col followed by batched GEMM)
    • SCOL2IM/DCOL2IM/CCOL2IM/ZCOL2IM/HCOL2IM (col2im transform as used in machine learning)

@CNugteren CNugteren released this Jul 14, 2018 · 92 commits to master since this release

Assets 4

CLBlast version 1.4.1 (bugfix release). Changes since previous release (version 1.4.0):

  • Fixed an access violation under Windows upon releasing the OpenCL program when the driver is already unloaded
  • Fixed an issue with double cl_program release in the CLBlast caching system
  • Added tuned parameters for various devices (see doc/tuning.md)

@CNugteren CNugteren released this Jun 3, 2018 · 102 commits to master since this release

Assets 4

CLBlast version 1.4.0. Changes since previous release (version 1.3.0):

  • Added Python interface to CLBlast 'PyCLBlast'
  • Added CLBlast to Ubuntu PPA and macOS Homebrew package managers
  • Added an API to run the tuners programmatically without any I/O
  • Improved the performance potential by adding a second tunable GEMM kernel with 2D register tiling
  • Added support for Intel specific subgroup shuffling extensions for faster GEMM on Intel GPUs
  • Re-added a local memory size constraint to the tuners
  • The routine tuners now automatically pick up tuning results from disk from the kernel tuners
  • Updated and reorganised the CLBlast documentation
  • Added a 'canary' region to check for overflows in the tuner and tests (inspired by clARMOR)
  • Added an option to test against and compare performance with Intel's MKL
  • Fixed an access violation when compiled with Visual Studio upon releasing the OpenCL program
  • Fixed incorrect releasing of the OpenCL program resulting in segfaults / access violations
  • Various minor fixes and enhancements
  • Added tuned parameters for various devices (see doc/tuning.md)
  • Added non-BLAS level-1 routines:
    • SHAD/DHAD/CHAD/ZHAD/HHAD (Hadamard element-wise vector-vector product)

@CNugteren CNugteren released this Jan 29, 2018 · 232 commits to master since this release

Assets 4

CLBlast version 1.3.0. Changes since previous release (version 1.2.0):

  • Re-designed and integrated the auto-tuner, no more dependency on CLTune
  • Made it possible to override the tuning parameters in the clients straight from JSON tuning files
  • Added OpenCL pre-processor to unroll loops and perform array-to-register promotions for compilers
    which don't do this themselves (ARM Mali) - greatly improves performance on these platforms
  • Added first tuners for the TRSV (block size) and TRSM (invert kernel) routines
  • Added an optional argument to the GEMM routine to provide a pre-allocated temporary buffer
  • Fixed an issue with a crashing/hanging AMD APP compiler with the TRSM routine (invert kernel)
  • Improved compilation time by splitting the tuning database into multiple compilation units
  • Various minor fixes and enhancements
  • Added tuned parameters for various devices (see README)
  • Added the RetrieveParameters function to the API to be able to inspect the tuning parameters
  • Added a strided-batched (not part of the BLAS standard) routine, faster but less generic compared
    to the existing xGEMMBATCHED routines:
    • SGEMMSTRIDEDBATCHED/DGEMMSTRIDEDBATCHED/CGEMMSTRIDEDBATCHED/ZGEMMSTRIDEDBATCHED/HGEMMSTRIDEDBATCHED

@CNugteren CNugteren released this Nov 8, 2017 · 370 commits to master since this release

Assets 4

CLBlast version 1.2.0. Changes since previous release (version 1.1.1):

  • Fixed a bug in the TRSM/TRSV routines due to missing synchronisations after GEMM/GEMV calls
  • Fixed a bug in TRSM when using the a-offset argument
  • Added a CUDA API to CLBlast:
    • The library and kernels can be compiled with the CUDA driver API and NVRTC (requires CUDA 7.5)
    • Two CUDA API sample programs are added: SGEMM and DAXPY
    • All correctness tests and performance clients work on CUDA like they did for OpenCL
  • Kernels are now cached based on their tuning parameters: fits the use-case of 'OverrideParameters'
  • Cross-compiling for Android is now supported using CMake; instructions are added to the README
  • Improved performance for small GEMM problems by going from 3 to 1 optional temporary buffers
  • GEMM kernel selection (direct vs in-direct) is now done automatically using a new tuner
  • Various minor fixes and enhancements
  • Added tuned parameters for various devices (see README)
Oct 29, 2017
RC1 for version 1.2.0 for use in ArrayFire

@CNugteren CNugteren released this Sep 30, 2017 · 446 commits to master since this release

Assets 4

CLBlast version 1.1.0. Changes since previous release (version 1.0.1):

  • The tuning database now has defaults per architecture (e.g. NVIDIA Kepler SM3.5, AMD Fiji)
  • The tuning database now has a dictionary to translate vendor/device names to a common set
  • The tuners can now distinguish between different AMD GPU board names of the same architecture
  • The tuners can now use particle-swarm optimisation to search more efficiently (thanks to 'mcian')
  • Improved performance for small problems on NVIDIA hardware by caching the device name
  • Further improved compilation time of database.cpp
  • Added a small diagnostics helper executable
  • Various minor fixes and enhancements
  • Added tuned parameters for various devices (see README)
  • Added non-BLAS routines:
    • SIM2COL/DIM2COL/CIM2COL/ZIM2COL/HIM2COL (im2col transform as used to express convolution as GEMM)

@CNugteren CNugteren released this Aug 8, 2017 · 498 commits to master since this release

Assets 4

CLBlast version 1.0.1. Changes since previous release (version 1.0.0):

  • Fixed a bug in the direct version of the GEMM kernel

@CNugteren CNugteren released this Jul 30, 2017 · 502 commits to master since this release

Assets 4

CLBlast version 1.0.0. Changes since previous release (version 0.11.0):

  • Fixed a bug in the TRSM routine for alpha != 1
  • Fixed a bug in the cache related to multi-device contexts (thanks to 'kpot')
  • Fixed a bug in the direct version of the GEMM kernel
  • Fixed several warnings for MSVC and Clang
  • Added support for Mesa Clover and AMD's ROCm by making the inline keyword optional in kernels
  • Performance reports are now external at https://cnugteren.github.io/clblast
  • Greatly improved compilation time of database.cpp
  • Various minor fixes and enhancements
  • Added tuned parameters for various devices (see README)
  • Added non-BLAS level-1 routines:
    • iSAMIN/iDAMIN/iCAMIN/iZAMIN (absolute minimum version of the ixAMAX BLAS routines)

@CNugteren CNugteren released this May 2, 2017 · 566 commits to master since this release

Assets 4

Version 0.11.0

  • Improved the internal program source and binary caches for scalability and speed (thanks to 'intelfx')
  • Fixed a bug having to re-create the binary even if it was in the cache
  • Fixed a bug when using offsets in the direct version of the GEMM kernels
  • Fixed a missing cl_khr_fp64 when running double-precision on Intel CPUs
  • Fixed tests on Apple's CPU OpenCL implementation; still not fast but correct at least
  • Fixed bugs in the half-precision routines HTBMV/HTPMV/HTRMV/HSYR2K/HTRMM
  • Tests now also exit with an error code when OpenCL errors or compilation errors occur
  • Tests now also check for the L2 error in case of half-precision
  • Clients can now test against cuBLAS on NVIDIA systems for performance comparisons (-DCUBLAS=ON)
  • Replaced the R graph scripts with Python/Matplotlib scripts
  • Various minor fixes and enhancements
  • Added tuned parameters for various devices (see README)
  • Added the OverrideParameters function to the API to be able to supply custom tuning parmeters
  • Added triangular solver (level-2 & level-3) routines:
    • STRSV/DTRSV/CTRSV/ZTRSV (experimental, un-optimized)
    • STRSM/DTRSM/CTRSM/ZTRSM (experimental, un-optimized)
  • Added batched (not part of the BLAS standard) routines:
    • SAXPYBATCHED/DAXPYBATCHED/CAXPYBATCHED/ZAXPYBATCHED/HAXPYBATCHED (batched version of AXPY)
    • SGEMMBATCHED/DGEMMBATCHED/CGEMMBATCHED/ZGEMMBATCHED/HGEMMBATCHED (batched version of GEMM)