VexCL v1.4.1 Release Notes

Release Date: 2017-05-04 // over 4 years ago
  • ๐Ÿš€ A bug fix release.

    • ๐Ÿ‘Œ Improvements for cmake scripts.
    • ๐Ÿ› Bug fixes.

Previous changes from v1.4.0

    • ๐Ÿ‘ท Modernize cmake build system.
      Provide VexCL::OpenCL, VexCL::Compute, VexCL::CUDA, VexCL::JIT
      imported targets, so that users may just

      add_executable(myprogram myprogram.cpp) target_link_libraries(myprogram VexCL::OpenCL)

    ๐Ÿ— to build a program using the corresponding VexCL backend.
    Also stop polluting global cmake namespace with things like
    add_definitions(), include_directories(), etc.
    ๐Ÿ‘€ See http://vexcl.readthedocs.io/en/latest/cmake.html.

    • ๐Ÿ‘‰ Make vex::backend::kernel::config() return reference to the kernel. So
      that it is possible to config and launch the kernel in a single line:
      K.config(nblocks, nthreads)(queue, prm1, prm2, prm3);.
    • Implement vector<T>::reinterpret<U>() method. It returns a new vector that
      reinterprets the same data (no copies are made) as the new type.
    • Implemented new backend: JIT. The backend generates and compiles at runtime
      ๐Ÿ‘ C++ kernels with OpenMP support. The code will not be more effective that
      hand-written OpenMP code, but allows to easily debug the generated code with
      โœ… host-side debugger. The backend also may be used to develop and test new code
      when other backends are not available.
    • Let VEX_CONSTANTS to be casted to their values in the host code. So that a
      constant defined with VEX_CONSTANT(name, expr) could be used in host code
      as name. Constants are still useable in vector expressions as name().
    • ๐Ÿ‘ Allow passing generated kernel args for each GPU (#202).
      Kernel args packed into std::vector will be unpacked and passed
      to the generated kernels on respective devices.
    • ๐Ÿ“œ Reimplemented vex::SpMat as vex::sparse::ell, vex::sparse::crs,
      ๐Ÿ“œ vex::sparse::matrix (automatically chooses one of the two formats based on
      ๐Ÿ“œ the current compute device), and vex::sparse::distributed<format> (this one
      may span several compute devices). The new matrix-vector products are now
      normal vector expressions, while the old vex::SpMat could only be used in
      โž• additive expressions. The old implementation is still available.
      ๐Ÿ“œ vex::sparse::ell is now converted from host-side CRS format on compute
      device, which makes the conversion faster.
    • ๐Ÿ› Bug fixes and minor improvements.