Hi Martin,

Thanks for the pointer to a ports page (I needed to reread it,
clearly!).

Just one nit to your example: perhaps reformat to style(9).


John

On 2020-01-27 01:12, Martin Reindl wrote:
[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;
+}

Reply via email to