ARGOBOTS
140a356fc09a44696eb3487150e459266f9b5405
|
Go to the documentation of this file.
168 #ifdef HAVE_PTHREAD_SETAFFINITY_NP
171 #include <sys/param.h>
172 #include <sys/cpuset.h>
173 #include <pthread_np.h>
174 typedef cpuset_t cpu_set_t;
192 static inline int int_rem(
int a,
unsigned int b)
198 int ret = (a % int_b) + int_b;
199 return ret >= int_b ? (ret - int_b) : ret;
204 #ifdef HAVE_PTHREAD_SETAFFINITY_NP
205 int i, num_cores = 0;
208 int ret = pthread_getaffinity_np(native_thread,
sizeof(cpu_set_t), &cpuset);
211 for (i = 0; i < CPU_SETSIZE; i++) {
212 if (CPU_ISSET(i, &cpuset)) {
216 *p_num_cores = num_cores;
226 #ifdef HAVE_PTHREAD_SETAFFINITY_NP
228 int ret = pthread_getaffinity_np(native_thread,
sizeof(cpu_set_t), &cpuset);
231 int i, j, num_cpuids = 0;
232 for (i = 0; i < CPU_SETSIZE; i++) {
233 if (CPU_ISSET(i, &cpuset))
239 for (i = 0, j = 0; i < CPU_SETSIZE; i++) {
240 if (CPU_ISSET(i, &cpuset))
241 p_cpuset->
cpuids[j++] = i;
250 int *cpuids,
int *p_num_cpuids)
252 #ifdef HAVE_PTHREAD_SETAFFINITY_NP
254 int ret = pthread_getaffinity_np(native_thread,
sizeof(cpu_set_t), &cpuset);
257 int i, num_cpuids = 0;
258 for (i = 0; i < CPU_SETSIZE; i++) {
259 if (CPU_ISSET(i, &cpuset)) {
260 if (num_cpuids < max_cpuids) {
261 cpuids[num_cpuids] = i;
266 *p_num_cpuids = num_cpuids;
276 #ifdef HAVE_PTHREAD_SETAFFINITY_NP
289 int ret = pthread_setaffinity_np(native_thread,
sizeof(cpu_set_t), &cpuset);
301 pthread_t self_native_thread = pthread_self();
321 if (p_list->
num == 0) {
332 for (i = 0; i < p_list->
num; i++) {
334 uint32_t j, num_cpuids = 0, len_cpuids = 8;
343 for (j = 0; j < p_id_list->
num; j++) {
350 for (k = 0; k < num_cpuids; k++) {
357 if (num_cpuids == len_cpuids) {
359 sizeof(
int) * len_cpuids * 2,
370 if (num_cpuids != len_cpuids)
372 sizeof(
int) * num_cpuids,
397 pthread_t self_native_thread = pthread_self();
419 int max_cpuids,
int *cpuids,
#define ABT_ERR_SYS
Error code: an error related to system calls.
static ABTU_ret_err int ABTU_realloc(size_t old_size, size_t new_size, void **p_ptr)
ABTU_ret_err int ABTD_affinity_cpuset_apply(ABTD_xstream_context *p_ctx, const ABTD_affinity_cpuset *p_cpuset)
ABTU_ret_err int ABTD_affinity_cpuset_read(ABTD_xstream_context *p_ctx, int max_cpuids, int *cpuids, int *p_num_cpuids)
#define ABTI_CHECK_ERROR(abt_errno)
ABTI_global * gp_ABTI_global
static ABTU_ret_err int get_num_cores(pthread_t native_thread, int *p_num_cores)
#define ABTI_IS_ERROR_CHECK_ENABLED
static int int_rem(int a, unsigned int b)
static ABTU_ret_err int ABTU_malloc(size_t size, void **p_ptr)
void ABTD_affinity_init(const char *affinity_str)
#define ABTI_ASSERT(cond)
static ABTU_ret_err int ABTU_calloc(size_t num, size_t size, void **p_ptr)
#define ABT_SUCCESS
Error code: the routine returns successfully.
ABTD_affinity_id_list ** p_id_lists
static global_affinity g_affinity
#define ABT_TRUE
True constant for ABT_bool.
static ABTU_ret_err int apply_cpuset(pthread_t native_thread, const ABTD_affinity_cpuset *p_cpuset)
#define ABT_FALSE
False constant for ABT_bool.
void ABTD_affinity_cpuset_destroy(ABTD_affinity_cpuset *p_cpuset)
ABTD_affinity_list * ABTD_affinity_list_create(const char *affinity_str)
static void ABTU_free(void *ptr)
static ABTU_ret_err int create_cpuset(pthread_t native_thread, ABTD_affinity_cpuset *p_cpuset)
void ABTD_affinity_list_free(ABTD_affinity_list *p_list)
ABTU_ret_err int ABTD_affinity_cpuset_apply_default(ABTD_xstream_context *p_ctx, int rank)
static ABTU_ret_err int read_cpuset(pthread_t native_thread, int max_cpuids, int *cpuids, int *p_num_cpuids)
#define ABT_ERR_FEATURE_NA
Error code: unsupported feature.
ABTD_affinity_cpuset * cpusets
ABTD_affinity_cpuset initial_cpuset
void ABTD_affinity_finalize(void)