LLVM OpenMP 20.0.0git
capacity_nthreads.cpp
Go to the documentation of this file.
1// RUN: %libomp-cxx-compile-and-run
2
3#include <omp.h>
4
5#include <algorithm>
6#include <cassert>
7#include <limits>
8#include <vector>
9
10// AIX runs out of resource in 32-bit if 4*omp_get_max_threads() is more
11// than 64 threads with the default stacksize.
12#if defined(_AIX) && !__LP64__
13#define MAX_THREADS 64
14#endif
15
16int main(int argc, char *argv[]) {
17 int N = std::min(std::max(std::max(32, 4 * omp_get_max_threads()),
18 4 * omp_get_num_procs()),
19 std::numeric_limits<int>::max());
20
21#if defined(_AIX) && !__LP64__
22 if (N > MAX_THREADS)
23 N = MAX_THREADS;
24#endif
25
26 std::vector<int> data(N);
27
28#pragma omp parallel for num_threads(N)
29 for (unsigned i = 0; i < N; ++i) {
30 data[i] = i;
31 }
32
33#pragma omp parallel for num_threads(N + 1)
34 for (unsigned i = 0; i < N; ++i) {
35 data[i] += i;
36 }
37
38 for (unsigned i = 0; i < N; ++i) {
39 assert(data[i] == 2 * i);
40 }
41
42 return 0;
43}
#define N
Definition: bug54082.c:13
void const char const char int ITT_FORMAT __itt_group_sync x void const char ITT_FORMAT __itt_group_sync s void ITT_FORMAT __itt_group_sync p void ITT_FORMAT p void ITT_FORMAT p no args __itt_suppress_mode_t unsigned int void size_t ITT_FORMAT d void ITT_FORMAT p void ITT_FORMAT p __itt_model_site __itt_model_site_instance ITT_FORMAT p __itt_model_task __itt_model_task_instance ITT_FORMAT p void ITT_FORMAT p void ITT_FORMAT p void size_t ITT_FORMAT d void ITT_FORMAT p const wchar_t ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s no args void ITT_FORMAT p size_t ITT_FORMAT d no args const wchar_t const wchar_t ITT_FORMAT s __itt_heap_function void size_t int ITT_FORMAT d __itt_heap_function void ITT_FORMAT p __itt_heap_function void void size_t int ITT_FORMAT d no args no args unsigned int ITT_FORMAT u const __itt_domain __itt_id ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain __itt_id ITT_FORMAT p const __itt_domain __itt_id __itt_timestamp __itt_timestamp ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain ITT_FORMAT p const __itt_domain __itt_string_handle unsigned long long ITT_FORMAT lu const __itt_domain __itt_string_handle unsigned long long ITT_FORMAT lu const __itt_domain __itt_id __itt_string_handle __itt_metadata_type size_t void * data
#define i
Definition: kmp_stub.cpp:87
int omp_get_max_threads()
int main()
Definition: test-touch.c:21