[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