Beispiel #1
0
void omp_set_num_threads (int p1)
{
#if defined(DEBUG)
	fprintf (stderr, PACKAGE_NAME": omp_set_num_threads is at %p\n", omp_set_num_threads_real);
	fprintf (stderr, PACKAGE_NAME": omp_set_num_threads params %d\n", p1);
#endif

	if (omp_set_num_threads_real != NULL && EXTRAE_INITIALIZED())
	{
		Backend_ChangeNumberOfThreads (p1);

		Backend_Enter_Instrumentation (2);
		Probe_OpenMP_SetNumThreads_Entry (p1);
		omp_set_num_threads_real (p1);
		Probe_OpenMP_SetNumThreads_Exit ();
		Backend_Leave_Instrumentation ();
	}
	else if (omp_set_num_threads_real != NULL)
	{
		omp_set_num_threads_real (p1);
	}
	else
	{
		fprintf (stderr, PACKAGE_NAME": omp_set_num_threads is not hooked! exiting!!\n");
		exit (0);
	}
}
Beispiel #2
0
/*
	设置期望的线程数
*/
void omp_set_num_threads (int p1)
{
	Record_Event Event = Event_init ();
	Event.event_name = "omp_set_num_threads";
	Event.eid = 232;
	Event.type = NONE;
	Event.omp_rank = get_thread_num ();
	Event.omp_level = get_level ();
	Event.p_rank = omp_get_ancestor_thread_num (get_level () - 1);

	omp_set_num_threads_real = (void(*)(int)) dlsym (RTLD_NEXT, "omp_set_num_threads");

	if (omp_set_num_threads_real != NULL)
	{
		Event.starttime = gettime();
		omp_set_num_threads_real (p1);
		Event.endtime = gettime();
		Record (&Event, OMPI_TRACE);
	}
	else
	{
		printf_d ("omp_set_num_threads is not hooked! exiting!!\n");
	}
}