[Openmp-commits] [openmp] [OpenMP][AIX] Affinity implementation for AIX (PR #84984)

Xing Xue via Openmp-commits openmp-commits at lists.llvm.org
Fri Mar 15 08:24:12 PDT 2024


================
@@ -272,7 +275,30 @@ void __kmp_affinity_determine_capable(const char *env_var) {
   }
 }
 
-#endif // KMP_OS_LINUX && KMP_AFFINITY_SUPPORTED
+#elif KMP_OS_AIX
+void __kmp_affinity_determine_capable(const char *env_var) {
+  // All versions of AIX support bindprocessor().
+
+  size_t mask_size = __kmp_xproc / CHAR_BIT;
+  // Round up to byte boundary.
+  if (__kmp_xproc % CHAR_BIT)
+    ++mask_size;
+
+  // Round up to the mask_size_type boundary.
+  if (mask_size % sizeof(__kmp_affin_mask_size))
+    mask_size += sizeof(__kmp_affin_mask_size) -
+                 mask_size % sizeof(__kmp_affin_mask_size);
+  KMP_AFFINITY_ENABLE(mask_size);
+  KA_TRACE(10,
+           ("__kmp_affinity_determine_capable: "
+            "AIX OS affinity interface bindprocessor functional (mask size = "
+            "%" KMP_SIZE_T_SPEC ").\n",
+            __kmp_affin_mask_size));
+}
+
+#endif // KMP_OS_AIX
----------------
xingxue-ibm wrote:

Changed the code as per suggestion, thanks!

https://github.com/llvm/llvm-project/pull/84984


More information about the Openmp-commits mailing list