Permalink
Commits on Sep 27, 2018
  1. Update SDK to ComputeCpp v1.0.1

    DuncanMcBain committed Sep 27, 2018
    The workaround for the reinterpret feature has been removed, as it
    is no longer necessary.
  2. Change PATH to HINTS in FindComputeCpp.cmake

    DuncanMcBain committed Sep 27, 2018
    When using PATH in calls to find_program (and friends), the system
    path is searched before the directory specified in PATH. This
    behaviour rarely produces a result different to what the user expects
    but can occasionally, so using HINTS instead will make CMake check
    the user-specified directory first.
Commits on Sep 12, 2018
  1. Update depfile generation for device compiler

    DuncanMcBain committed Sep 12, 2018
    Ninja has a problem if the name of the object doesn't match what it
    expects, so this changes the generation to output a relative path, not
    an absolute one. Additionally, the quotes in the optional DEPFILE
    variable were causing problems, so they have also been removed.
    
    Many thanks to @jwlawson for finding and fixing this.
Commits on Sep 7, 2018
  1. Update exception handling in parallel for sample

    DuncanMcBain committed Sep 7, 2018
    The correct exception types are now caught by the catch clauses.
    Additionally we catch by const&.
Commits on Sep 3, 2018
  1. Remove -isystem from device compiler command

    DuncanMcBain committed Sep 3, 2018
    This was causing issues if you installed ComputeCpp to a system
    directory (like /usr). It was necessary in old code, but isn't
    needed any more since we get all includes from the target that is
    being compiled.
Commits on Jul 5, 2018
  1. Update SDK to ComputeCpp v0.9.0

    DuncanMcBain committed Jul 5, 2018
    Obviously, the Travis change. Slightly less obviously, the debug
    build of ComputeCpp for Windows (which links against the debug CRT)
    is missing from the package. If you are building on Windows, you
    might get link errors for debug builds, or possibly even runtime
    crashes. If you do run into any errors, please let us know. It will
    be fixed in a subsequent release.
Commits on Jul 4, 2018
  1. Remove -emit-llvm from compiler flags

    DuncanMcBain committed Jul 4, 2018
    This old flag is no longer required. It will eventually be removed
    from computecpp_info, but until then we can filter it out.
Commits on Jun 28, 2018
  1. Add crosscompilation toolchains to SDK

    DuncanMcBain committed Jun 28, 2018
    Bright-eyed watchers might have noticed that the previous
    FindComputeCpp.cmake changes added some small support for
    crosscompilation. These toolchain files require environment
    variables to be set to identify the location of the tools.
    From there, everything should be automatic!
