Fermat
|
This module provides a set of convenience wrappers to invoke system-wide CUB's parallel primitives without worrying about the memory management. All temporary storage is in fact allocated within a single thrust::system_vector passed by the user, which can be safely reused across function calls.
Classes | |
struct | cugar::for_each_enactor< system_tag > |
struct | cugar::for_each_enactor< device_tag > |
Functions | |
template<typename system_tag , typename PredicateIterator > | |
bool | cugar::any (const uint32 n, const PredicateIterator pred) |
template<typename system_tag , typename PredicateIterator > | |
bool | cugar::all (const uint32 n, const PredicateIterator pred) |
template<typename system_tag , typename Iterator > | |
bool | cugar::is_sorted (const uint32 n, const Iterator values) |
template<typename system_tag , typename Iterator , typename Headflags > | |
bool | cugar::is_segment_sorted (const uint32 n, const Iterator values, const Headflags flags) |
template<typename system_tag , typename Iterator , typename Functor > | |
void | cugar::for_each (const uint64 n, const Iterator in, Functor functor) |
template<typename system_tag , typename Iterator , typename Output , typename Functor > | |
void | cugar::transform (const uint32 n, const Iterator in, const Output out, const Functor functor) |
template<typename system_tag , typename Iterator1 , typename Iterator2 , typename Output , typename Functor > | |
void | cugar::transform (const uint32 n, const Iterator1 in1, const Iterator2 in2, const Output out, const Functor functor) |
template<typename system_tag , typename InputIterator , typename BinaryOp > | |
std::iterator_traits< InputIterator >::value_type | cugar::reduce (const uint32 n, InputIterator in, BinaryOp op, cugar::vector< system_tag, uint8 > &temp_storage) |
template<typename system_tag , typename InputIterator , typename OutputIterator , typename BinaryOp > | |
void | cugar::inclusive_scan (const uint32 n, InputIterator in, OutputIterator out, BinaryOp op, cugar::vector< system_tag, uint8 > &temp_storage) |
template<typename system_tag , typename InputIterator , typename OutputIterator , typename BinaryOp , typename Identity > | |
void | cugar::exclusive_scan (const uint32 n, InputIterator in, OutputIterator out, BinaryOp op, Identity identity, cugar::vector< system_tag, uint8 > &temp_storage) |
template<typename system_tag , typename InputIterator , typename FlagsIterator , typename OutputIterator > | |
uint32 | cugar::copy_flagged (const uint32 n, InputIterator in, FlagsIterator flags, OutputIterator out, cugar::vector< system_tag, uint8 > &temp_storage) |
template<typename system_tag , typename InputIterator , typename OutputIterator , typename Predicate > | |
uint32 | cugar::copy_if (const uint32 n, InputIterator in, OutputIterator out, const Predicate pred, cugar::vector< system_tag, uint8 > &temp_storage) |
template<typename system_tag , typename InputIterator , typename OutputIterator , typename CountIterator > | |
uint32 | cugar::runlength_encode (const uint32 n, InputIterator in, OutputIterator out, CountIterator counts, cugar::vector< system_tag, uint8 > &temp_storage) |
template<typename system_tag , typename KeyIterator , typename ValueIterator , typename OutputKeyIterator , typename OutputValueIterator , typename ReductionOp > | |
uint32 | cugar::reduce_by_key (const uint32 n, KeyIterator keys_in, ValueIterator values_in, OutputKeyIterator keys_out, OutputValueIterator values_out, ReductionOp reduction_op, cugar::vector< system_tag, uint8 > &temp_storage) |
template<typename system_tag , typename KeyIterator , typename ValueIterator , typename OutputIterator > | |
void | cugar::lower_bound (const uint32 n, ValueIterator values, const uint32 n_keys, KeyIterator keys, OutputIterator indices) |
template<typename system_tag , typename KeyIterator , typename ValueIterator , typename OutputIterator > | |
void | cugar::upper_bound (const uint32 n, ValueIterator values, const uint32 n_keys, KeyIterator keys, OutputIterator indices) |
template<typename system_tag , typename KeyIterator > | |
void | cugar::radix_sort (const uint32 n, KeyIterator keys, cugar::vector< system_tag, uint8 > &temp_storage) |
template<typename system_tag , typename KeyIterator , typename ValueIterator > | |
void | cugar::radix_sort (const uint32 n, KeyIterator keys, ValueIterator values, cugar::vector< system_tag, uint8 > &temp_storage) |
template<typename system_tag , typename key_iterator1 , typename key_iterator2 , typename value_iterator1 , typename value_iterator2 , typename key_output , typename value_output > | |
void | cugar::merge_by_key (const uint32 A_len, const uint32 B_len, const key_iterator1 A_keys, const key_iterator2 B_keys, const value_iterator1 A_values, const value_iterator2 B_values, key_output C_keys, value_output C_values, cugar::vector< system_tag, uint8 > &temp_storage) |
bool cugar::all | ( | const uint32 | n, |
const PredicateIterator | pred | ||
) |
return true if all items in the range [0,n) evaluate to true
bool cugar::any | ( | const uint32 | n, |
const PredicateIterator | pred | ||
) |
return true if any item in the range [0,n) evaluates to true
uint32 cugar::copy_flagged | ( | const uint32 | n, |
InputIterator | in, | ||
FlagsIterator | flags, | ||
OutputIterator | out, | ||
cugar::vector< system_tag, uint8 > & | temp_storage | ||
) |
system-wide copy of flagged items
n | number of input items |
in | a system input iterator |
flags | a system flags iterator |
out | a system output iterator |
temp_storage | some temporary storage |
uint32 cugar::copy_if | ( | const uint32 | n, |
InputIterator | in, | ||
OutputIterator | out, | ||
const Predicate | pred, | ||
cugar::vector< system_tag, uint8 > & | temp_storage | ||
) |
system-wide copy of predicated items
n | number of input items |
in | a system input iterator |
out | a system output iterator |
pred | a unary predicate functor |
temp_storage | some temporary storage |
void cugar::exclusive_scan | ( | const uint32 | n, |
InputIterator | in, | ||
OutputIterator | out, | ||
BinaryOp | op, | ||
Identity | identity, | ||
cugar::vector< system_tag, uint8 > & | temp_storage | ||
) |
system-wide exclusive scan
n | number of items to reduce |
in | a system input iterator |
out | a system output iterator |
op | the binary reduction operator |
identity | the identity element |
temp_storage | some temporary storage |
void cugar::for_each | ( | const uint64 | n, |
const Iterator | in, | ||
Functor | functor | ||
) |
invoke a functor for each element of the given sequence
void cugar::inclusive_scan | ( | const uint32 | n, |
InputIterator | in, | ||
OutputIterator | out, | ||
BinaryOp | op, | ||
cugar::vector< system_tag, uint8 > & | temp_storage | ||
) |
system-wide inclusive scan
n | number of items to reduce |
in | a system input iterator |
out | a system output iterator |
op | the binary reduction operator |
temp_storage | some temporary storage |
bool cugar::is_segment_sorted | ( | const uint32 | n, |
const Iterator | values, | ||
const Headflags | flags | ||
) |
return true if the items in the range [0,n) are sorted by segment, where the beginning of each segment is identified by a set head flag
bool cugar::is_sorted | ( | const uint32 | n, |
const Iterator | values | ||
) |
return true if the items in the range [0,n) are sorted
void cugar::lower_bound | ( | const uint32 | n, |
ValueIterator | values, | ||
const uint32 | n_keys, | ||
KeyIterator | keys, | ||
OutputIterator | indices | ||
) |
system-wide lower_bound
n | number of input items |
values | a system input iterator of values to be searched |
n_keys | number of sorted keys |
keys | a system input iterator of sorted keys |
indices | a system output iterator |
void cugar::merge_by_key | ( | const uint32 | A_len, |
const uint32 | B_len, | ||
const key_iterator1 | A_keys, | ||
const key_iterator2 | B_keys, | ||
const value_iterator1 | A_values, | ||
const value_iterator2 | B_values, | ||
key_output | C_keys, | ||
value_output | C_values, | ||
cugar::vector< system_tag, uint8 > & | temp_storage | ||
) |
merge two sequences by key
A_len | number of input items in the first sequence |
B_len | number of input items in the second sequence |
A_keys | a system input iterator of keys to be merged from the first sequence |
B_keys | a system input iterator of keys to be merged from the second sequence |
A_values | a system input iterator of values to be merged from the first sequence |
B_values | a system input iterator of values to be merged from the second sequence |
C_keys | a system output iterator to the final merged keys |
C_values | a system output iterator of the final merged values |
temp_storage | some temporary storage |
void cugar::radix_sort | ( | const uint32 | n, |
KeyIterator | keys, | ||
cugar::vector< system_tag, uint8 > & | temp_storage | ||
) |
system-wide radix-sort
n | number of input items |
keys | a system input iterator of keys to be sorted |
temp_storage | some temporary storage |
void cugar::radix_sort | ( | const uint32 | n, |
KeyIterator | keys, | ||
ValueIterator | values, | ||
cugar::vector< system_tag, uint8 > & | temp_storage | ||
) |
system-wide radix-sort by key
n | number of input items |
keys | a system input iterator of keys to be sorted |
values | a system input iterator of values to be sorted |
temp_storage | some temporary storage |
std::iterator_traits< InputIterator >::value_type cugar::reduce | ( | const uint32 | n, |
InputIterator | in, | ||
BinaryOp | op, | ||
cugar::vector< system_tag, uint8 > & | temp_storage | ||
) |
system-wide reduce
n | number of items to reduce |
in | a system iterator |
op | the binary reduction operator |
temp_storage | some temporary storage |
uint32 cugar::reduce_by_key | ( | const uint32 | n, |
KeyIterator | keys_in, | ||
ValueIterator | values_in, | ||
OutputKeyIterator | keys_out, | ||
OutputValueIterator | values_out, | ||
ReductionOp | reduction_op, | ||
cugar::vector< system_tag, uint8 > & | temp_storage | ||
) |
system-wide run-length encode
n | number of input items |
keys_in | a system input iterator |
values_in | a system input iterator |
keys_out | a system output iterator |
values_out | a system output iterator |
reduction_op | a reduction operator |
temp_storage | some temporary storage |
uint32 cugar::runlength_encode | ( | const uint32 | n, |
InputIterator | in, | ||
OutputIterator | out, | ||
CountIterator | counts, | ||
cugar::vector< system_tag, uint8 > & | temp_storage | ||
) |
system-wide run-length encode
n | number of input items |
in | a system input iterator |
out | a system output iterator |
counts | a system output count iterator |
temp_storage | some temporary storage |
void cugar::transform | ( | const uint32 | n, |
const Iterator | in, | ||
const Output | out, | ||
const Functor | functor | ||
) |
apply a functor to each element of the given sequence
void cugar::transform | ( | const uint32 | n, |
const Iterator1 | in1, | ||
const Iterator2 | in2, | ||
const Output | out, | ||
const Functor | functor | ||
) |
apply a binary functor to each pair of elements of the given sequences
void cugar::upper_bound | ( | const uint32 | n, |
ValueIterator | values, | ||
const uint32 | n_keys, | ||
KeyIterator | keys, | ||
OutputIterator | indices | ||
) |
system-wide upper_bound
n | number of input items |
values | a system input iterator of values to be searched |
n_keys | number of sorted keys |
keys | a system input iterator of sorted keys |
indices | a system output iterator |