omp_printf.c revision bbd3dcf169ce6f368dd83586b867e804d4cb84f1
1bbd3dcf169ce6f368dd83586b867e804d4cb84f1bart/* Simple OpenMP test program that calls printf() from a parallel section. */ 2bbd3dcf169ce6f368dd83586b867e804d4cb84f1bart 3bbd3dcf169ce6f368dd83586b867e804d4cb84f1bart#include <omp.h> 4bbd3dcf169ce6f368dd83586b867e804d4cb84f1bart#include <stdio.h> 5bbd3dcf169ce6f368dd83586b867e804d4cb84f1bart#include <unistd.h> // getopt() 6bbd3dcf169ce6f368dd83586b867e804d4cb84f1bart 7bbd3dcf169ce6f368dd83586b867e804d4cb84f1bartstatic void usage(const char* const exe) 8bbd3dcf169ce6f368dd83586b867e804d4cb84f1bart{ 9bbd3dcf169ce6f368dd83586b867e804d4cb84f1bart printf("Usage: %s [-h] [-q] [-r] [-t<n>] <m>\n" 10bbd3dcf169ce6f368dd83586b867e804d4cb84f1bart "-h: display this information.\n" 11bbd3dcf169ce6f368dd83586b867e804d4cb84f1bart "-q: quiet mode -- do not print computed error.\n", 12bbd3dcf169ce6f368dd83586b867e804d4cb84f1bart exe); 13bbd3dcf169ce6f368dd83586b867e804d4cb84f1bart} 14bbd3dcf169ce6f368dd83586b867e804d4cb84f1bart 15bbd3dcf169ce6f368dd83586b867e804d4cb84f1bartint main(int argc, char** argv) 16bbd3dcf169ce6f368dd83586b867e804d4cb84f1bart{ 17bbd3dcf169ce6f368dd83586b867e804d4cb84f1bart int i; 18bbd3dcf169ce6f368dd83586b867e804d4cb84f1bart int optchar; 19bbd3dcf169ce6f368dd83586b867e804d4cb84f1bart int silent = 0; 20bbd3dcf169ce6f368dd83586b867e804d4cb84f1bart int tid; 21bbd3dcf169ce6f368dd83586b867e804d4cb84f1bart 22bbd3dcf169ce6f368dd83586b867e804d4cb84f1bart while ((optchar = getopt(argc, argv, "hq")) != EOF) 23bbd3dcf169ce6f368dd83586b867e804d4cb84f1bart { 24bbd3dcf169ce6f368dd83586b867e804d4cb84f1bart switch (optchar) 25bbd3dcf169ce6f368dd83586b867e804d4cb84f1bart { 26bbd3dcf169ce6f368dd83586b867e804d4cb84f1bart case 'h': usage(argv[0]); return 1; 27bbd3dcf169ce6f368dd83586b867e804d4cb84f1bart case 'q': silent = 1; break; 28bbd3dcf169ce6f368dd83586b867e804d4cb84f1bart default: 29bbd3dcf169ce6f368dd83586b867e804d4cb84f1bart return 1; 30bbd3dcf169ce6f368dd83586b867e804d4cb84f1bart } 31bbd3dcf169ce6f368dd83586b867e804d4cb84f1bart } 32bbd3dcf169ce6f368dd83586b867e804d4cb84f1bart 33bbd3dcf169ce6f368dd83586b867e804d4cb84f1bart#pragma omp parallel private(tid) 34bbd3dcf169ce6f368dd83586b867e804d4cb84f1bart for (i = 0; i < 2; i++) 35bbd3dcf169ce6f368dd83586b867e804d4cb84f1bart { 36bbd3dcf169ce6f368dd83586b867e804d4cb84f1bart tid = omp_get_thread_num(); 37bbd3dcf169ce6f368dd83586b867e804d4cb84f1bart if (! silent) 38bbd3dcf169ce6f368dd83586b867e804d4cb84f1bart { 39bbd3dcf169ce6f368dd83586b867e804d4cb84f1bart printf("omp_get_thread_num() = %d/%d\n", tid, omp_get_num_threads()); 40bbd3dcf169ce6f368dd83586b867e804d4cb84f1bart } 41bbd3dcf169ce6f368dd83586b867e804d4cb84f1bart else 42bbd3dcf169ce6f368dd83586b867e804d4cb84f1bart { 43bbd3dcf169ce6f368dd83586b867e804d4cb84f1bart printf("%s", ""); 44bbd3dcf169ce6f368dd83586b867e804d4cb84f1bart } 45bbd3dcf169ce6f368dd83586b867e804d4cb84f1bart } 46bbd3dcf169ce6f368dd83586b867e804d4cb84f1bart 47bbd3dcf169ce6f368dd83586b867e804d4cb84f1bart fprintf(stderr, "Finished.\n"); 48bbd3dcf169ce6f368dd83586b867e804d4cb84f1bart 49bbd3dcf169ce6f368dd83586b867e804d4cb84f1bart return 0; 50bbd3dcf169ce6f368dd83586b867e804d4cb84f1bart} 51