[petsc-dev] new configuration/compile system for PETSc
Dmitry Karpeev
karpeev at mcs.anl.gov
Sun Jul 10 21:11:48 CDT 2011
This is probably implied by what's already on the list, but we need an
easy way for the *users* to build individual
examples, as well as to add new examples, when they experiment with
PETSc. The ability to incorporate PETSc
into new and/or existing codes that use other packages (that aren't a
part of the PETSc build) has already been
discussed. It's a natural extension of writing and building small
examples. It's probably implied by one of the below
list items, but I'm not sure which :-), so I thought I'd mention it again.
Dmitry.
On Sat, Jul 9, 2011 at 10:17 PM, Barry Smith <bsmith at mcs.anl.gov> wrote:
>
> Ok, here's the current list of requirements. What is missing?
>
>
> Requirements:
> X 1) Portability to Windows, Cygwin, Unix (all versions)
> 2) Compatible with GUI development systems (Xcode, Eclipse, Emacs, ...)
> 3) Able to run parallel configures and builds (on shared memory system enough?, distcc?)
> 4) Able to work with batch systems
> 5) Able to handle dependencies between packages (given dependencies between packages builds everything in the correct order)
> 6) Able to utilize clang and similar systems
> 7) Works seamlessly with GNU autoconf, Cmake, pkconfig packages (that is will build these packages automatically and maybe generate them)
> 8) Can download and install packages by given URL
> 9) Easy to add configurations for packages such as SuperLU, etc that have no decent configuration
> x 10) Can test for available functionalities (include files, etc)
> X 11) Easy to add new types of compilers, new tests
> 12) Does dependency analysis and rebuilds only what needs to be rebuilt
> 13) Able to manage test suites
> 14) Compatible with and able to use revision control systems
> 15) Completely command-line controlled but also with a GUI frontend that gives one full control as well
> 16) Able to build for bizarre-assed systems like the iPAD and GPUs.
> 17) Able to manage the concept of abstract packages such as MPI and BLAS/LAPACK and particular implementations
> 18) Able to handle already installed packages and detect if that package uses something incompatable with other packages: for example HDF5 installed with OpenMPI and someone building other packages with MPICH.
> 19) Able to manage several different compilers of the same type (for example 2 C compilers) being used for different packages.
> 20) Incrementable builds, that is more packages can be installed later based on packages already installed. Say add SLEPc later.
>
>
> X - does, x - does some
>
>
> On Jul 9, 2011, at 7:45 PM, Dmitry Karpeev wrote:
>
>> Observe that PETSc's configure deals with the problem of consistently
>> configuring MULTIPLE
>> packages, while most tools I have heard of typically deal with a
>> SINGLE package. That's a
>> qualitative difference, in my opinion.
>>
>> Separately, I would suggest having the new build system allow the user
>> to install PETSc in one
>> go. Something like 'cll install --with-clanguage=c++ ...', because
>> it's rare for users to stop after
>> configuring, and then end up executing an easily automatable sequence of steps:
>> configure --with-clanguage=c++ ...
>> make PETSC_DIR= ... all
>> make PETSC_DIR= ... PETSC_ARCH=... test
>>
>> Of course, we should provide intermediate stages as well -- 'cll
>> configure' -- etc.
>> In particular, if cll were able to configure "arbitrary" collections
>> of packages, it may be desirable
>> to leave the "top" package configured, but not built, as it has to be
>> built repeatedly (as part of
>> a development cycle) using make or cmake, etc.
>>
>> Dmitry.
>>
>> On Sat, Jul 9, 2011 at 7:37 PM, Dmitry Karpeev <karpeev at mcs.anl.gov> wrote:
>>> On Sat, Jul 9, 2011 at 7:18 PM, Harald Pfeiffer
>>> <pfeiffer at cita.utoronto.ca> wrote:
>>>> We happen to use Petsc with our own makefiles. PETSc is compiled entirely
>>>> separately (or we use system-provided PETSc-modules). We then manually set
>>>> the appropriate include- and library-paths in our makefiles, for example:
>>>>
>>>> PETSC_INCLUDE = -I$(PETSC_DIR)/include -I$(PETSC_DIR)/$(PETSC_ARCH)/include
>>>> PETSC_LIB = -L$(PETSC_DIR)/$(PETSC_ARCH)/lib -lpetsc -lX11
>>>> ...
>>>> other stuff here
>>>> ...
>>>> ARCH_INCLUDE = $(PETSC_INCLUDE) ...
>>>> ARCH_LIB_PARALLEL = $(HDF_LIB) $(FFTW_LIB) $(PETSC_LIB) ....
>>>>
>>>>
>>>> Not elegant, but has been working like a charm for the last 12 years.
>>>
>>> I'm not saying it can't be made to work.
>>> I'm saying it might not be trivial for someone just starting to use
>>> PETSc and not even necessarily
>>> that familiar with make: there are a lot of potential users like that.
>>> And even for more sophisticated
>>> users it might take a while to work out the kinks.
>>>
>>> Dmitry.
>>>
>>>>
>>>>
>>>> Harald
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>> On 7/10/11 1:02 AM, Dmitry Karpeev wrote:
>>>>>
>>>>> On Sat, Jul 9, 2011 at 6:42 PM, Jed Brown<jedbrown at mcs.anl.gov> wrote:
>>>>>>
>>>>>> On Sat, Jul 9, 2011 at 18:30, Dmitry Karpeev<karpeev at mcs.anl.gov> wrote:
>>>>>>>
>>>>>>> If a user could write a
>>>>>>> simple foo.py that configured/built their
>>>>>>> favorite package with PETSc as a dependency, they could then proceed
>>>>>>> to modify the FOO code and jack
>>>>>>> PETSc into it.
>>>>>>
>>>>>> But this just a different form of asking them to adopt our build system,
>>>>>> except that makefiles are a de-facto standard and our system won't be
>>>>>> familiar to anyone. Any system has to be easily usable from other systems
>>>>>> (at least makefiles, automake, and cmake).
>>>>>
>>>>> Yes, but there is also a practical problem: an engineer or a scientist,
>>>>> not
>>>>> intimately familiar with automake, cmake, etc., has taken the effort
>>>>> to understand
>>>>> PETSc so that our linear solvers can be substituted for FOO's. How can we
>>>>> make it easier for these people to insert PETSc into their code? Here
>>>>> I only mean
>>>>> the build process. Maybe making them write foo.py is not the right
>>>>> approach,
>>>>> but we should have a usable approach (and, maybe, an example of doing it).
>>>>>
>>>>> In particular, is it sufficient to export linklibs, or do we also need
>>>>> to export the
>>>>> compiler (e.g., to ensure consistent Fortrant name mangling)? There are
>>>>> a good number of Fortran users that want to use PETSc too.
>>>>>
>>>>> Dmitry.
>>>>
>>>> --
>>>> Harald Pfeiffer
>>>> Assistant Professor
>>>> Cdn. Institute for Theoretical Astrophysics
>>>> University of Toronto
>>>> pfeiffer at cita.utoronto.ca
>>>> Tel. ++1 416-978-8497
>>>>
>>>>
>>>
>
>
More information about the petsc-dev
mailing list