Open MPI logo

Open MPI Development Mailing List Archives

  |   Home   |   Support   |   FAQ   |   all Development mailing list

Subject: Re: [OMPI devel] [OMPI svn-full] svn:open-mpi r29651 - in trunk: config examples oshmem/include oshmem/tools/oshmem_info
From: Jeff Squyres (jsquyres) (jsquyres_at_[hidden])
Date: 2013-11-11 14:56:08


Final comment on this commit: please set svn:ignore on your commits properly:

❯❯❯ svn st .
? hello_shmemfh
? ring_shmem
? ring_shmemfh


On Nov 11, 2013, at 2:49 PM, "Jeff Squyres (jsquyres)" <jsquyres_at_[hidden]> wrote:

> More comments on this commit:
>
> - The Fortran, Java, and C++ MPI examples are now no longer build by default. Er... what happened there, and why?
>
> - Why are the oshmem examples in a separate target? The point of the previous makefile was that "make" (or "make all") would build all relevant examples -- including oshmem examples (if possible).
>
> - Why are the oshmem examples still named/branded as "shmem" (and not oshmem)?
>
>
> On Nov 11, 2013, at 1:22 PM, Jeff Squyres (jsquyres) <jsquyres_at_[hidden]> wrote:
>
>> This commit produces warnings in the output of oshmem_info:
>>
>> OSHMEM Fort shmem.fh: yes
>> **************************************************************************
>> *** DEVELOPER WARNING: A field in ompi_info output is too long and
>> *** will appear poorly in the prettyprint output.
>> ***
>> *** Value: "OSHMEM SGI/Quadrix compatibility mode"
>> *** Max length: 24
>> **************************************************************************
>> OSHMEM SGI/Quadrix compatibility mode: yes
>> **************************************************************************
>> *** DEVELOPER WARNING: A field in ompi_info output is too long and
>> *** will appear poorly in the prettyprint output.
>> ***
>> *** Value: "OSHMEM API functions parameter checking"
>> *** Max length: 24
>> **************************************************************************
>> OSHMEM API functions parameter checking: yes
>> OSHMEM profiling support: yes
>>
>>
>>
>> On Nov 11, 2013, at 9:26 AM, svn-commit-mailer_at_[hidden] wrote:
>>
>>> Author: miked (Mike Dubman)
>>> Date: 2013-11-11 09:26:25 EST (Mon, 11 Nov 2013)
>>> New Revision: 29651
>>> URL: https://svn.open-mpi.org/trac/ompi/changeset/29651
>>>
>>> Log:
>>> Applying Jeff`s comments about proper SHMEM fortran organization of files.
>>> Refs: 3870
>>>
>>> Added:
>>> trunk/examples/hello_shmemfh.f90
>>> trunk/examples/ring_shmemfh.f90
>>> Deleted:
>>> trunk/examples/hello_shmemfh.f
>>> trunk/examples/ring_shmem.f90
>>> trunk/examples/ring_shmemfh.f
>>> Text files modified:
>>> trunk/config/oshmem_configure_options.m4 | 1
>>> trunk/examples/Makefile | 31 ++++++++++-------
>>> trunk/examples/Makefile.include | 5 +-
>>> trunk/examples/README | 5 +-
>>> /dev/null | 19 ----------
>>> trunk/examples/hello_shmemfh.f90 | 22 ++++++++++++
>>> /dev/null | 64 ------------------------------------
>>> /dev/null | 71 ----------------------------------------
>>> trunk/examples/ring_shmemfh.f90 | 62 ++++++++++++++++++++++++++++++++++
>>> trunk/oshmem/include/shmem.fh | 2 +
>>> trunk/oshmem/tools/oshmem_info/Makefile.am | 11 ++++++
>>> trunk/oshmem/tools/oshmem_info/param.c | 18 +++++++++-
>>> 12 files changed, 135 insertions(+), 176 deletions(-)
>>>
>>> Modified: trunk/config/oshmem_configure_options.m4
>>> ==============================================================================
>>> --- trunk/config/oshmem_configure_options.m4 Sat Nov 9 23:12:14 2013 (r29650)
>>> +++ trunk/config/oshmem_configure_options.m4 2013-11-11 09:26:25 EST (Mon, 11 Nov 2013) (r29651)
>>> @@ -112,7 +112,6 @@
>>> [AC_MSG_RESULT([no])])
>>> ])
>>>
>>> -
>>> AC_DEFUN([OSHMEM_SETUP_CFLAGS],[
>>>
>>>
>>>
>>> Modified: trunk/examples/Makefile
>>> ==============================================================================
>>> --- trunk/examples/Makefile Sat Nov 9 23:12:14 2013 (r29650)
>>> +++ trunk/examples/Makefile 2013-11-11 09:26:25 EST (Mon, 11 Nov 2013) (r29651)
>>> @@ -50,8 +50,8 @@
>>> hello_mpifh \
>>> hello_usempi \
>>> hello_usempif08 \
>>> - hello_shmem \
>>> - hello_shmemfh \
>>> + hello_shmem \
>>> + hello_shmemfh \
>>> Hello.class \
>>> ring_c \
>>> ring_cxx \
>>> @@ -60,14 +60,16 @@
>>> ring_usempif08 \
>>> ring_shmem \
>>> ring_shmemfh \
>>> - ring_shmemf90 \
>>> Ring.class \
>>> connectivity_c
>>>
>>> -# Default target. Always build the C example. Only build the others
>>> -# if Open MPI was build with the relevant language bindings.
>>> -
>>> +# Default target.
>>> all: hello_c ring_c connectivity_c
>>> +
>>> +# Always build the C example. Only build the others
>>> +# if Open MPI was build with the relevant language bindings.
>>> +mpi:
>>> +
>>> @ if ompi_info --parsable | grep bindings:cxx:yes >/dev/null; then \
>>> $(MAKE) hello_cxx ring_cxx; \
>>> fi
>>> @@ -83,12 +85,17 @@
>>> @ if ompi_info --parsable | grep bindings:java:yes >/dev/null; then \
>>> $(MAKE) Hello.class Ring.class; \
>>> fi
>>> - @ if ompi_info --parsable | grep mca:shmem >/dev/null; then \
>>> +
>>> +# Only build if we built OSHMEM support.
>>> +# Only build the Fortran examples if we have Fortran OSHMEM support.
>>> +shmem:
>>> + @ if oshmem_info --parsable | grep oshmem:bindings:c >/dev/null; then \
>>> $(MAKE) hello_shmem; \
>>> - $(MAKE) hello_shmemfh; \
>>> $(MAKE) ring_shmem; \
>>> + fi
>>> + @ if oshmem_info --parsable | grep oshmem:bindings:fort >/dev/null; then \
>>> + $(MAKE) hello_shmemfh; \
>>> $(MAKE) ring_shmemfh; \
>>> - $(MAKE) ring_shmemf90; \
>>> fi
>>>
>>> # The usual "clean" target
>>> @@ -120,13 +127,11 @@
>>>
>>> hello_shmem: hello_shmem_c.c
>>> $(SHMEMCC) $(CFLAGS) $^ -o $@
>>> -hello_shmemfh: hello_shmemfh.f
>>> +hello_shmemfh: hello_shmemfh.f90
>>> $(SHMEMFC) $(FCFLAGS) $^ -o $@
>>>
>>> ring_shmem: ring_shmem_c.c
>>> $(SHMEMCC) $(CFLAGS) $^ -o $@
>>> -ring_shmemfh: ring_shmemfh.f
>>> - $(SHMEMFC) $(FCFLAGS) $^ -o $@
>>> -ring_shmemf90: ring_shmem.f90
>>> +ring_shmemfh: ring_shmemfh.f90
>>> $(SHMEMFC) $(FCFLAGS) $^ -o $@
>>>
>>>
>>> Modified: trunk/examples/Makefile.include
>>> ==============================================================================
>>> --- trunk/examples/Makefile.include Sat Nov 9 23:12:14 2013 (r29650)
>>> +++ trunk/examples/Makefile.include 2013-11-11 09:26:25 EST (Mon, 11 Nov 2013) (r29651)
>>> @@ -39,15 +39,14 @@
>>> examples/hello_usempi.f90 \
>>> examples/hello_usempif08.f90 \
>>> examples/hello_shmem_c.c \
>>> - examples/hello_shmemfh.f \
>>> + examples/hello_shmemfh.f90 \
>>> examples/ring_c.c \
>>> examples/ring_cxx.cc \
>>> examples/ring_mpifh.f \
>>> examples/ring_usempi.f90 \
>>> examples/ring_usempif08.f90 \
>>> examples/ring_shmem_c.c \
>>> - examples/ring_shmemfh.f \
>>> - examples/ring_shmem.f90 \
>>> + examples/ring_shmemfh.f90 \
>>> examples/connectivity_c.c \
>>> examples/Hello.java \
>>> examples/Ring.java
>>>
>>> Modified: trunk/examples/README
>>> ==============================================================================
>>> --- trunk/examples/README Sat Nov 9 23:12:14 2013 (r29650)
>>> +++ trunk/examples/README 2013-11-11 09:26:25 EST (Mon, 11 Nov 2013) (r29651)
>>> @@ -31,7 +31,7 @@
>>> Fortran use mpi_f08: hello_usempif08.f90
>>> Java: Hello.java
>>> C shmem.h: hello_shmem_c.c
>>> - Fortran shmemfh.f: hello_shmemfh.f
>>> + Fortran shmem.fh: hello_shmemfh.f90
>>>
>>> - Send a trivial message around in a ring
>>> C: ring_c.c
>>> @@ -41,8 +41,7 @@
>>> Fortran use mpi_f08: ring_usempif08.f90
>>> Java: Ring.java
>>> C shmem.h: ring_shmem_c.c
>>> - Fortran shmemfh.f: ring_shmemfh.f
>>> - F90 shmemfh.f: ring_shmem.f90
>>> + Fortran shmem.fh: ring_shmemfh.f90
>>>
>>> Additionally, there's one further example application, but this one
>>> only uses the MPI C bindings:
>>>
>>> Deleted: trunk/examples/hello_shmemfh.f
>>> ==============================================================================
>>> --- trunk/examples/hello_shmemfh.f 2013-11-11 09:26:25 EST (Mon, 11 Nov 2013) (r29650)
>>> +++ /dev/null 00:00:00 1970 (deleted)
>>> @@ -1,19 +0,0 @@
>>> -C *
>>> -C * Copyright (c) 2013 Mellanox Technologies, Inc.
>>> -C * All rights reserved.
>>> -C * $COPYRIGHT$
>>> -C *
>>> -C * Additional copyrights may follow
>>> -C *
>>> -C * $HEADER$
>>> -C *
>>> -
>>> - program main
>>> - integer proc, nproc
>>> - call START_PES(0)
>>> - proc = MY_PE()
>>> - nproc = NUM_PES()
>>> -
>>> - write(*, '("Hello, world, I am ", i2, " of ", i2)')
>>> - & proc, nproc
>>> - end
>>>
>>> Added: trunk/examples/hello_shmemfh.f90
>>> ==============================================================================
>>> --- /dev/null 00:00:00 1970 (empty, because file is newly added)
>>> +++ trunk/examples/hello_shmemfh.f90 2013-11-11 09:26:25 EST (Mon, 11 Nov 2013) (r29651)
>>> @@ -0,0 +1,22 @@
>>> +!
>>> +! Copyright (c) 2013 Mellanox Technologies, Inc.
>>> +! All rights reserved.
>>> +! $COPYRIGHT$
>>> +!
>>> +! Additional copyrights may follow
>>> +!
>>> +! $HEADER$
>>> +!
>>> +program hello_shmem
>>> + implicit none
>>> + include 'shmem.fh'
>>> +
>>> + integer proc, nproc
>>> +
>>> + call START_PES(0)
>>> + proc = MY_PE()
>>> + nproc = NUM_PES()
>>> +
>>> + write(*, '("Hello, world, I am ", i2, " of ", i2)') proc, nproc
>>> +end program hello_shmem
>>> +
>>>
>>> Deleted: trunk/examples/ring_shmem.f90
>>> ==============================================================================
>>> --- trunk/examples/ring_shmem.f90 2013-11-11 09:26:25 EST (Mon, 11 Nov 2013) (r29650)
>>> +++ /dev/null 00:00:00 1970 (deleted)
>>> @@ -1,64 +0,0 @@
>>> -!
>>> -! Copyright (c) 2013 Mellanox Technologies, Inc.
>>> -! All rights reserved.
>>> -! $COPYRIGHT$
>>> -!
>>> -! Additional copyrights may follow
>>> -!
>>> -! $HEADER$
>>> -!
>>> -
>>> -program ring_shmem_f90
>>> - implicit none
>>> - include 'shmem.fh'
>>> -
>>> - integer*8, save :: rbuf
>>> - integer*8 :: message
>>> - integer :: proc, nproc, next
>>> -! func definitions
>>> - integer :: my_pe, num_pes
>>> -
>>> - rbuf = -1
>>> - message = 10
>>> -
>>> - call start_pes(0)
>>> - proc = my_pe()
>>> - nproc = num_pes()
>>> -
>>> -! Calculate the PE number of the next process in the ring. Use the
>>> -! modulus operator so that the last process "wraps around" to PE 0.
>>> -
>>> - next = mod((proc + 1), nproc)
>>> -
>>> - if (proc == 0) then
>>> - write(*, '("Process 0 sending ", i2, " to", i2, " (", i2, " processes in ring)")') message, next, nproc
>>> - call shmem_put8(rbuf, message, 1, next)
>>> - write(*, '("Process 0 sent to ", i2)') next
>>> - end if
>>> -
>>> -! Pass the message around the ring. The exit mechanism works as
>>> -! follows: the message (a positive integer) is passed around the
>>> -! ring. Each time it passes PE 0, it is decremented. When each
>>> -! processes receives a message containing a 0 value, it passes the
>>> -! message on to the next process and then quits. By passing the 0
>>> -! message first, every process gets the 0 message and can quit
>>> -! normally.
>>> -
>>> - do while(message > 0)
>>> - call shmem_int8_wait_until(rbuf, SHMEM_CMP_EQ, message)
>>> -
>>> - if (proc == 0) then
>>> - message = message - 1
>>> - write(*, '("Process 0 decremented value:", i2)') message
>>> - else
>>> - message = rbuf
>>> - end if
>>> -
>>> - call shmem_put8(rbuf, message, 1, next)
>>> - end do
>>> -
>>> -! All done
>>> -
>>> - write(*, '("Process", i2," exiting.")') proc
>>> -
>>> -end program
>>>
>>> Deleted: trunk/examples/ring_shmemfh.f
>>> ==============================================================================
>>> --- trunk/examples/ring_shmemfh.f 2013-11-11 09:26:25 EST (Mon, 11 Nov 2013) (r29650)
>>> +++ /dev/null 00:00:00 1970 (deleted)
>>> @@ -1,71 +0,0 @@
>>> -C
>>> -C Copyright (c) 2013 Mellanox Technologies, Inc.
>>> -C All rights reserved.
>>> -C $COPYRIGHT$
>>> -C
>>> -C Additional copyrights may follow
>>> -C
>>> -C $HEADER$
>>> -C
>>> -
>>> - program ring_shmem_f77
>>> - implicit none
>>> - include 'shmem.fh'
>>> -
>>> - integer*8 rbuf
>>> - save rbuf
>>> - integer*8 message
>>> - integer proc, nproc, next
>>> -C func definitions
>>> - integer my_pe, num_pes
>>> -
>>> - rbuf = -1
>>> - message = 10
>>> -
>>> - call start_pes(0)
>>> - proc = my_pe()
>>> - nproc = num_pes()
>>> -
>>> -C Calculate the PE number of the next process in the ring. Use the
>>> -C modulus operator so that the last process "wraps around" to PE 0.
>>> -
>>> - next = mod((proc + 1), nproc)
>>> -
>>> - if (proc .eq. 0) then
>>> - write(*, '("Process 0 sending ", i2, " to ", i2,
>>> - & " (", i2, " processes in ring)")')
>>> - & message, next, nproc
>>> - call shmem_put8(rbuf, message, 1, next)
>>> - write(*, '("Process 0 sent to ", i2)') next
>>> - end if
>>> -
>>> -C Pass the message around the ring. The exit mechanism works as
>>> -C follows: the message (a positive integer) is passed around the
>>> -C ring. Each time it passes PE 0, it is decremented. When each
>>> -C processes receives a message containing a 0 value, it passes the
>>> -C message on to the next process and then quits. By passing the 0
>>> -C message first, every process gets the 0 message and can quit
>>> -C normally.
>>> -
>>> - 10 call shmem_int8_wait_until(rbuf, SHMEM_CMP_EQ, message)
>>> -
>>> - if (proc .eq. 0) then
>>> - message = message - 1
>>> - write(*, '("Process 0 decremented value:", i2)') message
>>> - else
>>> - message = rbuf
>>> - end if
>>> -
>>> - call shmem_put8(rbuf, message, 1, next)
>>> -
>>> - if (message .gt. 0) then
>>> - goto 10
>>> - else
>>> - goto 20
>>> - end if
>>> -
>>> -C All done
>>> -
>>> - 20 write(*, '("Process", i2," exiting.")') proc
>>> -
>>> - end
>>>
>>> Added: trunk/examples/ring_shmemfh.f90
>>> ==============================================================================
>>> --- /dev/null 00:00:00 1970 (empty, because file is newly added)
>>> +++ trunk/examples/ring_shmemfh.f90 2013-11-11 09:26:25 EST (Mon, 11 Nov 2013) (r29651)
>>> @@ -0,0 +1,62 @@
>>> +!
>>> +! Copyright (c) 2013 Mellanox Technologies, Inc.
>>> +! All rights reserved.
>>> +! $COPYRIGHT$
>>> +!
>>> +! Additional copyrights may follow
>>> +!
>>> +! $HEADER$
>>> +!
>>> +
>>> +program ring_shmem
>>> + implicit none
>>> + include 'shmem.fh'
>>> +
>>> + integer*8, save :: rbuf
>>> + integer*8 :: message
>>> + integer :: proc, nproc, next
>>> +
>>> + rbuf = -1
>>> + message = 10
>>> +
>>> + call start_pes(0)
>>> + proc = my_pe()
>>> + nproc = num_pes()
>>> +
>>> +! Calculate the PE number of the next process in the ring. Use the
>>> +! modulus operator so that the last process "wraps around" to PE 0.
>>> +
>>> + next = mod((proc + 1), nproc)
>>> +
>>> + if (proc == 0) then
>>> + write(*, '("Process 0 sending ", i2, " to", i2, " (", i2, " processes in ring)")') message, next, nproc
>>> + call shmem_put8(rbuf, message, 1, next)
>>> + write(*, '("Process 0 sent to ", i2)') next
>>> + end if
>>> +
>>> +! Pass the message around the ring. The exit mechanism works as
>>> +! follows: the message (a positive integer) is passed around the
>>> +! ring. Each time it passes PE 0, it is decremented. When each
>>> +! processes receives a message containing a 0 value, it passes the
>>> +! message on to the next process and then quits. By passing the 0
>>> +! message first, every process gets the 0 message and can quit
>>> +! normally.
>>> +
>>> + do while(message > 0)
>>> + call shmem_int8_wait_until(rbuf, SHMEM_CMP_EQ, message)
>>> +
>>> + if (proc == 0) then
>>> + message = message - 1
>>> + write(*, '("Process 0 decremented value:", i2)') message
>>> + else
>>> + message = rbuf
>>> + end if
>>> +
>>> + call shmem_put8(rbuf, message, 1, next)
>>> + end do
>>> +
>>> +! All done
>>> +
>>> + write(*, '("Process", i2," exiting.")') proc
>>> +
>>> +end program
>>>
>>> Modified: trunk/oshmem/include/shmem.fh
>>> ==============================================================================
>>> --- trunk/oshmem/include/shmem.fh Sat Nov 9 23:12:14 2013 (r29650)
>>> +++ trunk/oshmem/include/shmem.fh 2013-11-11 09:26:25 EST (Mon, 11 Nov 2013) (r29651)
>>> @@ -48,6 +48,8 @@
>>> integer SHMEM_CMP_GE
>>> parameter ( SHMEM_CMP_GE = 5 )
>>>
>>> + integer my_pe
>>> + integer num_pes
>>>
>>> logical shmem_pe_accessible
>>> logical shmem_addr_accessible
>>>
>>> Modified: trunk/oshmem/tools/oshmem_info/Makefile.am
>>> ==============================================================================
>>> --- trunk/oshmem/tools/oshmem_info/Makefile.am Sat Nov 9 23:12:14 2013 (r29650)
>>> +++ trunk/oshmem/tools/oshmem_info/Makefile.am 2013-11-11 09:26:25 EST (Mon, 11 Nov 2013) (r29651)
>>> @@ -25,6 +25,17 @@
>>> -DOMPI_BUILD_LIBS="\"@LIBS@\"" \
>>> -DOPAL_CC_ABSOLUTE="\"@OPAL_CC_ABSOLUTE@\"" \
>>> -DOMPI_CXX_ABSOLUTE="\"@OMPI_CXX_ABSOLUTE@\""
>>> +if OSHMEM_PROFILING
>>> + AM_CFLAGS += -DOSHMEM_PROFILING=1
>>> +else
>>> + AM_CFLAGS += -DOSHMEM_PROFILING=0
>>> +endif
>>> +
>>> +if OSHMEM_WANT_FORTRAN_BINDINGS
>>> + AM_CFLAGS += -DOSHMEM_WANT_FORTRAN_BINDINGS=1
>>> +else
>>> + AM_CFLAGS += -DOSHMEM_WANT_FORTRAN_BINDINGS=0
>>> +endif
>>>
>>> include $(top_srcdir)/Makefile.man-page-rules
>>>
>>>
>>> Modified: trunk/oshmem/tools/oshmem_info/param.c
>>> ==============================================================================
>>> --- trunk/oshmem/tools/oshmem_info/param.c Sat Nov 9 23:12:14 2013 (r29650)
>>> +++ trunk/oshmem/tools/oshmem_info/param.c 2013-11-11 09:26:25 EST (Mon, 11 Nov 2013) (r29651)
>>> @@ -116,7 +116,7 @@
>>> char *crdebug_support;
>>> char *topology_support;
>>> char *vt_support;
>>> -
>>> +
>>> /* Do a little preprocessor trickery here to figure opal_info_out the
>>> * tri-state of MPI_PARAM_CHECK (which will be either 0, 1, or
>>> * ompi_mpi_param_check). The preprocessor will only allow
>>> @@ -602,5 +602,19 @@
>>> opal_info_out("MPI_MAX_DATAREP_STRING", "options:mpi-max-datarep-string",
>>> "IO interface not provided");
>>> #endif
>>> -
>>> +
>>> + /* This block displays all the options with which the current
>>> + * installation of oshmem was configured. */
>>> + {
>>> + char *oshmem_fortran = OSHMEM_WANT_FORTRAN_BINDINGS ? "yes" : "no";
>>> + char *oshmem_compat = OSHMEM_SPEC_COMPAT ? "yes" : "no";
>>> + char *oshmem_param_check = OSHMEM_PARAM_CHECK ? "yes" : "no";
>>> + char *oshmem_profiling = OSHMEM_PROFILING ? "yes" : "no";
>>> +
>>> + opal_info_out("OSHMEM C bindings", "oshmem:bindings:c", "yes");
>>> + opal_info_out("OSHMEM Fort shmem.fh", "oshmem:bindings:fort", oshmem_fortran);
>>> + opal_info_out("OSHMEM SGI/Quadrix compatibility mode", "oshmem:options:spec_compat", oshmem_compat);
>>> + opal_info_out("OSHMEM API functions parameter checking", "oshmem:options:param_check", oshmem_param_check);
>>> + opal_info_out("OSHMEM profiling support", "oshmem:options:profiling", oshmem_profiling);
>>> + }
>>> }
>>> _______________________________________________
>>> svn-full mailing list
>>> svn-full_at_[hidden]
>>> http://www.open-mpi.org/mailman/listinfo.cgi/svn-full
>>
>>
>> --
>> Jeff Squyres
>> jsquyres_at_[hidden]
>> For corporate legal information go to: http://www.cisco.com/web/about/doing_business/legal/cri/
>>
>> _______________________________________________
>> devel mailing list
>> devel_at_[hidden]
>> http://www.open-mpi.org/mailman/listinfo.cgi/devel
>
>
> --
> Jeff Squyres
> jsquyres_at_[hidden]
> For corporate legal information go to: http://www.cisco.com/web/about/doing_business/legal/cri/
>
> _______________________________________________
> devel mailing list
> devel_at_[hidden]
> http://www.open-mpi.org/mailman/listinfo.cgi/devel


--
Jeff Squyres
jsquyres_at_[hidden]
For corporate legal information go to: http://www.cisco.com/web/about/doing_business/legal/cri/