[petsc-dev] [PATCH] Threadcomm: Add #include <sched.h> for cpu_set_t

Satish Balay balay at mcs.anl.gov
Thu May 1 15:52:08 CDT 2014


I believe this include is pulled in from pthreadclasses

openmp.py as:     self.deps = [self.pthreadclasses]

Is this a real dependency?

If so configure should enforce this.. [Its not doing this due to the
way configureLibrary() is used here]

The following would be the fix.. [which gives a generic error message
for pthreadclasses - this could be misleading..

>>>>>>
Did not find package PTHREADCLASSES needed by openmp.
Enable the package using --with-pthreadclasses or --download-pthreadclasses
<<<<

$ git diff
diff --git a/config/PETSc/packages/openmp.py b/config/PETSc/packages/openmp.py
index a7c3fd5..b18978b 100644
--- a/config/PETSc/packages/openmp.py
+++ b/config/PETSc/packages/openmp.py
@@ -22,6 +22,7 @@ class Configure(PETSc.package.NewPackage):
   def configureLibrary(self):
     ''' Checks for -fopenmp compiler flag'''
     ''' Needs to check if OpenMP actually exists and works '''
+    self.checkDependencies()
     self.setCompilers.pushLanguage('C')
     #
     for flag in ["-fopenmp", # Gnu
diff --git a/config/PETSc/packages/pthreadclasses.py b/config/PETSc/packages/pthreadclasses.py
index b09e51c..08a8260 100644
--- a/config/PETSc/packages/pthreadclasses.py
+++ b/config/PETSc/packages/pthreadclasses.py
@@ -17,6 +17,7 @@ class Configure(PETSc.package.NewPackage):
     return
 
   def configureLibrary(self):
+    self.checkDependencies()
     if not self.pthread.found:
        raise RuntimeError('Pthreads not found, pthread classes needs pthreads to run')
     self.found = 1

>>>>>>>>>>

But then openmp.py has the following indicating pthreadclasses is optional..

    # OpenMP threadprivate variables are not supported on all platforms (for e.g on MacOS).
    # Hence forcing to configure additionally with --with-pthreadclasses so that pthread
    # routines pthread_get/setspecific() can be used instead.
    if not self.checkCompile('#include <omp.h>\nint a;\n#pragma omp threadprivate(a)\n','') and not self.pthreadclasses.found:
      raise RuntimeError('OpenMP threadprivate variables not found. Configure additionally with --with-pthreadclasses=1')

Satish

On Thu, 1 May 2014, Eric Bavier wrote:

> I ran into a problem compiling petsc when configured with
> "--with-openmp=1" on my system.  This patch seems to fix it.  Comments
> welcome.
> 
> 




More information about the petsc-dev mailing list