Пример #1
0
void merge(long n, T left[n], T right[n], T result[n*2], long start, long length) {
        if (length < MIN_MERGE_SIZE*2L) {
		// Una tasca de tareador por cada llamada


                // Base case
#if _EXTRAE_
                Extrae_event(PROGRAM, MERGE);
#endif
#if _TAREADOR_
		tareador_start_task("basemerge");
#endif
                basicmerge(n, left, right, result, start, length);
#if _TAREADOR_
		tareador_end_task();
#endif
#if _EXTRAE_
                Extrae_event(PROGRAM, END);
#endif
        } else {
                // Recursive decomposition
#if _TAREADOR_
		tareador_start_task("mergeinside1");
#endif
                merge(n, left, right, result, start, length/2);
#if _TAREADOR_
		tareador_end_task();
		tareador_start_task("mergeinside2");
#endif
                merge(n, left, right, result, start + length/2, length/2);
#if _TAREADOR_
		tareador_end_task();
#endif
        }
}
Пример #2
0
void merge(long n, T left[n], T right[n], T result[n*2], long start, long length) {
        if (length < MIN_MERGE_SIZE*2L) {
                // Base case
		basicmerge(n, left, right, result, start, length);
        } else {
                // Recursive decomposition
		#pragma omp task
                merge(n, left, right, result, start, length/2);
		#pragma omp task
                merge(n, left, right, result, start + length/2, length/2);
        }
}
Пример #3
0
void merge(long n, T left[n], T right[n], T result[n*2], long start, long length) {
  if (length < MIN_MERGE_SIZE*2L) {
    // Base case
    tareador_start_task("BaseCaseMerge");
    basicmerge(n, left, right, result, start, length);
    tareador_end_task("BaseCaseMerge");
  } 
  else {
    // Recursive decomposition
    tareador_start_task("RecursiveMerge");
    merge(n, left, right, result, start, length/2);
    merge(n, left, right, result, start + length/2, length/2);
    tareador_end_task("RecursiveMerge");
  }
}
Пример #4
0
void merge(long n, T left[n], T right[n], T result[n*2], long start, long length) {
        if (length < MIN_MERGE_SIZE*2L) {
                // Base case
#if _EXTRAE_
                Extrae_event(PROGRAM, MERGE);
#endif
                basicmerge(n, left, right, result, start, length);
#if _EXTRAE_
                Extrae_event(PROGRAM, END);
#endif
        } else {
                // Recursive decomposition
	        #pragma omp task
                merge(n, left, right, result, start, length/2);
		#pragma omp task
                merge(n, left, right, result, start + length/2, length/2);
		#pragma omp taskwait
        }
}
void merge(long n, T left[n], T right[n], T result[n*2], long start, long length) {
    basicmerge(n, left, right, result, start, length);
}