Commits on Jun 25, 2018
  1. Update Travis configuration (#122)

    DuncanMcBain committed Jun 25, 2018
    Unfortunately we install an old version of CMake while travis appears
    to have a nice new one preinstalled which we should use instead.
    
    The previous changeset changed the CXX standard to a global
    property. It appears it is still broken in the version of CMake
    used on Travis, regrettably.
  2. Update CMake version required

    DuncanMcBain committed Jun 25, 2018
    The minimum version of CMake needed is now 3.4.3. This version is
    still quite old, and is required by some other projects (e.g. LLVM).
    This might be a problem if you are still on Ubuntu 14.04 - please
    let us know if you are.
Commits on Jun 22, 2018
  1. Modernise FindComputeCpp.cmake (#118)

    DuncanMcBain committed Jun 22, 2018
    This is a very large update to FindComputeCpp.cmake that brings with
    it (regrettably) some API changes. See the samples for details, but
    the short story is that the add_sycl_to_target function now takes
    named parameters, which has helped a lot. Additionally, there have
    been bugfixes in the internals of the module, meaning that the include-
    after property is more well-behaved.
    
    The other change that is most likely to affect users is the way in which
    different bitcode outputs are selected. Previously different options
    like "USE_PTX" or similar could be specified, but now an actual value
    must be set, and defaults to spir64. This requires a little more work
    on the part of the user when a different kind of IR is needed but is
    more robust.
Commits on Jun 19, 2018
  1. Fix OpenCL interop sample

    DuncanMcBain committed Jun 19, 2018
    The sample doesn't specifically need a GPU device, it just needs
    any OpenCL device that can consume SPIR and OpenCL C. The easiest
    way to do this is to use the default selector and bail out if it
    is running on a host device (which can't do much with the OpenCL
    C kernel).
Commits on May 15, 2018
  1. Update SDK to ComputeCpp v0.8.0 (#115)

    DuncanMcBain committed May 15, 2018
    The hierarchical samples now have the required h_item. Other samples
    have had updates to their vector code, as single-element swizzles now
    return 1-d vectors, not scalars, so require some coercing.
    
    Additionally the travis config was slightly updated again, hopefully
    to be even more robust with regards to the new ComputeCpp version.
Commits on Apr 16, 2018
  1. Update SDK to ComputeCpp v0.7.0

    DuncanMcBain committed Apr 16, 2018
Commits on Apr 12, 2018
  1. Add new reinterpret buffer sample code

    DuncanMcBain committed Apr 12, 2018
    This new sample shows how the reinterpret buffer feature works. It
    also shows a minor workaround required for the current version of
    ComputeCpp related to dependency checking and reinterpreted buffers.
    
    The sample shows how you can manipulate floating-point numbers as
    though they are integers. Who knows, maybe your hardware doesn't
    have an FP unit?
Commits on Apr 3, 2018
  1. Use offset variable in for loop limits

    DuncanMcBain committed Apr 3, 2018
  2. Fix warnings and typos in samples and tests

    DuncanMcBain committed Apr 3, 2018
    Various small fixes have been implemented in this commit, including:
    
    * A comment that hadn't been updated to reflect 1.2.1 changes
    * A sneaky extraneous semicolon
    * some unused variables and using statements in tests
    * and some unsigned/signed comparisons.
Commits on Mar 9, 2018
  1. Update SDK for next version of ComputeCpp

    DuncanMcBain committed Feb 27, 2018
    Samplers now have an enum specifying if they are normalised or not.
    Much clearer than a bool.
    
    A larger change is that buffer::get_access() - the function to call
    when getting a host accessor - doesn't need the template parameter
    access::target::host_buffer, because it is unambiguous (the function
    doesn't take a handler, unlike all other get_accesses). This is a
    breaking change that has affected a lot of code.
    
    The multi-pointer class does not have operator[] in SYCL 1.2.1, so
    it has been removed. This was used in the Virtual Pointer class of
    the SDK, so users of the vptr will need to follow these changes.
    It is simpler now, as we simply get() the OpenCL raw pointer.
    
    Additionally, a formatting pass was applied over the repository,
    which has inflated the size of the diff somewhat.
Commits on Mar 7, 2018
  1. Fix misleading variable name in interop sample

    DuncanMcBain committed Mar 7, 2018
    The variable implied that the precision between the host and the device
    might be different. This is wrong, as the precision is constant. The
    accuracy, however, of the device, is what is under test.
Commits on Feb 28, 2018
  1. Fix MSVC lambda capture bug #95

    DuncanMcBain committed Feb 28, 2018
    MSVC captures the constexpr variable stddev in the submit lambda,
    which means that inside the lambda it is not constexpr. Adding
    static means that it is no longer captured and the code will work.
Commits on Feb 14, 2018
  1. Update SDK to ComputeCpp v0.5.1 (#89)

    DuncanMcBain committed Feb 14, 2018
    The only interface change has been to the kernel class, which now
    requires a context.
Commits on Jan 19, 2018
  1. Update SDK to ComputeCpp v0.5.1 (#85)

    DuncanMcBain committed Jan 19, 2018
    More 1.2.1 changes have been integrated, though we're not 100% there
    yet. Old code will continue to work but will show deprecation messages
    (which I don't think are useful to see when building the SDK).
    
    The opportunity was taken to update the Travis configuration such
    that the download script now places ComputeCpp into a known location.
    From now on, only the download script should require updates when a
    new version of ComputeCpp is released.
Commits on Jan 11, 2018
  1. Fix misleading output from FindComputeCpp.cmake

    DuncanMcBain committed Jan 11, 2018
Commits on Jan 5, 2018
  1. Change auto to float in Gaussian blur

    DuncanMcBain committed Jan 5, 2018
    Doubles are not core in SYCL, so usage of them can fail. Unfortunately
    a driver we support has less than stable behaviour when encountering
    them on hardware that doesn't support it, choosing to segfault. This
    change forces the variable pi to be a float, as auto will deduce the
    return value of atan() to be double otherwise. Roll on constexpr maths,
    I say!
Commits on Dec 26, 2017
  1. Further improve the Gaussian blur sample

    DuncanMcBain committed Dec 26, 2017
    The previous change introduced a massive performance penalty that caused
    extreme slowdown in the travis testing. This altered version should be
    faster (though is still not well optimised).
Commits on Dec 25, 2017
  1. Add include-after support to MSVC (#76)

    DuncanMcBain committed Dec 25, 2017
    Previously the method of including the integration header after the user
    source only worked for clang/gcc. It is possible to use a similar flag
    on Windows, /TP, which indicates that all files should be compiled as
    C++.
    
    Thanks to Thales for removing the need for separate _ih projects in VS.
Commits on Dec 8, 2017
  1. Add is_valid_kernel_arg type trait

    DuncanMcBain committed Nov 15, 2017
    This type trait can be used to determine whether a type can be used
    as an argument to a kernel or not. This might enable useful enable_if
    tricks or similar for library code.
  2. Improve gaussian blur sample

    DuncanMcBain committed Dec 8, 2017
    The gaussian blur wasn't actually a gaussian. It is now.
Commits on Dec 6, 2017
  1. Update the SDK to ComputeCpp v0.5.0 (#71)

    DuncanMcBain committed Dec 6, 2017
    Some 1.2.1 features are missing and therefore are yet to change
    (updates to the image normalisation flags for samplers for example).
Commits on Nov 15, 2017
  1. Update SDK to version 0.4.0 of ComputeCpp (#66)

    DuncanMcBain committed Nov 15, 2017
    Updates to 0.4.0 and re-enables clang testing.
Commits on Nov 10, 2017
  1. Update README with more accurate information

    DuncanMcBain committed Nov 10, 2017
Commits on Nov 7, 2017
  1. Reorganise SDK contents (#62)

    DuncanMcBain committed Nov 7, 2017
    This change moves around many of the SDK files, with several goals in
    mind:
    * Make it easier to use code in external projects
    * Reflect a slightly updated naming convention
    * Make it easier to build and test everything in the SDK
    
    These goals are satisfied by this commit. In addition, various smaller
    improvements have been made, like some fixes to names that were
    incorrect inside source files, some CMake changes and formatting
    updates. The changeset is large, but the most important configuration
    change is the presence of the new "COMPUTECPP_SDK_BUILD_TESTS", which,
    when true, will cause build files for the tests (found in tests/vptr and
    tests/legacy-pointer) to be produced.
    
    This changeset also fixes the Travis config for 0.3.3.
    This will need to be partially reverted on the next release,
    as the name of the ComputeCpp install will change slightly.
Commits on Oct 20, 2017
  1. Reformat with clang-3.9

    DuncanMcBain committed Oct 20, 2017
    The clang-format style file has been updated to work with clang-3.9,
    and the repository has been formatted accordingly. This required some
    changes to be made to the code to fit the formatting as well as some
    changes to the style, but this appears to have kept the formatting as
    similar as possible while still conforming to the output from
    clang-format. No pre-commit hooks have yet been added.
Commits on Oct 10, 2017
  1. Add include-after CMake property

    DuncanMcBain committed Oct 10, 2017
    This CMake change allows the user to specify that their integration
    headers should appear before after the main code of the source file.
    This allows users to put enums in the template arguments of their
    kernels, even though this is not stricly legal in SYCL code (but lots
    of existing code does it).
    
    This is not on by default, because it requires that all kernels used
    *must* have a forward definition visible to the host compiler inside
    the integration header. For example, you can't have a class local to
    a function, or more specifically something like:
        cgh.parallel_for<class kernel_name>(range, [=]() { ... });
    
    This is an advanced property and is unlikely to be required by most
    developers, but is there for the special cases.