Files

165 lines
5.9 KiB
Tcl
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:ft=tcl:et:sw=4:ts=4:sts=4
PortSystem 1.0
PortGroup active_variants 1.1
PortGroup cmake 1.1
PortGroup github 1.0
PortGroup linear_algebra 1.0
PortGroup mpi 1.0
github.setup LLNL hiop 1.1.0 v
revision 1
categories math science
license BSD
maintainers nomaintainer
description HPC solver for non-linear optimization problems
long_description HiOp is an optimization solver for solving certain mathematical optimization problems \
expressed as non-linear programming problems. HiOp is a lightweight HPC solver \
that leverages applications existing data parallelism to parallelize \
the optimization iterations by using specialized parallel linear algebra kernels.
checksums rmd160 c7fe5727192429c78b96a9663f44c445bdb803a2 \
sha256 e1fe89605e528cdc7946f71355c22be4e9b807e75f9b3c91e8fac83451a396a5 \
size 2632151
github.tarball_from archive
depends_lib-append path:share/pkgconfig/eigen3.pc:eigen3
if {${os.platform} eq "darwin" && ${os.arch} eq "powerpc"} {
mpi.setup require require_fortran \
-gcc44 -gcc45 -gcc46 -gcc47 -gcc48 -gcc49 -gcc5 -gcc6 \
-clang -fortran
} else {
mpi.setup require require_fortran \
-gcc44 -gcc45 -gcc46 -gcc47 -gcc48 -gcc49 -gcc5 -gcc6
}
compiler.cxx_standard 2014
# Xcode clang of 10.11 and earlier fail to build it.
compiler.blacklist-append \
{clang < 900}
compilers.setup require_fortran
# Needed in order for correct version of BLAS to be picked:
pre-configure {
configure.args-append ${cmake_linalglib}
if {[variant_isset openblas]} {
configure.args-append \
-DBLAS_LIBRARIES=${prefix}/lib/libopenblas.dylib \
-DLAPACK_LIBRARIES=${prefix}/lib/libopenblas.dylib
}
}
configure.args-append \
-DHIOP_BUILD_SHARED=ON \
-DHIOP_EIGEN_DIR=${prefix}/include/eigen3 \
-DHIOP_USE_EIGEN=ON \
-DHIOP_USE_MPI=ON \
-DHIOP_WITH_MAKETEST=ON \
-DHIOP_BUILD_DOCUMENTATION=OFF \
-DHIOP_BUILD_FORTRAN_EXAMPLE=OFF \
-DHIOP_DEEPCHECKS=OFF \
-DHIOP_DEVELOPER_MODE=OFF \
-DHIOP_SPARSE=OFF \
-DHIOP_USE_COINHSL=OFF \
-DHIOP_USE_GINKGO=OFF \
-DHIOP_USE_GPU=OFF \
-DHIOP_USE_PARDISO=OFF \
-DHIOP_USE_RAJA=OFF \
-DHIOP_USE_STRUMPACK=OFF \
-DHIOP_WITH_KRON_REDUCTION=OFF
# ___atomic_fetch_add_8, ___atomic_load_8
if {[string match *gcc* ${configure.compiler}]} {
configure.ldflags-append -latomic
}
# TODO: add Raja support. Requires Umpire.
# FIXME: Ginkgo backend does not build at the moment:
# https://github.com/LLNL/hiop/issues/586
# https://github.com/ginkgo-project/ginkgo/issues/1258
variant ginkgo description "Build with Ginkgo backend" {
depends_lib-append \
port:ginkgo
configure.args-replace \
-DHIOP_USE_GINKGO=OFF -DHIOP_USE_GINKGO=ON
if {![catch {set result [active_variants ginkgo mpi]}]} {
if {$result} {
if {![variant_isset mpi]} {
return -code error "ginkgo has mpi enabled, please use the same variant."
}
}
}
if {![catch {set result [active_variants ginkgo openmpi]}]} {
if {$result} {
if {![variant_isset openmpi]} {
return -code error "ginkgo has openmpi enabled, please use the same variant."
}
}
}
}
# Strumpack backend works, but few tests fail: https://github.com/pghysels/STRUMPACK/issues/83
variant strumpack description "Build with STRUMPACK backend" {
depends_lib-append \
port:scotch \
port:strumpack
patchfiles-append \
patch-strumpack-includes.diff
post-patch {
reinplace "s|__PREFIX__|${prefix}|" ${worksrcpath}/CMakeLists.txt
}
configure.args-replace \
-DHIOP_USE_STRUMPACK=OFF -DHIOP_USE_STRUMPACK=ON
if {![catch {set result [active_variants strumpack mpi]}]} {
if {$result} {
if {![variant_isset mpi]} {
return -code error "strumpack has mpi enabled, please use the same variant."
}
}
}
if {![catch {set result [active_variants strumpack openmpi]}]} {
if {$result} {
if {![variant_isset openmpi]} {
return -code error "strumpack has openmpi enabled, please use the same variant."
}
}
}
}
default_variants-append \
+strumpack
# Ginkgo will use these too, when enabled:
if {[variant_isset strumpack] || [variant_isset ginkgo]} {
depends_lib-append \
port:metis \
port:scalapack
require_active_variants \
port:metis openmp
configure.args-replace \
-DHIOP_SPARSE=OFF -DHIOP_SPARSE=ON
if {![catch {set result [active_variants scalapack mpi]}]} {
if {$result} {
if {![variant_isset mpi]} {
return -code error "scalapack has mpi enabled, please use the same variant."
}
}
}
if {![catch {set result [active_variants scalapack openmpi]}]} {
if {$result} {
if {![variant_isset openmpi]} {
return -code error "scalapack has openmpi enabled, please use the same variant."
}
}
}
}
test.run yes
test.cmd-prepend DYLD_LIBRARY_PATH=${cmake.build_dir}/src