Hi,
We have a problem regarding mkl threads and we really appreciate your valuable help. we are using mkl function calls in the nested parallel region below:
omp_set_num_threads( NUM_OF_THREADS ); omp_set_nested(1); omp_set_max_active_levels(2); #pragma omp parallel num_threads(2) { if (omp_get_thread_num() == 0){ mkl_set_num_threads_local(16); printf("My ID is %d\n", omp_get_thread_num()); cblas_dgemm(CblasRowMajor, CblasNoTrans, CblasNoTrans, m, n, p, 1, pA, p, pB, n, 0, pC1, n); }else{ mkl_set_num_threads_local(16); printf("My ID is %d\n", omp_get_thread_num()); cblas_dgemm(CblasRowMajor, CblasNoTrans, CblasNoTrans, m, n, p, 1, pD, p, pE, n, 0, pC2, n); } }
Using VTune Amplifier, we can verify that the correct number of 32 threads are produced. However, the output of the print statements is as follows:
My ID is 0 My ID is 1
It seems like we cannot access "mkl" threads using "omp_get_thread_num()". Is there any similar function for accessing thread IDs of mkl threads? Or is there a way to do that? (We need such information for affinity and thread placement decisions).
Thank you very much,
Sanaz