]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
Updated drd/tests/omp_printf:
authorBart Van Assche <bvanassche@acm.org>
Sun, 26 Jul 2009 09:04:42 +0000 (09:04 +0000)
committerBart Van Assche <bvanassche@acm.org>
Sun, 26 Jul 2009 09:04:42 +0000 (09:04 +0000)
- Added command-line options -i and -t to the omp_printf test program.
- Modified the OpenMP directive such that this test program no longer
  triggers a data race on the loop variable 'i'.
- Increased number of iterations and number of threads used during the
  test.
- Changed error filtering from filter_error_summary to filter_stderr.

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@10607

drd/tests/omp_printf.c
drd/tests/omp_printf.stderr.exp
drd/tests/omp_printf.vgtest

index 3066a44bcb8de2e2d9eed29eaa815d842c48b9bd..3f6f5fa9295adfaa6313369b3734ff8cff639f08 100644 (file)
@@ -1,15 +1,20 @@
 /* Simple OpenMP test program that calls printf() from a parallel section. */
 
+#include <assert.h>  // assert()
 #include <omp.h>
 #include <stdio.h>
+#include <stdlib.h>  // atoi()
 #include <unistd.h>  // getopt()
 
 static void usage(const char* const exe)
 {
-  printf("Usage: %s [-h] [-q] [-r] [-t<n>] <m>\n"
-         "-h: display this information.\n"
-         "-q: quiet mode -- do not print computed error.\n",
-         exe);
+  fprintf(stderr,
+          "Usage: %s [-h] [-i <n>] [-q] [-t<n>]\n"
+          "-h: display this information.\n"
+          "-i <n>: number of loop iterations.\n"
+          "-q: quiet mode -- do not print computed error.\n"
+          "-t <n>: number of OMP threads.\n",
+          exe);
 }
 
 int main(int argc, char** argv)
@@ -18,29 +23,45 @@ int main(int argc, char** argv)
   int optchar;
   int silent = 0;
   int tid;
+  int num_iterations = 2;
+  int num_threads = 2;
 
-  while ((optchar = getopt(argc, argv, "hq")) != EOF)
+  while ((optchar = getopt(argc, argv, "hi:qt:")) != EOF)
   {
     switch (optchar)
     {
     case 'h': usage(argv[0]); return 1;
+    case 'i': num_iterations = atoi(optarg); break;
     case 'q': silent = 1; break;
+    case 't': num_threads = atoi(optarg); break;
     default:
       return 1;
     }
   }
 
-#pragma omp parallel private(tid)
-  for (i = 0; i < 2; i++)
+  /*
+   * Not the most user-friendly way of error checking, but still better than
+   * no error checking.
+   */
+  assert(num_iterations > 0);
+  assert(num_threads > 0);
+
+  omp_set_num_threads(num_threads);
+  omp_set_dynamic(0);
+
+#pragma omp parallel for private(tid)
+  for (i = 0; i < num_iterations; i++)
   {
     tid = omp_get_thread_num();
     if (! silent)
     {
-      printf("omp_get_thread_num() = %d/%d\n", tid, omp_get_num_threads());
+      fprintf(stderr,
+              "iteration %d; thread number = %d; number of threads = %d\n",
+              i, tid, omp_get_num_threads());
     }
     else
     {
-      printf("%s", "");
+      fprintf(stderr, "%s", "");
     }
   }
 
index f711c765c9745f42058af91446a7c77e10c2dddb..a7089bb434c9dde3bb9fba2f44cbaee14d5a74af 100644 (file)
@@ -1 +1,4 @@
-ERROR SUMMARY: 8 errors from 8 contexts
+
+Finished.
+
+ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
index 664981b38004caa680e3a6fb1a69f2c37d6b9cd3..0725404a4272229ebffa21244cc038f41980cc73 100644 (file)
@@ -1,5 +1,4 @@
 prereq: ./run_openmp_test ./omp_printf
 prog: omp_printf
 vgopts: --check-stack-var=yes --read-var-info=yes
-args: -q
-stderr_filter: filter_error_summary
+args: -i 100 -q -t 10