Algorithmic approaches and data structures to efficiently exploit accelerators and many-core architectures