Skip to content

Releases: orxfun/orx-parallel

Direct Parallelization of VecDeque, SplitVec and FixedVec

20 May 08:38
adb876c
Compare
Choose a tag to compare

Upgrades the concurrent iterator dependency which will enable parallelization of the following additional collections:

  • alloc::collections::VecDeque
  • orx_split_vec::SplitVec
  • orx_fixed_vec::FixedVec

v2: Redesign parallelization traits

04 May 14:33
0fd9607
Compare
Choose a tag to compare

Parallel computation through iterators is re-designed.

  • Updates in the downstream crates are integrated, specifically the improvements in ConcurrentIter crate, v2.0, are benefited.
  • Functional compositions are re-designed. This led to improvements in performance, as well as, simplification of the code and implementations.
    • In order to achieve this, required abstractions over values and arrays (in the mathematical sense) is defined. This allows us to perform on a value or a collection of values using the same generic code, while the actual implementation is monomorphized and optimized under the hood.
    • With this design, we are required to have only four generic computational variants of the iterators without loss of performance:
      • empty -> this is equivalent to the input concurrent iterator source, no computation is defined over it yet.
      • map -> this is a map operation on the input in the classical sense
      • xap -> this on the other hand is a map with superpowers, it is a generalization of (i) one-to-one map, (ii) filter-map and (iii) flat-map operations.
      • xap-filter-xap -> finally, this is a sequence of xap, followed by a filter, followed by another xap.
    • These four variants are sufficient to represent all possible iterator compositions without loss of performance due to abstraction.
  • Significant performance improvements achieved and reported.
  • The concepts defined in orx_iterable are brought to this crate defining traits such as IntoParIter, Parallelizable and ParallelizableCollection.
  • Extensibility of input collections through concurrent iterators is defined.
  • ParallelRunner is converted into a trait. This allows for customization of the parallel executor. Therefore, it enables improvements in performance in parallel workstreams. Meanwhile, a performant default parallel executor is provided.
  • The complexity of collecting ordered or in-arbitrary-order is resolved using the CollectOrder parameter.
  • The api is extended by enabling new methods such as inspect.
  • Contribution guideline is revised.
  • GenericIterator defined mainly for experimentation purposes. GenericIterator is a generalization of sequential iterators, rayon's parallel iterators and orx-parallel's parallel iterators. The computation can be defined as a composition of iterator transformations in the same way and can be executed with either of the variants.
  • ci.yml is added.
  • Fixes #16
  • Fixes #26

Upgrade PseudoDefault dependency

11 Feb 15:46
be3d691
Compare
Choose a tag to compare
Merge pull request #49 from orxfun/Upgrade-PseudoDefault-dependency

Upgrade PseudoDefault dependency

Dual license

08 Feb 18:35
d352d26
Compare
Choose a tag to compare
Merge pull request #48 from orxfun/dual-license

dual license

Use of Collection constrained PinnedVecs

31 Jan 00:07
c556a65
Compare
Choose a tag to compare

Upgraded pinned vectors to v3.12

Upgraded dependencies with no_std support

08 Sep 19:32
a2af2ff
Compare
Choose a tag to compare
1.11.0

Merge pull request #44 from orxfun/upgraded-dependencies-with-no_std-…

Unordered iteration is revisited

05 Sep 16:21
c3f0c64
Compare
Choose a tag to compare

Unordered iteration is revisited

  • Upgraded the dependency to concurrent iterator to 1.27.0; see the release notes.
  • Syntax for creating a parallel iterator from a sequential iterator is fixed.
    • prior: inputs.into_con_iter().into_par().
    • new: inputs.iter().par()
  • Parallel reductions use transformation into ConcurrentIterX to have the performance benefits whenever possible.
  • collect_x executions use transformation into ConcurrentIterX to have the performance benefits whenever possible.

ConIterOfIter simplification and performance

02 Sep 14:26
65e3315
Compare
Choose a tag to compare

Additionally iter-map-collect benchmarks are defined.

Upgrade queue and iter deps

01 Sep 11:07
b2afcd1
Compare
Choose a tag to compare

With these upgrades, all failing miri tests pass.

  • orx-priority-queue = "1.3"
  • orx-concurrent-iter = "1.25"

ConVecIter early exit memory leak issue is fixed

29 Aug 09:50
69b3405
Compare
Choose a tag to compare