void run_benchmark( void *vargs ) { struct bench_args_t *args = (struct bench_args_t *)vargs; #ifdef GEM5_HARNESS mapArrayToAccelerator( MACHSUITE_SORT_MERGE, "a", (void*)&args->a, sizeof(args->a)); invokeAcceleratorAndBlock(MACHSUITE_SORT_MERGE); #else ms_mergesort( args->a ); #endif }
void workload(TYPE *a) { #pragma HLS INTERFACE m_axi offset=slave port=a bundle=gmem #pragma HLS INTERFACE s_axilite port=a bundle=control #pragma HLS INTERFACE s_axilite port=return bundle=control int i, iterCount = SIZE / TILING_SIZE; for (i = 0; i < iterCount; i ++) { ms_mergesort(a + i * TILING_SIZE); } return; }
void compute(int flag, TYPE_INT a[UNROLL_FACTOR][JOBS_PER_UNROLL/WIDTH_FACTOR_INT]) { if (flag) { int i, m, start = 0, stop = TILING_SIZE; for (i = 0; i < UNROLL_FACTOR; i ++) { #pragma HLS unroll ms_mergesort(a[i]); } /* for (m = JOBS_PER_UNROLL; m < TILING_SIZE; m += m) { */ /* mergesort_label2: */ /* for(i = start; i < stop; i += m + m) { */ /* merge_reduce(a[0], i, i + m - 1, i + 2 * m - 1); */ /* } */ /* } */ } }