static void parse(FILE *fp) { int ch, s1, s2, s3; #define TESTD(s) { \ if ((s = getc(fp)) == EOF) \ return; \ if (!isdigit(s)) \ continue; \ } #define TESTP { \ if ((ch = getc(fp)) == EOF) \ return; \ if (ch != '|') \ continue; \ } #define MOVEC(t) { \ do { \ if ((ch = getc(fp)) == EOF) \ return; \ } while (ch != (t)); \ } for (;;) { MOVEC('"'); TESTD(s1); TESTD(s2); TESTD(s3); TESTP; putchar('"'); putchar(s1); putchar(s2); putchar(s3); putchar('|'); for (;;) { /* dump to end quote. */ if ((ch = getc(fp)) == EOF) return; putchar(ch); if (ch == '"') break; if (ch == '\\') { if ((ch = getc(fp)) == EOF) return; putchar(ch); } } putchar('\n'); } }
int main(void) { check_offloading(); double A[N+2], B[N+2], C[N+2], D[N+2], E[N+2]; INIT(); long cpuExec = 0; #pragma omp target map(tofrom: cpuExec) { cpuExec = omp_is_initial_device(); } int gpu_threads = 768; int cpu_threads = 32; int max_threads = cpuExec ? cpu_threads : gpu_threads; // // Test: Barrier in a serialized parallel region. // TESTD("omp target teams num_teams(1) thread_limit(33)", { PARALLEL_A() }, VERIFY(0, 1, B[i], i+1)); // // Test: Barrier in a parallel region. // for (int t = 1; t <= max_threads; t++) { int threads[1]; threads[0] = t; TESTD("omp target teams num_teams(1) thread_limit(max_threads)", { ZERO(B); PARALLEL_B5() }, VERIFY(0, threads[0]-1, B[i], 5));
void test() { TESTD("hg/x","m:hg/x:x"); TESTD("h0","-"); TESTD("h1/a1",":1"); TESTD("h2/a1/a2",":1:2"); TESTD("h3/a1/a2/a3",":1:2:3"); TESTD("h4/a1/a2/a3/a4",":1:2:3:4"); TESTD("h5/a1/a2/a3/a4/a5",":1:2:3:4:5"); TESTD("h6/a1/a2/a3/a4/a5/a6",":1:2:3:4:5:6"); }