Komrade is a C++ template library for CUDA. Komrade allows you to program GPUs using an interface similar the C++ Standard Template Library (STL).
What is a C++ template library?
C++ templates are a way to write generic algorithms and data structures. A template library is simply a cohesive collection of such algorithms and data structures in a single package.
Do I need to build Komrade?
No. Since Komrade is a template library you just #include the appropriate header files into your .cu file and compile with nvcc.
What data structures does Komrade provide?
Currently Komrade provides komrade::host_vector and komrade::device_vector, which are analogous to std::vector in the STL and reside in the host/device memory. These vector data structures simplify memory management and transferring data between the host and device.
What algorithms does Komrade provide?
sorting: komrade::sort and komrade::sort_by_key
tranformations: komrade::transform
reductions: komrade::reduce and komrade::transform_reduce
scans: komrade::inclusive_scan, komrade::exclusive_scan, komrade::transform_inclusive_scan, etc.