void sim_village_par(struct Village *village)
{
	struct Village *vlist;

	// lowest level returns nothing
	// only for sim_village first call with village = NULL
	// recursive call cannot occurs
	if (village == NULL) return;

	/* Traverse village hierarchy (lower level first)*/
	vlist = village->forward;
	while(vlist)
	{
#pragma omp task untied
		sim_village_par(vlist);
		vlist = vlist->next;
	}

	/* Uses lists v->hosp->inside, and v->return */
	check_patients_inside(village);

	/* Uses lists v->hosp->assess, v->hosp->inside, v->population and (v->back->hosp->realloc) !!! */
	check_patients_assess_par(village);

	/* Uses lists v->hosp->waiting, and v->hosp->assess */
	check_patients_waiting(village);

#pragma omp taskwait

	/* Uses lists v->hosp->realloc, v->hosp->asses and v->hosp->waiting */
	check_patients_realloc(village);

	/* Uses list v->population, v->hosp->asses and v->h->waiting */
	check_patients_population(village);
}
Example #2
0
void sim_village_main_par(struct Village *top)
{
    long i;
hclib_pragma_marker("omp_to_hclib", "", "pragma553_omp_to_hclib");
    {
hclib_pragma_marker("omp", "parallel", "pragma555_omp_parallel");
        {
hclib_pragma_marker("omp", "single", "pragma557_omp_single");
            {
hclib_pragma_marker("omp", "task untied", "pragma559_omp_task");
                {
                    for (i = 0; i < sim_time; i++) sim_village_par(top);   
                }
            }
        }
    }
}
void sim_village_main_par(struct Village *top)
{
	long i;

#ifdef _OPENMP
		double start = omp_get_wtime();;
#endif

//#pragma omp parallel
//#pragma omp single
//#pragma omp task untied
	for (i = 0; i < sim_time; i++) sim_village_par(top);   

#ifdef _OPENMP
		double time = omp_get_wtime() - start;
		printf("OpenMP Work took %f sec.\n", time);
#endif
}
Example #4
0
void sim_village_main_par(struct Village *top)
{
    long i;
const unsigned long long full_program_start = current_time_ns();
{
#pragma omp parallel 
{
#pragma omp single 
{
#pragma omp task untied
{
                    for (i = 0; i < sim_time; i++) sim_village_par(top);   
                }
            }
        }
    } ; 
const unsigned long long full_program_end = current_time_ns();
printf("full_program %llu ns\n", full_program_end - full_program_start);

}