1 // clang-format off 2 // RUN: %libomptarget-compile-generic 3 // RUN: env LIBOMPTARGET_INFO=16 \ 4 // RUN: %libomptarget-run-generic 2>&1 | %fcheck-generic --check-prefix=DEFAULT 5 // RUN: %libomptarget-compile-generic -g 6 // RUN: env LIBOMPTARGET_INFO=16 \ 7 // RUN: %libomptarget-run-generic 2>&1 | %fcheck-generic --check-prefix=DEFAULT 8 9 // REQUIRES: amdgpu 10 11 __attribute__((optnone)) int optnone() { return 1; } 12 13 int main() { 14 int N = optnone() * 4098 * 32; 15 16 // DEFAULT: [[NT:(128|256)]] (MaxFlatWorkGroupSize: [[NT]] 17 #pragma omp target teams distribute parallel for simd 18 for (int i = 0; i < N; ++i) { 19 optnone(); 20 } 21 // DEFAULT: [[NT:(128|256)]] (MaxFlatWorkGroupSize: [[NT]] 22 #pragma omp target teams distribute parallel for simd 23 for (int i = 0; i < N; ++i) { 24 optnone(); 25 } 26 // DEFAULT: [[NT:(128|256)]] (MaxFlatWorkGroupSize: [[NT]] 27 #pragma omp target teams distribute parallel for simd 28 for (int i = 0; i < N; ++i) { 29 optnone(); 30 } 31 // DEFAULT: [[NT:(128|256)]] (MaxFlatWorkGroupSize: [[NT]] 32 #pragma omp target 33 #pragma omp teams distribute parallel for 34 for (int i = 0; i < N; ++i) { 35 optnone(); 36 } 37 // DEFAULT: 42 (MaxFlatWorkGroupSize: 1024 38 #pragma omp target thread_limit(optnone() * 42) 39 #pragma omp teams distribute parallel for 40 for (int i = 0; i < N; ++i) { 41 optnone(); 42 } 43 // DEFAULT: 42 (MaxFlatWorkGroupSize: 42 44 #pragma omp target thread_limit(optnone() * 42) ompx_attribute(__attribute__((amdgpu_flat_work_group_size(42, 42)))) 45 #pragma omp teams distribute parallel for 46 for (int i = 0; i < N; ++i) { 47 optnone(); 48 } 49 // DEFAULT: 42 (MaxFlatWorkGroupSize: 42 50 #pragma omp target ompx_attribute(__attribute__((amdgpu_flat_work_group_size(42, 42)))) 51 #pragma omp teams distribute parallel for 52 for (int i = 0; i < N; ++i) { 53 optnone(); 54 } 55 // DEFAULT: MaxFlatWorkGroupSize: 1024 56 #pragma omp target 57 #pragma omp teams distribute parallel for num_threads(optnone() * 42) 58 for (int i = 0; i < N; ++i) { 59 optnone(); 60 } 61 // DEFAULT: MaxFlatWorkGroupSize: 1024 62 #pragma omp target teams distribute parallel for thread_limit(optnone() * 42) 63 for (int i = 0; i < N; ++i) { 64 optnone(); 65 } 66 // DEFAULT: MaxFlatWorkGroupSize: 1024 67 #pragma omp target teams distribute parallel for num_threads(optnone() * 42) 68 for (int i = 0; i < N; ++i) { 69 optnone(); 70 } 71 // DEFAULT: 9 (MaxFlatWorkGroupSize: 9 72 #pragma omp target 73 #pragma omp teams distribute parallel for num_threads(9) 74 for (int i = 0; i < N; ++i) { 75 optnone(); 76 } 77 // DEFAULT: 4 (MaxFlatWorkGroupSize: 4 78 #pragma omp target thread_limit(4) 79 #pragma omp teams distribute parallel for 80 for (int i = 0; i < N; ++i) { 81 optnone(); 82 } 83 // DEFAULT: 4 (MaxFlatWorkGroupSize: 4 84 #pragma omp target 85 #pragma omp teams distribute parallel for thread_limit(4) 86 for (int i = 0; i < N; ++i) { 87 optnone(); 88 } 89 // DEFAULT: 9 (MaxFlatWorkGroupSize: 9 90 #pragma omp target teams distribute parallel for num_threads(9) 91 for (int i = 0; i < N; ++i) { 92 optnone(); 93 } 94 // DEFAULT: 4 (MaxFlatWorkGroupSize: 4 95 #pragma omp target teams distribute parallel for simd thread_limit(4) 96 for (int i = 0; i < N; ++i) { 97 optnone(); 98 } 99 } 100 101