1 2 // Tile parititioning 3 Ok()4void Ok () 5 { 6 #pragma acc parallel num_gangs (10) num_workers(32) vector_length(32) 7 { 8 9 #pragma acc loop tile(*) gang vector 10 for (int ix = 0; ix < 10; ix++) 11 { 12 } 13 14 #pragma acc loop tile(*) 15 for (int ix = 0; ix < 10; ix++) 16 { 17 } 18 19 #pragma acc loop tile(*) gang 20 for (int ix = 0; ix < 10; ix++) 21 { 22 #pragma acc loop vector 23 for (int jx = 0; jx < 10; jx++) 24 ; 25 } 26 27 #pragma acc loop tile(*) 28 for (int ix = 0; ix < 10; ix++) 29 { 30 #pragma acc loop vector 31 for (int jx = 0; jx < 10; jx++) 32 ; 33 } 34 35 #pragma acc loop gang 36 for (int jx = 0; jx < 10; jx++) 37 { 38 #pragma acc loop tile(*) vector 39 for (int ix = 0; ix < 10; ix++) 40 { 41 } 42 43 #pragma acc loop tile(*) 44 for (int ix = 0; ix < 10; ix++) 45 { 46 } 47 } 48 49 #pragma acc loop tile(*) worker 50 for (int ix = 0; ix < 10; ix++) 51 { 52 #pragma acc loop vector 53 for (int jx = 0; jx < 10; jx++) 54 ; 55 } 56 } 57 } 58 Bad()59void Bad () 60 { 61 #pragma acc parallel num_gangs (10) num_workers(32) vector_length(32) 62 { 63 64 #pragma acc loop tile(*) gang vector /* { dg-message "containing loop" } */ 65 for (int ix = 0; ix < 10; ix++) 66 { 67 #pragma acc loop vector /* { dg-error "uses same" } */ 68 for (int jx = 0; jx < 10; jx++) 69 ; 70 } 71 72 #pragma acc loop tile(*) gang vector 73 for (int ix = 0; ix < 10; ix++) 74 { 75 #pragma acc loop auto /* { dg-warning "insufficient partitioning" } */ 76 for (int jx = 0; jx < 10; jx++) 77 ; 78 } 79 80 #pragma acc loop tile(*) auto /* { dg-warning "insufficient partitioning" } */ 81 for (int ix = 0; ix < 10; ix++) 82 { 83 #pragma acc loop worker 84 for (int jx = 0; jx < 10; jx++) 85 ; 86 } 87 88 #pragma acc loop worker /* { dg-message "containing loop" } */ 89 for (int jx = 0; jx < 10; jx++) 90 { 91 #pragma acc loop tile(*) gang vector /* { dg-error "incorrectly nested" } */ 92 for (int ix = 0; ix < 10; ix++) 93 { 94 } 95 96 #pragma acc loop tile(*) vector /* { dg-warning "insufficient partitioning" } */ 97 for (int ix = 0; ix < 10; ix++) 98 { 99 } 100 101 #pragma acc loop tile(*) /* { dg-warning "insufficient partitioning" } */ 102 for (int ix = 0; ix < 10; ix++) 103 { 104 } 105 } 106 } 107 } 108