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); } }
/* 设置期望的线程数 */ 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"); } }