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: