added some omp and loop unrolling