On 17-02-22 01:53, Åke Sandgren wrote:
On 02/22/2017 03:40 AM, Maxime Boissonneault wrote:
Thanks Robert,
While I understand and am all in favor of reusing dependencies, most
packages with dependencies do not provide download hooks for specific
versions of their dependencies. PETSc is this way, I believe OpenFoam
too. When the developers go through this trouble, I prefer to assume
that they know what they are doing and test with specific versions of
Unfortunately they rarely do (when it comes to HPC systems and
performance issues at least), they just know that the ordinary user
knows even less and try to make it easy for them.
the dependencies. If a user finds a bug, it will be that much simpler to
diagnose if it uses the same versions as the developers.
The main reason i see for NOT letting codes like PETSc do their own
download and build of sub dependencies, is that those dependencies will
not be built in the best way, i.e., they will be suboptimal in speed and
sometimes even buggy.
Well, explicitly, from the PETSc main page:
* Some packages might not support certain options
like|--download-PACKAGENAME|or|--with-PACKAGENAME-dir|.
Architectures like Microsoft Windows might have issues with these
options. In these cases,|--with-PACKAGENAME-include
--with-PACKAGENAME-lib|options should be prefered.
* It's best to install some external packages like SuperLU_DIST,
MUMPS, Hypre, METIS, and ParMETIS with the
option|--download-PACKAGENAME|. [the correct options for these
packages are|--download-superlu_dist --download-mumps
--download-hypre|]
o This will install the COMPATIBLE version of the external
package. A generic install of this package might not be
compatible with PETSc [perhaps due to version differences - or
perhaps due to the requirement of additional patches for it to
work with PETSc]
o Some packages have bug fixes, portability patches, and upgrades
for dependent packages that have not yet been included in an
upstream release.
o All packages will be installed with the same set of compilers -
this avoids problems [for example weird link time errors] with
mixing code compiled with multiple compilers [for example mixing
gfortran and ifort compiled code].
* If you want to download a compatible external package manually, then
the URL for this package is listed in configure source for this
package. For example, check|config/config.packages/SuperLU.py|for
the url for download this package.
Maxime