[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: building petsc 3.7.0: python can't pickle file objects



On Fri, May 13, 2016 at 3:45 AM, Drew Parsons <apps@emerall.com> wrote:
> I've created an experimental branch in the petsc repo to start testing
> the build of petsc 3.7.0,
> https://anonscm.debian.org/git/debian-science/packages/petsc.git
>
> Using the same configuration we had for petsc 3.6, configure fails with
> the error:
>
> can't pickle file objects
> *******************************************************************************
>
>
>   File "/home/projects/petsc/build/petsc/config/BuildSystem/config/framework.py", line 961, in processChildren
>     child.configure()
>   File "/home/projects/petsc/build/petsc/config/PETSc/Configure.py", line 1114, in configure
>     self.framework.argDB['configureCache'] = cPickle.dumps(self.framework)
>   File "/usr/lib/python2.7/copy_reg.py", line 70, in _reduce_ex
>     raise TypeError, "can't pickle %s objects" % base.__name__
> can't pickle file objects
>
>
>
> Can anyone make sense of this error?  A simple configure (just
> ./configure) does complete successfully, so it's some problem in the
> complex configure line that we're using. But I don't know which term is
> causing the problem.

The problem is the "--useThreads 0" flag. Replacing it with
"--useThreads=0" fixes the problem. The build now fails for me with:

/tmp/src/petsc/src/mat/impls/aij/seq/superlu/superlu.c: In function
‘PetscErrorCode MatLUFactorNumeric_SuperLU(Mat, Mat, const
MatFactorInfo*)’:
/tmp/src/petsc/src/mat/impls/aij/seq/superlu/superlu.c:181:294: error:
cannot convert ‘GlobalLU_t*’ to ‘mem_usage_t*’ for argument ‘19’ to
‘void dgssvx(superlu_options_t*, SuperMatrix*, int*, int*, int*,
char*, double*, double*, SuperMatrix*, SuperMatrix*, void*, int,
SuperMatrix*, SuperMatrix*, double*, double*, double*, double*,
mem_usage_t*, SuperLUStat_t*, int*)’
/tmp/src/petsc/src/mat/impls/aij/seq/superlu/superlu.c:204:281: error:
cannot convert ‘GlobalLU_t*’ to ‘mem_usage_t*’ for argument ‘17’ to
‘void dgsisx(superlu_options_t*, SuperMatrix*, int*, int*, int*,
char*, double*, double*, SuperMatrix*, SuperMatrix*, void*, int,
SuperMatrix*, SuperMatrix*, double*, double*, mem_usage_t*,
SuperLUStat_t*, int*)’
/tmp/src/petsc/src/mat/impls/aij/seq/superlu/superlu.c: In function
‘PetscErrorCode MatSolve_SuperLU_Private(Mat, Vec, Vec)’:
/tmp/src/petsc/src/mat/impls/aij/seq/superlu/superlu.c:392:293: error:
cannot convert ‘GlobalLU_t*’ to ‘mem_usage_t*’ for argument ‘19’ to
‘void dgssvx(superlu_options_t*, SuperMatrix*, int*, int*, int*,
char*, double*, double*, SuperMatrix*, SuperMatrix*, void*, int,
SuperMatrix*, SuperMatrix*, double*, double*, double*, double*,
mem_usage_t*, SuperLUStat_t*, int*)’
/tmp/src/petsc/src/mat/impls/aij/seq/superlu/superlu.c:414:280: error:
cannot convert ‘GlobalLU_t*’ to ‘mem_usage_t*’ for argument ‘17’ to
‘void dgsisx(superlu_options_t*, SuperMatrix*, int*, int*, int*,
char*, double*, double*, SuperMatrix*, SuperMatrix*, void*, int,
SuperMatrix*, SuperMatrix*, double*, double*, mem_usage_t*,
SuperLUStat_t*, int*)’
gmakefile:163: recipe for target
'x86_64-linux-gnu-real-debug/obj/src/mat/impls/aij/seq/superlu/superlu.o'
failed

Probably too old superlu?

> Has anyone started using petsc 3.7 for themselves yet?

I haven't used petsc 3.7 yet, but we are testing dolfin-dev against
petsc-dev, so the next release of dolfin should work fine with petsc
3.7. We expect to make the next release of dolfin before the summer.

Johannes


Reply to: