8000 Tags · skn123/vexcl · GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

Tags: skn123/vexcl

Tags

1.3.0

Toggle 1.3.0's commit message
* API breaking change: `vex::purge_kernel_caches()` family of functio…

…ns is

  renamed to `vex::purge_caches()` as the online cache now may hold objects of
  arbitrary type. The overloads that used to take
  `vex::backend::kernel_cache_key` now take `const vex::backend::command_queue&`.
* The online cache is now purged whenever `vex::Context` is destroyed. This
  allows for clean release of OpenCL/cuda contexts.
* Code for random number generators has been unified between OpenCL and CUDA
  backends.
* Fast Fourier Transform is now supported both for OpenCL and CUDA backends.
* `vex::backend::kernel` constructor now takes optional parameter with command
  line options.
* Performance of CLOGS algorithms has been improved.
* VEX_BUILTIN_FUNCTION macro has been made public.
* Minor bug fixes and improvements.

1.2.0

Toggle 1.2.0's commit message
* API breaking change: changed the definition of VEX_FUNCTION family …

…of macros.

  The previous versions are available as VEX_FUNCTION_V1.
* Wrapping code for [clogs](clogs.sourceforge.net) library is added by @bmerry
  (the author of clogs).
* vector/multivector iterators are now standard-conforming iterators.
* Other minor improvements and bug fixes.

1.1.2

Toggle 1.1.2's commit message
Fixed compilation with Visual Studio

1.1.1

Toggle 1.1.1's commit message
Sorting algorithms may take tuples of keys/values (in fact, any Boost…

….Fusion

sequence will do). One will have to explicitly specify the comparison functor
in this case. Both host and device variants of the comparison functor should
take 2n arguments, where n is the number of keys. The first n arguments
correspond to the left set of keys, and the second n arguments correspond to
the right set of keys. Here is an example that sorts values by a tuple of two
keys:

    vex::vector<int>    keys1(ctx, n);
    vex::vector<float>  keys2(ctx, n);
    vex::vector<double> vals (ctx, n);

    struct {
        VEX_FUNCTION(device, bool(int, float, int, float),
                "return (prm1 == prm3) ? (prm2 < prm4) : (prm1 < prm3);"
                );
        bool operator()(int a1, float a2, int b1, float b2) const {
            return std::make_tuple(a1, a2) < std::tuple(b1, b2);
        }
    } comp;

    vex::sort_by_key(std::tie(keys1, keys2), vals, comp);

1.1.0

Toggle 1.1.0's commit message
* `vex::SpMat<>`class uses CUSPARSE library on CUDA backend when

  `VEXCL_USE_CUSPARSE` macro is defined. This results in more effective sparse
  matrix-vector product, but disables inlining of SpMV operation.
* Provided an example of CUDA backend interoperation with Thrust.
* When `VEXCL_CHECK_SIZES` macro is defined to 1 or 2, then runtime checks for vector
  expression correctness are enabled (see ddemidov#81, ddemidov#82).
* Added `sort()` and `sort_by_key()` functions.
* Added `inclusive_scan()` and `exclusive_scan()` functions.
* Added `reduce_by_key()` function. Only works with single-device contexts.
* Added `convert_<type>()` and `as_<type>()` builtin functions for OpenCL backend.

1.0.0

Toggle 1.0.0's commit message
Version 1.0.0

* Added CUDA backend!

* vex::Filter::General: modifiable container for device filters.
* vex::Filter::Env supports OCL_POSITION environment variable.
* Vector views (reduction, permutation) are all work with vector expressions.
* Added vex::reshape() function for reshaping of multidimensional expressions.
* Added vex::cast() function for changing deduced type of an expression.
* Added vex::Filter::Extension and vex::Filter::GLSharing filters (thanks, @johneih!)
* Added VEXCL_SPLIT_MULTIEXPRESSIONS macro to allow componentwise splitting of
  large multiexpressions.
* Various bug fixes.

0.8.5

Toggle 0.8.5's commit message
* Sparse matrix-vector product for OpenCL vector types:

    vex::SpMat <cl_double2> A;
    vex::vector<cl_double2> x, y;
    y = A * x;

* Added raw_pointer() function. See 'Raw pointers' section in README.
* Fixed compilation for 32bit Visual Studio (thanks to @d-meiser for
  reporting!).
* Other bug fixes.

0.8.4-r1

Toggle 0.8.4-r1's commit message
* Bug fixes

0.8.4

Toggle 0.8.4's commit message
* Allow user-defined functions in symbolic expressions

* Introduced address-of and dereference operators in vector expressions
  This makes the following possible:

      // Assign 42 to either y or z, depending on value of x. The trick
      // with address_of/dereference is unfortunately required because
      // in C99 (which OpenCL is based on) result of ternary operator
      // is not an lvalue.
      vex::tie( *if_else( x < 0.5 ? &y : &z) ) = 42;

* vex::reduce() accepts slices of vector expressions. vex::reduce() calls may
  be nested.
* vex::element_index() optianally accepts length (number of elements). This
  allows to reduce stateless vector expressions. Could be useful e.g. for
  Monte-Carlo experiments.
* Added missing builtin functions.
* Introduced constants in vector expressions. Instances of
  std::integral_constant<T,v> or constants from vex::constants namespace (which
  are currently wrappers for boost::math::constants) will not be passed as
  kernel parameters, but will be written as literals to kernel source.
  Users may introduce their own constants with help of VEX_CONSTANT macro.

0.8.3

Toggle 0.8.3's commit message
* FFT transform may be used as if it was first-class vector expressio…

…n, and not

  only an additive expression.
* Allow to purge online kernel caches. This allows for complete cleanup of
  OpenCL contexts.
* Offline kernel caching. Saves time on first-time compilation.
0