Vikunja is a performance portable algorithm library that defines functions operating on ranges of elements for a variety of purposes . It supports the execution on multi-core CPUs and various GPUs. Vikunja uses alpaka to implement platform-independent primitives such as reduce or transform.
separate functions, which requires host memory pointers or device pointer in the namespaces vikunja::host and vikunja::device
allow to pass alpaka buffer instead plain pointer
use begin and end pointer instead begin pointer and size (use specialization tratis to specialize function for pointer types like random access pointer)
make vikunja compatible with pointers of the std library
Ideas:
vikunja::host
andvikunja::device
std
library