| // RUN: %libomp-compile-and-run |
| // RUN: %libomp-run | %python %S/check.py -c 'CHECK' %s |
| |
| #include <stdio.h> |
| #include <stdlib.h> |
| #include <string.h> |
| #include <omp.h> |
| |
| #define XSTR(x) #x |
| #define STR(x) XSTR(x) |
| |
| #define streqls(s1, s2) (!strcmp(s1, s2)) |
| |
| #define check(condition) \ |
| if (!(condition)) { \ |
| fprintf(stderr, "error: %s: %d: " STR(condition) "\n", __FILE__, \ |
| __LINE__); \ |
| exit(1); \ |
| } |
| |
| #define BUFFER_SIZE 1024 |
| |
| int main(int argc, char** argv) { |
| char buf[BUFFER_SIZE]; |
| size_t needed; |
| |
| omp_set_affinity_format("0123456789"); |
| |
| needed = omp_get_affinity_format(buf, BUFFER_SIZE); |
| check(streqls(buf, "0123456789")); |
| check(needed == 10) |
| |
| // Check that it is truncated properly |
| omp_get_affinity_format(buf, 5); |
| check(streqls(buf, "0123")); |
| |
| #pragma omp parallel |
| { |
| char my_buf[512]; |
| size_t needed = omp_capture_affinity(my_buf, 512, NULL); |
| check(streqls(my_buf, "0123456789")); |
| check(needed == 10); |
| // Check that it is truncated properly |
| omp_capture_affinity(my_buf, 5, NULL); |
| check(streqls(my_buf, "0123")); |
| } |
| |
| #pragma omp parallel num_threads(4) |
| { |
| omp_display_affinity(NULL); |
| } |
| |
| return 0; |
| } |
| |
| // CHECK: num_threads=4 0123456789 |