Algorithm engineering for large data sets: hardware, software, algorithms