In order to implement several functions in a portable manner across the backends, thrust is used as the abstraction of choice. This may, however, limit extending support to other possible libraries making it desirable to reduce the coupling to thrust. Throughout the whole code base, the following classes and functions are used:
Header algorithm:
Header execution:
Header functional:
Header iterator:
Header utility:
Other Headers:
Note: The examples may still make use of thrust to demonstrate interoperability.
In order to implement several functions in a portable manner across the backends, thrust is used as the abstraction of choice. This may, however, limit extending support to other possible libraries making it desirable to reduce the coupling to thrust. Throughout the whole code base, the following classes and functions are used:
Header
algorithm:all_ofcopycopy_ifcount_ifequalfill: Only used infor_eachstdgpu::for_each_indeximplementation.generatereducesequencesorttabulatetransform: Only used intransform_reducestdgpu::transform_reduce_indeximplementation.Header
execution:: Only used as object alias fordevicestdgpu::execution::device.: Only used as object alias forhoststdgpu::execution::host.Header
functional:equal_to<>identity<>plus<>Header
iterator:: Only used incounting_iteratorstdgpu::for_each_indexandstdgpu::transform_reduce_indeximplementation.: Implementation detail used fordiscard_iteratoriterator_adaptor.distance: Only used in implementation ofiterator_adaptorthrust-compatible container iterators.: Only used intransform_iteratorstdgpu::transform_rangeimplementation.zip_iteratorHeader
utility:: Only used as typedef forpairstdgpu::pair.tupleOther Headers:
randomNote: The
examplesmay still make use ofthrustto demonstrate interoperability.