[CCing Dave Raymond who helped with the openmpi-4.0.1 update]
On Sun, Jan 26, 2020 at 09:21:30AM -0700, j...@bitminer.ca wrote:
Hi Martin,
I don't know how to compare the libraries (md5?). I reviewed the
build logs and diff'd the text files (.h). The build logs showed
the same compilers (gnu) was used to create mpi binaries and
libraries. The .h files had no differences.
Please have a look at
https://www.openbsd.org/faq/ports/specialtopics.html#SharedLibs
Reviewing the source
is what convinced me that FC (and CC) were used only in
defining the compiler name used by mpicc and mpifort commands.
And the default cc compiler has changed to egcc as intended:
o67snap$ mpicc -v
Using built-in specs.
COLLECT_GCC=/usr/local/bin/egcc
COLLECT_LTO_WRAPPER=/usr/local/libexec/gcc/x86_64-unknown-openbsd6.6/8.3.0/lto-wrapper
...etc etc.
Now as for C++, it's likely that the clang C++ compiler is to be
preferred by users (on AMD64) as all C++ ports are built with that.
OpenMPI has no C++ API and C++ code therefore uses the C interface.
And that works (I tried a couple of open-source codes to verify). By
"works" I mean it compiles and runs using clang C++ and linked with
the gcc-built OpenMPI. (https://ascl.net/1911.001 PLAN, and
https://ascl.net/1511.022 ZInCo).
Thanks for the feedback, I've decided to put everything in a single
diff
and tested these changes now:
- reenable fortran support
- switch COMPILER to ports-gcc only, due to limitations in the
build system, MODULES=fortran requires ports-gcc anyway. If problems
with C++ ever show up, we might make a version with fortran disabled
and base-clang only. For compiling mpi applications, base-clang
is still an option as you have showed.
- adjust SHARED_LIBS accordingly, add @so lib markers while there
- add your README, amended by an example code to have everything at
hand to run a simple mpi program
I think this reflects reality best and I would like to commit this soon
:)
-m
Index: Makefile
===================================================================
RCS file: /cvs/ports/devel/openmpi/Makefile,v
retrieving revision 1.29
diff -u -p -u -p -r1.29 Makefile
--- Makefile 22 Dec 2019 15:47:35 -0000 1.29
+++ Makefile 27 Jan 2020 07:39:23 -0000
@@ -4,18 +4,19 @@ COMMENT = open source MPI-3.1 implement
V = 4.0.2
DISTNAME = openmpi-$V
+REVISION = 0
-SHARED_LIBS += mca_common_dstore 0.0 # 1.0
+SHARED_LIBS += mca_common_dstore 0.0 # 1.1
SHARED_LIBS += mca_common_monitoring 0.0 # 60.0
-SHARED_LIBS += mca_common_ompio 0.0 # 60.1
+SHARED_LIBS += mca_common_ompio 0.0 # 60.2
SHARED_LIBS += mca_common_sm 2.0 # 60.0
-SHARED_LIBS += mpi 1.0 # 60.1
-SHARED_LIBS += mpi_mpifh 0.0 # 60.1
+SHARED_LIBS += mpi 2.0 # 60.2
+SHARED_LIBS += mpi_mpifh 0.0 # 60.2
SHARED_LIBS += mpi_usempi_ignore_tkr 0.0 # 60.0
-SHARED_LIBS += mpi_usempif08 0.0 # 60.0
+SHARED_LIBS += mpi_usempif08 0.0 # 60.1
SHARED_LIBS += ompitrace 0.0 # 60.0
-SHARED_LIBS += open-pal 1.0 # 60.1
-SHARED_LIBS += open-rte 1.0 # 60.1
+SHARED_LIBS += open-pal 2.0 # 60.2
+SHARED_LIBS += open-rte 2.0 # 60.2
CATEGORIES = devel
@@ -30,11 +31,19 @@ WANTLIB += c execinfo m pciaccess pthrea
MASTER_SITES
=
${HOMEPAGE}/software/ompi/v${V:C/^([0-9]+\.[0-9]+).*/\1/}/downloads/
-COMPILER = base-clang ports-gcc
+COMPILER = ports-gcc
+
+# MODULES=fortran always uses ports-gcc (and overrides COMPILER)
+# the openmpi applications and libraries will be built with ports-gcc,
but
+# are compatible with base-clang on archs where it is available
MODULES = fortran
MODFORTRAN_COMPILER = gfortran
BUILD_DEPENDS = devel/libtool,-ltdl
LIB_DEPENDS = devel/libexecinfo
+
+CONFIGURE_ARGS += --enable-mpi-fortran=usempif08 \
+ FC=egfortran \
+ CC=egcc
MAKE_FLAGS = V=1
FAKE_FLAGS = sysconfdir=${PREFIX}/share/examples/openmpi/
Index: pkg/PLIST
===================================================================
RCS file: /cvs/ports/devel/openmpi/pkg/PLIST,v
retrieving revision 1.6
diff -u -p -u -p -r1.6 PLIST
--- pkg/PLIST 22 Dec 2019 15:47:36 -0000 1.6
+++ pkg/PLIST 27 Jan 2020 07:39:23 -0000
@@ -41,37 +41,37 @@ include/openmpi/mpiext/mpiext_cuda_c.h
include/openmpi/mpiext/mpiext_pcollreq_c.h
include/openmpi/mpiext/mpiext_pcollreq_mpifh.h
include/openmpi/mpiext/pmpiext_pcollreq_c.h
-lib/libmca_common_dstore.a
+@static-lib lib/libmca_common_dstore.a
lib/libmca_common_dstore.la
@lib lib/libmca_common_dstore.so.${LIBmca_common_dstore_VERSION}
-lib/libmca_common_monitoring.a
+@static-lib lib/libmca_common_monitoring.a
lib/libmca_common_monitoring.la
@lib
lib/libmca_common_monitoring.so.${LIBmca_common_monitoring_VERSION}
-lib/libmca_common_ompio.a
+@static-lib lib/libmca_common_ompio.a
lib/libmca_common_ompio.la
@lib lib/libmca_common_ompio.so.${LIBmca_common_ompio_VERSION}
-lib/libmca_common_sm.a
+@static-lib lib/libmca_common_sm.a
lib/libmca_common_sm.la
@lib lib/libmca_common_sm.so.${LIBmca_common_sm_VERSION}
-lib/libmpi.a
+@static-lib lib/libmpi.a
lib/libmpi.la
@lib lib/libmpi.so.${LIBmpi_VERSION}
-lib/libmpi_mpifh.a
+@static-lib lib/libmpi_mpifh.a
lib/libmpi_mpifh.la
@lib lib/libmpi_mpifh.so.${LIBmpi_mpifh_VERSION}
-lib/libmpi_usempi_ignore_tkr.a
+@static-lib lib/libmpi_usempi_ignore_tkr.a
lib/libmpi_usempi_ignore_tkr.la
@lib
lib/libmpi_usempi_ignore_tkr.so.${LIBmpi_usempi_ignore_tkr_VERSION}
-lib/libmpi_usempif08.a
+@static-lib lib/libmpi_usempif08.a
lib/libmpi_usempif08.la
@lib lib/libmpi_usempif08.so.${LIBmpi_usempif08_VERSION}
-lib/libompitrace.a
+@static-lib lib/libompitrace.a
lib/libompitrace.la
@lib lib/libompitrace.so.${LIBompitrace_VERSION}
-lib/libopen-pal.a
+@static-lib lib/libopen-pal.a
lib/libopen-pal.la
@lib lib/libopen-pal.so.${LIBopen-pal_VERSION}
-lib/libopen-rte.a
+@static-lib lib/libopen-rte.a
lib/libopen-rte.la
@lib lib/libopen-rte.so.${LIBopen-rte_VERSION}
lib/mpi.mod
@@ -84,288 +84,288 @@ lib/mpi_f08_interfaces_callbacks.mod
lib/mpi_f08_types.mod
lib/ompi_monitoring_prof.a
lib/ompi_monitoring_prof.la
-lib/ompi_monitoring_prof.so
+@so lib/ompi_monitoring_prof.so
lib/openmpi/
-lib/openmpi/libompi_dbg_msgq.a
+@static-lib lib/openmpi/libompi_dbg_msgq.a
lib/openmpi/libompi_dbg_msgq.la
-lib/openmpi/libompi_dbg_msgq.so
+@so lib/openmpi/libompi_dbg_msgq.so
lib/openmpi/mca_allocator_basic.a
lib/openmpi/mca_allocator_basic.la
-lib/openmpi/mca_allocator_basic.so
+@so lib/openmpi/mca_allocator_basic.so
lib/openmpi/mca_allocator_bucket.a
lib/openmpi/mca_allocator_bucket.la
-lib/openmpi/mca_allocator_bucket.so
+@so lib/openmpi/mca_allocator_bucket.so
lib/openmpi/mca_bml_r2.a
lib/openmpi/mca_bml_r2.la
-lib/openmpi/mca_bml_r2.so
+@so lib/openmpi/mca_bml_r2.so
lib/openmpi/mca_btl_self.a
lib/openmpi/mca_btl_self.la
-lib/openmpi/mca_btl_self.so
+@so lib/openmpi/mca_btl_self.so
lib/openmpi/mca_btl_sm.a
lib/openmpi/mca_btl_sm.la
-lib/openmpi/mca_btl_sm.so
+@so lib/openmpi/mca_btl_sm.so
lib/openmpi/mca_btl_tcp.a
lib/openmpi/mca_btl_tcp.la
-lib/openmpi/mca_btl_tcp.so
+@so lib/openmpi/mca_btl_tcp.so
lib/openmpi/mca_btl_vader.a
lib/openmpi/mca_btl_vader.la
-lib/openmpi/mca_btl_vader.so
+@so lib/openmpi/mca_btl_vader.so
lib/openmpi/mca_coll_basic.a
lib/openmpi/mca_coll_basic.la
-lib/openmpi/mca_coll_basic.so
+@so lib/openmpi/mca_coll_basic.so
lib/openmpi/mca_coll_inter.a
lib/openmpi/mca_coll_inter.la
-lib/openmpi/mca_coll_inter.so
+@so lib/openmpi/mca_coll_inter.so
lib/openmpi/mca_coll_libnbc.a
lib/openmpi/mca_coll_libnbc.la
-lib/openmpi/mca_coll_libnbc.so
+@so lib/openmpi/mca_coll_libnbc.so
lib/openmpi/mca_coll_monitoring.a
lib/openmpi/mca_coll_monitoring.la
-lib/openmpi/mca_coll_monitoring.so
+@so lib/openmpi/mca_coll_monitoring.so
lib/openmpi/mca_coll_self.a
lib/openmpi/mca_coll_self.la
-lib/openmpi/mca_coll_self.so
+@so lib/openmpi/mca_coll_self.so
lib/openmpi/mca_coll_sm.a
lib/openmpi/mca_coll_sm.la
-lib/openmpi/mca_coll_sm.so
+@so lib/openmpi/mca_coll_sm.so
lib/openmpi/mca_coll_sync.a
lib/openmpi/mca_coll_sync.la
-lib/openmpi/mca_coll_sync.so
+@so lib/openmpi/mca_coll_sync.so
lib/openmpi/mca_coll_tuned.a
lib/openmpi/mca_coll_tuned.la
-lib/openmpi/mca_coll_tuned.so
+@so lib/openmpi/mca_coll_tuned.so
lib/openmpi/mca_compress_bzip.a
lib/openmpi/mca_compress_bzip.la
-lib/openmpi/mca_compress_bzip.so
+@so lib/openmpi/mca_compress_bzip.so
lib/openmpi/mca_compress_gzip.a
lib/openmpi/mca_compress_gzip.la
-lib/openmpi/mca_compress_gzip.so
+@so lib/openmpi/mca_compress_gzip.so
lib/openmpi/mca_crs_none.a
lib/openmpi/mca_crs_none.la
-lib/openmpi/mca_crs_none.so
+@so lib/openmpi/mca_crs_none.so
lib/openmpi/mca_errmgr_default_app.a
lib/openmpi/mca_errmgr_default_app.la
-lib/openmpi/mca_errmgr_default_app.so
+@so lib/openmpi/mca_errmgr_default_app.so
lib/openmpi/mca_errmgr_default_hnp.a
lib/openmpi/mca_errmgr_default_hnp.la
-lib/openmpi/mca_errmgr_default_hnp.so
+@so lib/openmpi/mca_errmgr_default_hnp.so
lib/openmpi/mca_errmgr_default_orted.a
lib/openmpi/mca_errmgr_default_orted.la
-lib/openmpi/mca_errmgr_default_orted.so
+@so lib/openmpi/mca_errmgr_default_orted.so
lib/openmpi/mca_errmgr_default_tool.a
lib/openmpi/mca_errmgr_default_tool.la
-lib/openmpi/mca_errmgr_default_tool.so
+@so lib/openmpi/mca_errmgr_default_tool.so
lib/openmpi/mca_ess_env.a
lib/openmpi/mca_ess_env.la
-lib/openmpi/mca_ess_env.so
+@so lib/openmpi/mca_ess_env.so
lib/openmpi/mca_ess_hnp.a
lib/openmpi/mca_ess_hnp.la
-lib/openmpi/mca_ess_hnp.so
+@so lib/openmpi/mca_ess_hnp.so
lib/openmpi/mca_ess_pmi.a
lib/openmpi/mca_ess_pmi.la
-lib/openmpi/mca_ess_pmi.so
+@so lib/openmpi/mca_ess_pmi.so
lib/openmpi/mca_ess_singleton.a
lib/openmpi/mca_ess_singleton.la
-lib/openmpi/mca_ess_singleton.so
+@so lib/openmpi/mca_ess_singleton.so
lib/openmpi/mca_ess_tool.a
lib/openmpi/mca_ess_tool.la
-lib/openmpi/mca_ess_tool.so
+@so lib/openmpi/mca_ess_tool.so
lib/openmpi/mca_fcoll_dynamic.a
lib/openmpi/mca_fcoll_dynamic.la
-lib/openmpi/mca_fcoll_dynamic.so
+@so lib/openmpi/mca_fcoll_dynamic.so
lib/openmpi/mca_fcoll_dynamic_gen2.a
lib/openmpi/mca_fcoll_dynamic_gen2.la
-lib/openmpi/mca_fcoll_dynamic_gen2.so
+@so lib/openmpi/mca_fcoll_dynamic_gen2.so
lib/openmpi/mca_fcoll_individual.a
lib/openmpi/mca_fcoll_individual.la
-lib/openmpi/mca_fcoll_individual.so
+@so lib/openmpi/mca_fcoll_individual.so
lib/openmpi/mca_fcoll_two_phase.a
lib/openmpi/mca_fcoll_two_phase.la
-lib/openmpi/mca_fcoll_two_phase.so
+@so lib/openmpi/mca_fcoll_two_phase.so
lib/openmpi/mca_fcoll_vulcan.a
lib/openmpi/mca_fcoll_vulcan.la
-lib/openmpi/mca_fcoll_vulcan.so
+@so lib/openmpi/mca_fcoll_vulcan.so
lib/openmpi/mca_filem_raw.a
lib/openmpi/mca_filem_raw.la
-lib/openmpi/mca_filem_raw.so
+@so lib/openmpi/mca_filem_raw.so
lib/openmpi/mca_fs_ufs.a
lib/openmpi/mca_fs_ufs.la
-lib/openmpi/mca_fs_ufs.so
+@so lib/openmpi/mca_fs_ufs.so
lib/openmpi/mca_grpcomm_direct.a
lib/openmpi/mca_grpcomm_direct.la
-lib/openmpi/mca_grpcomm_direct.so
+@so lib/openmpi/mca_grpcomm_direct.so
lib/openmpi/mca_io_ompio.a
lib/openmpi/mca_io_ompio.la
-lib/openmpi/mca_io_ompio.so
+@so lib/openmpi/mca_io_ompio.so
lib/openmpi/mca_io_romio321.a
lib/openmpi/mca_io_romio321.la
-lib/openmpi/mca_io_romio321.so
+@so lib/openmpi/mca_io_romio321.so
lib/openmpi/mca_iof_hnp.a
lib/openmpi/mca_iof_hnp.la
-lib/openmpi/mca_iof_hnp.so
+@so lib/openmpi/mca_iof_hnp.so
lib/openmpi/mca_iof_orted.a
lib/openmpi/mca_iof_orted.la
-lib/openmpi/mca_iof_orted.so
+@so lib/openmpi/mca_iof_orted.so
lib/openmpi/mca_iof_tool.a
lib/openmpi/mca_iof_tool.la
-lib/openmpi/mca_iof_tool.so
+@so lib/openmpi/mca_iof_tool.so
lib/openmpi/mca_mpool_hugepage.a
lib/openmpi/mca_mpool_hugepage.la
-lib/openmpi/mca_mpool_hugepage.so
+@so lib/openmpi/mca_mpool_hugepage.so
lib/openmpi/mca_odls_default.a
lib/openmpi/mca_odls_default.la
-lib/openmpi/mca_odls_default.so
+@so lib/openmpi/mca_odls_default.so
lib/openmpi/mca_odls_pspawn.a
lib/openmpi/mca_odls_pspawn.la
-lib/openmpi/mca_odls_pspawn.so
+@so lib/openmpi/mca_odls_pspawn.so
lib/openmpi/mca_oob_tcp.a
lib/openmpi/mca_oob_tcp.la
-lib/openmpi/mca_oob_tcp.so
+@so lib/openmpi/mca_oob_tcp.so
lib/openmpi/mca_osc_monitoring.a
lib/openmpi/mca_osc_monitoring.la
-lib/openmpi/mca_osc_monitoring.so
+@so lib/openmpi/mca_osc_monitoring.so
lib/openmpi/mca_osc_pt2pt.a
lib/openmpi/mca_osc_pt2pt.la
-lib/openmpi/mca_osc_pt2pt.so
+@so lib/openmpi/mca_osc_pt2pt.so
lib/openmpi/mca_osc_rdma.a
lib/openmpi/mca_osc_rdma.la
-lib/openmpi/mca_osc_rdma.so
+@so lib/openmpi/mca_osc_rdma.so
lib/openmpi/mca_osc_sm.a
lib/openmpi/mca_osc_sm.la
-lib/openmpi/mca_osc_sm.so
+@so lib/openmpi/mca_osc_sm.so
@comment XXX arch-specific
@comment lib/openmpi/mca_patcher_overwrite.a
@comment lib/openmpi/mca_patcher_overwrite.la
@comment lib/openmpi/mca_patcher_overwrite.so
lib/openmpi/mca_plm_isolated.a
lib/openmpi/mca_plm_isolated.la
-lib/openmpi/mca_plm_isolated.so
+@so lib/openmpi/mca_plm_isolated.so
lib/openmpi/mca_plm_rsh.a
lib/openmpi/mca_plm_rsh.la
-lib/openmpi/mca_plm_rsh.so
+@so lib/openmpi/mca_plm_rsh.so
lib/openmpi/mca_pmix_flux.a
lib/openmpi/mca_pmix_flux.la
-lib/openmpi/mca_pmix_flux.so
+@so lib/openmpi/mca_pmix_flux.so
lib/openmpi/mca_pmix_isolated.a
lib/openmpi/mca_pmix_isolated.la
-lib/openmpi/mca_pmix_isolated.so
+@so lib/openmpi/mca_pmix_isolated.so
lib/openmpi/mca_pmix_pmix3x.a
lib/openmpi/mca_pmix_pmix3x.la
-lib/openmpi/mca_pmix_pmix3x.so
+@so lib/openmpi/mca_pmix_pmix3x.so
lib/openmpi/mca_pml_cm.a
lib/openmpi/mca_pml_cm.la
-lib/openmpi/mca_pml_cm.so
+@so lib/openmpi/mca_pml_cm.so
lib/openmpi/mca_pml_monitoring.a
lib/openmpi/mca_pml_monitoring.la
-lib/openmpi/mca_pml_monitoring.so
+@so lib/openmpi/mca_pml_monitoring.so
lib/openmpi/mca_pml_ob1.a
lib/openmpi/mca_pml_ob1.la
-lib/openmpi/mca_pml_ob1.so
+@so lib/openmpi/mca_pml_ob1.so
lib/openmpi/mca_pstat_test.a
lib/openmpi/mca_pstat_test.la
-lib/openmpi/mca_pstat_test.so
+@so lib/openmpi/mca_pstat_test.so
lib/openmpi/mca_ras_simulator.a
lib/openmpi/mca_ras_simulator.la
-lib/openmpi/mca_ras_simulator.so
+@so lib/openmpi/mca_ras_simulator.so
lib/openmpi/mca_rcache_grdma.a
lib/openmpi/mca_rcache_grdma.la
-lib/openmpi/mca_rcache_grdma.so
+@so lib/openmpi/mca_rcache_grdma.so
lib/openmpi/mca_reachable_weighted.a
lib/openmpi/mca_reachable_weighted.la
-lib/openmpi/mca_reachable_weighted.so
+@so lib/openmpi/mca_reachable_weighted.so
lib/openmpi/mca_regx_fwd.a
lib/openmpi/mca_regx_fwd.la
-lib/openmpi/mca_regx_fwd.so
+@so lib/openmpi/mca_regx_fwd.so
lib/openmpi/mca_regx_naive.a
lib/openmpi/mca_regx_naive.la
-lib/openmpi/mca_regx_naive.so
+@so lib/openmpi/mca_regx_naive.so
lib/openmpi/mca_regx_reverse.a
lib/openmpi/mca_regx_reverse.la
-lib/openmpi/mca_regx_reverse.so
+@so lib/openmpi/mca_regx_reverse.so
lib/openmpi/mca_rmaps_mindist.a
lib/openmpi/mca_rmaps_mindist.la
-lib/openmpi/mca_rmaps_mindist.so
+@so lib/openmpi/mca_rmaps_mindist.so
lib/openmpi/mca_rmaps_ppr.a
lib/openmpi/mca_rmaps_ppr.la
-lib/openmpi/mca_rmaps_ppr.so
+@so lib/openmpi/mca_rmaps_ppr.so
lib/openmpi/mca_rmaps_rank_file.a
lib/openmpi/mca_rmaps_rank_file.la
-lib/openmpi/mca_rmaps_rank_file.so
+@so lib/openmpi/mca_rmaps_rank_file.so
lib/openmpi/mca_rmaps_resilient.a
lib/openmpi/mca_rmaps_resilient.la
-lib/openmpi/mca_rmaps_resilient.so
+@so lib/openmpi/mca_rmaps_resilient.so
lib/openmpi/mca_rmaps_round_robin.a
lib/openmpi/mca_rmaps_round_robin.la
-lib/openmpi/mca_rmaps_round_robin.so
+@so lib/openmpi/mca_rmaps_round_robin.so
lib/openmpi/mca_rmaps_seq.a
lib/openmpi/mca_rmaps_seq.la
-lib/openmpi/mca_rmaps_seq.so
+@so lib/openmpi/mca_rmaps_seq.so
lib/openmpi/mca_rml_oob.a
lib/openmpi/mca_rml_oob.la
-lib/openmpi/mca_rml_oob.so
+@so lib/openmpi/mca_rml_oob.so
lib/openmpi/mca_routed_binomial.a
lib/openmpi/mca_routed_binomial.la
-lib/openmpi/mca_routed_binomial.so
+@so lib/openmpi/mca_routed_binomial.so
lib/openmpi/mca_routed_direct.a
lib/openmpi/mca_routed_direct.la
-lib/openmpi/mca_routed_direct.so
+@so lib/openmpi/mca_routed_direct.so
lib/openmpi/mca_routed_radix.a
lib/openmpi/mca_routed_radix.la
-lib/openmpi/mca_routed_radix.so
+@so lib/openmpi/mca_routed_radix.so
lib/openmpi/mca_rtc_hwloc.a
lib/openmpi/mca_rtc_hwloc.la
-lib/openmpi/mca_rtc_hwloc.so
+@so lib/openmpi/mca_rtc_hwloc.so
lib/openmpi/mca_schizo_flux.a
lib/openmpi/mca_schizo_flux.la
-lib/openmpi/mca_schizo_flux.so
+@so lib/openmpi/mca_schizo_flux.so
lib/openmpi/mca_schizo_ompi.a
lib/openmpi/mca_schizo_ompi.la
-lib/openmpi/mca_schizo_ompi.so
+@so lib/openmpi/mca_schizo_ompi.so
lib/openmpi/mca_schizo_orte.a
lib/openmpi/mca_schizo_orte.la
-lib/openmpi/mca_schizo_orte.so
+@so lib/openmpi/mca_schizo_orte.so
lib/openmpi/mca_sharedfp_individual.a
lib/openmpi/mca_sharedfp_individual.la
-lib/openmpi/mca_sharedfp_individual.so
+@so lib/openmpi/mca_sharedfp_individual.so
lib/openmpi/mca_sharedfp_lockedfile.a
lib/openmpi/mca_sharedfp_lockedfile.la
-lib/openmpi/mca_sharedfp_lockedfile.so
+@so lib/openmpi/mca_sharedfp_lockedfile.so
lib/openmpi/mca_sharedfp_sm.a
lib/openmpi/mca_sharedfp_sm.la
-lib/openmpi/mca_sharedfp_sm.so
+@so lib/openmpi/mca_sharedfp_sm.so
lib/openmpi/mca_shmem_mmap.a
lib/openmpi/mca_shmem_mmap.la
-lib/openmpi/mca_shmem_mmap.so
+@so lib/openmpi/mca_shmem_mmap.so
lib/openmpi/mca_shmem_posix.a
lib/openmpi/mca_shmem_posix.la
-lib/openmpi/mca_shmem_posix.so
+@so lib/openmpi/mca_shmem_posix.so
lib/openmpi/mca_shmem_sysv.a
lib/openmpi/mca_shmem_sysv.la
-lib/openmpi/mca_shmem_sysv.so
+@so lib/openmpi/mca_shmem_sysv.so
lib/openmpi/mca_state_app.a
lib/openmpi/mca_state_app.la
-lib/openmpi/mca_state_app.so
+@so lib/openmpi/mca_state_app.so
lib/openmpi/mca_state_hnp.a
lib/openmpi/mca_state_hnp.la
-lib/openmpi/mca_state_hnp.so
+@so lib/openmpi/mca_state_hnp.so
lib/openmpi/mca_state_novm.a
lib/openmpi/mca_state_novm.la
-lib/openmpi/mca_state_novm.so
+@so lib/openmpi/mca_state_novm.so
lib/openmpi/mca_state_orted.a
lib/openmpi/mca_state_orted.la
-lib/openmpi/mca_state_orted.so
+@so lib/openmpi/mca_state_orted.so
lib/openmpi/mca_state_tool.a
lib/openmpi/mca_state_tool.la
-lib/openmpi/mca_state_tool.so
+@so lib/openmpi/mca_state_tool.so
lib/openmpi/mca_topo_basic.a
lib/openmpi/mca_topo_basic.la
-lib/openmpi/mca_topo_basic.so
+@so lib/openmpi/mca_topo_basic.so
lib/openmpi/mca_topo_treematch.a
lib/openmpi/mca_topo_treematch.la
-lib/openmpi/mca_topo_treematch.so
+@so lib/openmpi/mca_topo_treematch.so
lib/openmpi/mca_vprotocol_pessimist.a
lib/openmpi/mca_vprotocol_pessimist.la
-lib/openmpi/mca_vprotocol_pessimist.so
+@so lib/openmpi/mca_vprotocol_pessimist.so
lib/pkgconfig/ompi-c.pc
lib/pkgconfig/ompi-cxx.pc
lib/pkgconfig/ompi-f77.pc
@@ -376,64 +376,64 @@ lib/pkgconfig/orte.pc
lib/pmix/
lib/pmix/mca_bfrops_v12.a
lib/pmix/mca_bfrops_v12.la
-lib/pmix/mca_bfrops_v12.so
+@so lib/pmix/mca_bfrops_v12.so
lib/pmix/mca_bfrops_v20.a
lib/pmix/mca_bfrops_v20.la
-lib/pmix/mca_bfrops_v20.so
+@so lib/pmix/mca_bfrops_v20.so
lib/pmix/mca_bfrops_v21.a
lib/pmix/mca_bfrops_v21.la
-lib/pmix/mca_bfrops_v21.so
+@so lib/pmix/mca_bfrops_v21.so
lib/pmix/mca_bfrops_v3.a
lib/pmix/mca_bfrops_v3.la
-lib/pmix/mca_bfrops_v3.so
+@so lib/pmix/mca_bfrops_v3.so
lib/pmix/mca_gds_ds12.a
lib/pmix/mca_gds_ds12.la
-lib/pmix/mca_gds_ds12.so
+@so lib/pmix/mca_gds_ds12.so
lib/pmix/mca_gds_ds21.a
lib/pmix/mca_gds_ds21.la
-lib/pmix/mca_gds_ds21.so
+@so lib/pmix/mca_gds_ds21.so
lib/pmix/mca_gds_hash.a
lib/pmix/mca_gds_hash.la
-lib/pmix/mca_gds_hash.so
+@so lib/pmix/mca_gds_hash.so
lib/pmix/mca_plog_default.a
lib/pmix/mca_plog_default.la
-lib/pmix/mca_plog_default.so
+@so lib/pmix/mca_plog_default.so
lib/pmix/mca_plog_stdfd.a
lib/pmix/mca_plog_stdfd.la
-lib/pmix/mca_plog_stdfd.so
+@so lib/pmix/mca_plog_stdfd.so
lib/pmix/mca_plog_syslog.a
lib/pmix/mca_plog_syslog.la
-lib/pmix/mca_plog_syslog.so
+@so lib/pmix/mca_plog_syslog.so
lib/pmix/mca_pnet_tcp.a
lib/pmix/mca_pnet_tcp.la
-lib/pmix/mca_pnet_tcp.so
+@so lib/pmix/mca_pnet_tcp.so
lib/pmix/mca_pnet_test.a
lib/pmix/mca_pnet_test.la
-lib/pmix/mca_pnet_test.so
+@so lib/pmix/mca_pnet_test.so
lib/pmix/mca_preg_native.a
lib/pmix/mca_preg_native.la
-lib/pmix/mca_preg_native.so
+@so lib/pmix/mca_preg_native.so
lib/pmix/mca_psec_native.a
lib/pmix/mca_psec_native.la
-lib/pmix/mca_psec_native.so
+@so lib/pmix/mca_psec_native.so
lib/pmix/mca_psec_none.a
lib/pmix/mca_psec_none.la
-lib/pmix/mca_psec_none.so
+@so lib/pmix/mca_psec_none.so
lib/pmix/mca_psensor_file.a
lib/pmix/mca_psensor_file.la
-lib/pmix/mca_psensor_file.so
+@so lib/pmix/mca_psensor_file.so
lib/pmix/mca_psensor_heartbeat.a
lib/pmix/mca_psensor_heartbeat.la
-lib/pmix/mca_psensor_heartbeat.so
+@so lib/pmix/mca_psensor_heartbeat.so
lib/pmix/mca_pshmem_mmap.a
lib/pmix/mca_pshmem_mmap.la
-lib/pmix/mca_pshmem_mmap.so
+@so lib/pmix/mca_pshmem_mmap.so
lib/pmix/mca_ptl_tcp.a
lib/pmix/mca_ptl_tcp.la
-lib/pmix/mca_ptl_tcp.so
+@so lib/pmix/mca_ptl_tcp.so
lib/pmix/mca_ptl_usock.a
lib/pmix/mca_ptl_usock.la
-lib/pmix/mca_ptl_usock.so
+@so lib/pmix/mca_ptl_usock.so
lib/pmpi_f08_interfaces.mod
@man man/man1/mpiCC.1
@man man/man1/mpic++.1
Index: pkg/README
===================================================================
RCS file: pkg/README
diff -N pkg/README
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ pkg/README 27 Jan 2020 07:39:23 -0000
@@ -0,0 +1,60 @@
+$OpenBSD$
+
++-----------------------------------------------------------------------
+| Customizing ${PKGSTEM} execution on OpenBSD
++-----------------------------------------------------------------------
+
+The OpenMPI runtime is controlled by numerous values specified
+on the command line or with environment variables. See mpirun(1) and
+ompi_info(1). Example**:
+
+ $ export PMIX_MCA_gds=hash
+ $ mpirun -np 2 -H localhost:2 \
+ -mca btl tcp,self \
+ -mca mpi_yield_when_idle 1 -- \
+ ./mpitest
+
+These values (at least) are useful:
+
+ OMPI_MCA_btl=self,tcp,vader
+ Avoid "vader" when launching many processes per node
+ and you have an NFS swap file. Or use local backing store.
+ (BTL is byte transfer layer. "vader" is shared memory
+ communication module.)
+
+ OMPI_MCA_mpi_yield_when_idle=1
+ Set to 1 may improve throughput when launching many
+ processes per node.
+
+ PMIX_MCA_gds=hash
+ This is the one gds (general data service) that works on
OpenBSD.
+
+**Example code taken from:
+https://hpcc.usc.edu/support/documentation/examples-of-mpi-programs/
+
+Compile with:
+
+ $ mpicc -o mpitest mpitest.c
+
+/* program hello */
+/* Adapted from mpihello.f by drs */
+
+#include <mpi.h>
+#include <stdio.h>
+#include <unistd.h>
+
+int main(int argc, char **argv)
+{
+ int rank;
+ char hostname[256];
+
+ MPI_Init(&argc,&argv);
+ MPI_Comm_rank(MPI_COMM_WORLD, &rank);
+ gethostname(hostname,255);
+
+ printf("Hello world! I am process number: %d on host %s\n", rank,
hostname);
+
+ MPI_Finalize();
+
+ return 0;
+}