The 'num_threads' clause in a OpenMP pragma is not being checked to see if it
is a positive integer. An error should be return if it is not.
The OpenMP API Version 2.5 May 2005 on p. 28 lines 29-30 offers the following
restriction:
" * ... The num_threads expression must evaluate to a positive integer value."
$ cat bug2883.c
/* derived from ISU's RTED_OpenMP/C/Col3_Env_and_Claus_Errs/c_C_1_1_a.c test */
#include <omp.h>
#include <stdio.h>
#include <math.h>
int main() {
double s, pi;
int n_thread;
int actual_num_threads;
omp_set_num_threads(4);
s = 0;
pi = 4.0*atan(1.0);
n_thread = (int) (sin(-0.25*pi)*10.0);
printf("pi % 12.4f n_thread %d \n", pi, n_thread);
#pragma omp parallel default(none) shared(actual_num_threads)
num_threads(n_thread)
{
#pragma omp single
{
actual_num_threads = omp_get_num_threads();
}
}
printf("actual_num_threads = %d\n", actual_num_threads);
return 0;
}
$ gcc -o x -fopenmp bug2883.c -lm
$ ./x
pi 3.1416 n_thread -7
libgomp: Out of memory allocating 34359738400 bytes
$
--
Summary: A negative value in OpenMP clause num_threasds is not
detected at runtime
Product: gcc
Version: 4.2.1
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: geir at cray dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33720