[petsc-dev] --download and spack
Jed Brown
jed at jedbrown.org
Sun Oct 21 17:22:36 CDT 2018
"Balay, Satish" <balay at mcs.anl.gov> writes:
> On Sun, 21 Oct 2018, Jed Brown wrote:
>
>> "Balay, Satish" <balay at mcs.anl.gov> writes:
>>
>> > I don't think spack is really a replacemet for --download-package yet.
>> >
>> > For one - it has some initial setup hump users have to go over. [how
>> > does one specify compilers, and my prebuilt MPI?]
>>
>> The configuration profile is somewhat clumsy, but lots of facilities do
>> it. If PETSc were to support using spack for prerequisites, we would
>> probably want PETSc to be able to set it up.
>>
>> > And then - we would need to update petsc support in spack to be as
>> > externsive wrt externalpackages as we currently have.
>>
>> There are separate ideas:
>>
>> * ./configure --download-hypre=spack
>>
>> or some similar syntax tells configure to ask Spack how to link to a
>> suitably-built Hypre and to install it if necessary, resolving any
>> possible transitive dependencies [1].
>
> I don't think spack is designed to support this model [just install
> one package or a subset of pacakges - per our spec]. For one - it
> doesn't have a configure like interface to pass options from petsc
> configure to spack [for all the checks that petsc configure has
> already done.
>
>>
>> * spack install petsc+hypre
>>
>> as a recommended way for users to install. An issue with this is that
>> Spack code runs before anything PETSc works with, and Spack setup
>> (system compilers, MPI, etc.) can be nontrivial.
>
> This is the recommended mode. And I think its useful for users who don't
> want to deal with petsc directly or petsc interface directly.
>
> [for ex: deal.ii users - who want to install deal.ii - but just want a
> compatible petsc installed automatically].
This is *exactly* the same model as you rejected a paragraph above.
There is no difference whether we are talking about installing
dependencies for PETSc or dependencies for Deal.II.
Also, I think most users don't care whether exactly the same compiler
options are passed to all dependent packages. They want to link against
a working debug or optimized stack with minimal build time.
>> [1] Having configure churn for a while and then say that --download-zlib
>> or --enable-zlib is required is super lame.
>
> spack automatically figures out and installs tonnes of additional packages. The
> above model gives the choice of user deciding what to do. In case of p4est - it could
> be an optionl dependency instead of mandatory dependency.
>
> I guess optional dependency handling is a bit complex.
It is, but if we're downloading a bunch of packages and zlib is deemed
required, we shouldn't fail. It's these minutes of babysitting
configure and needing to start over to add non-obvious dependencies that
is infuriating and drives people away from PETSc and/or blocks them from
running their code at new facilities. (It's a completely different
calculus if I know I can log in, issue a couple simple commands, and be
running in 5-10 minutes versus if I expect to need to babysit and
troubleshoot configuration idiosyncrasies for hours.)
>> > And if you want to build any branch of petsc from spack - it requires
>> > additional configs to spack code [an entry for each petsc branch].
>> >
>> > One feature that petsc configure has - that spack does not yet have
>> > (as far as I know) is 'self.dlib' - which I just used in p4est.py: [Ah
>> > - I see a bug in my code - there should also be a corresponding usage
>> > of 'self.dinclude'].
>>
>> It is broken encapsulation if this is required for includes or for
>> linking with shared libraries. Pkg-config and similar systems have
>> Libs.static for such transitive dependencies. Spack has this
>> information. Are you saying it breaks when using static libraries?
>
> Currently there is now way to tell spack - build all packages as static. [or shared].
>
>>
>> P4est is actively maintained and should be fixed if it at fault in this
>> instance.
>>
>> > And then there is the compiler library detection issue. [ideally spack
>> > should detect this and pass it down to all packages]. Curently some
>> > packages have hacks for this.
>> >
>> > var/spack/repos/builtin/packages/zoltan/package.py: config_args.append('--with-libs=-lgfortran')
>> > var/spack/repos/builtin/packages/mfem/package.py: libs += LibraryList(find_system_libraries('libdl'))
>> >
>> > etc..
>>
>> Have these been reported in the Spack issue tracker?
>
> These issues came up in some PRs or issues. Sorry I don't have references.
>
> Satish
More information about the petsc-dev
mailing list