diff --git a/openmp/runtime/src/kmp_affinity.cpp b/openmp/runtime/src/kmp_affinity.cpp index 378e5aa296c41..f34e55555545f 100644 --- a/openmp/runtime/src/kmp_affinity.cpp +++ b/openmp/runtime/src/kmp_affinity.cpp @@ -3038,15 +3038,7 @@ static bool __kmp_affinity_create_cpuinfo_map(int *line, KMP_INFORM(AffParseFilename, "KMP_AFFINITY", "system info for topology"); // Get the number of SMT threads per core. - int retval = - lpar_get_info(LPAR_INFO_FORMAT1, &cpuinfo, sizeof(lpar_info_format1_t)); - if (!retval) - smt_threads = cpuinfo.smt_threads; - else { - CLEANUP_THREAD_INFO; - *msg_id = kmp_i18n_str_UnknownTopology; - return false; - } + smt_threads = syssmt(GET_NUMBER_SMT_SETS, 0, 0, NULL); // Allocate a resource set containing available system resourses. rsethandle_t sys_rset = rs_alloc(RS_SYSTEM); diff --git a/openmp/runtime/src/kmp_affinity.h b/openmp/runtime/src/kmp_affinity.h index 8e9e7667eb904..3dc2c84d53f77 100644 --- a/openmp/runtime/src/kmp_affinity.h +++ b/openmp/runtime/src/kmp_affinity.h @@ -322,6 +322,8 @@ class KMPHwlocAffinity : public KMPAffinity { #include #include #define VMI_MAXRADS 64 // Maximum number of RADs allowed by AIX. +#define GET_NUMBER_SMT_SETS 0x0004 +extern "C" int syssmt(int flags, int, int, int *); #endif class KMPNativeAffinity : public KMPAffinity { class Mask : public KMPAffinity::Mask {