1
1

oshmem: Align OSHMEM API with spec v1.2 (add new functions)

Этот коммит содержится в:
Igor Ivanov 2015-11-19 12:23:01 +02:00
родитель 50d68cc02e
Коммит 2dc2159b4c
9 изменённых файлов: 118 добавлений и 6 удалений

Просмотреть файл

@ -13,6 +13,16 @@
!
! TODO: exact values should be found during configuration
!
integer SHMEM_MAJOR_VERSION
parameter ( SHMEM_MAJOR_VERSION = 1 )
integer SHMEM_MINOR_VERSION
parameter ( SHMEM_MINOR_VERSION = 2 )
CHARACTER(LEN = 256), PARAMETER :: SHMEM_VENDOR_STRING = "http://www.open-mpi.org/"
integer SHMEM_MAX_NAME_LEN
parameter ( SHMEM_MAX_NAME_LEN = 256-1 )
integer SHMEM_BARRIER_SYNC_SIZE
parameter ( SHMEM_BARRIER_SYNC_SIZE = 4 )
@ -20,7 +30,6 @@
integer SHMEM_BCAST_SYNC_SIZE
parameter ( SHMEM_BCAST_SYNC_SIZE = 8 )
integer SHMEM_COLLECT_SYNC_SIZE
parameter ( SHMEM_COLLECT_SYNC_SIZE = 8 )

Просмотреть файл

@ -79,6 +79,11 @@ extern "C" {
/*
* Constants and definitions
*/
#define SHMEM_MAJOR_VERSION 1
#define SHMEM_MINOR_VERSION 2
#define SHMEM_VENDOR_STRING "http://www.open-mpi.org/"
#define SHMEM_MAX_NAME_LEN sizeof(SHMEM_VENDOR_STRING)
enum shmem_wait_ops {
SHMEM_CMP_EQ,
SHMEM_CMP_NE,
@ -110,13 +115,17 @@ OSHMEM_DECLSPEC void shmem_init(void);
OSHMEM_DECLSPEC void shmem_finalize(void) OSHMEM_DESTRUCTOR;
OSHMEM_DECLSPEC void shmem_global_exit(int status);
/*
* Query routines
*/
OSHMEM_DECLSPEC int shmem_n_pes(void);
OSHMEM_DECLSPEC int shmem_my_pe(void);
/*
* Info routines
*/
OSHMEM_DECLSPEC void shmem_info_get_version(int *major, int *minor);
OSHMEM_DECLSPEC void shmem_info_get_name(char *name);
/*
* Accessability routines

Просмотреть файл

@ -56,7 +56,8 @@ OSHMEM_API_SOURCES = \
shmem_clear_lock.c \
shmem_set_lock.c \
shmem_test_lock.c \
shmem_global_exit.c
shmem_global_exit.c \
shmem_info.c
AM_CPPFLAGS = -DOSHMEM_PROFILING=0

Просмотреть файл

@ -68,7 +68,8 @@ OSHMEM_API_SOURCES = \
pshmem_clear_lock.c \
pshmem_set_lock.c \
pshmem_test_lock.c \
pshmem_global_exit.c
pshmem_global_exit.c \
pshmem_info.c
nodist_liboshmem_c_pshmem_la_SOURCES = \
$(OSHMEM_API_SOURCES)

36
oshmem/shmem/c/shmem_info.c Обычный файл
Просмотреть файл

@ -0,0 +1,36 @@
/*
* Copyright (c) 2015 Mellanox Technologies, Inc.
* All rights reserved.
* $COPYRIGHT$
*
* Additional copyrights may follow
*
* $HEADER$
*/
#include "oshmem_config.h"
#include <string.h>
#include <assert.h>
#include "oshmem/constants.h"
#include "oshmem/include/shmem.h"
void shmem_info_get_version(int *major, int *minor)
{
if (major) {
*major = SHMEM_MAJOR_VERSION;
}
if (minor) {
*minor = SHMEM_MINOR_VERSION;
}
}
void shmem_info_get_name(char *name)
{
if (name) {
assert(sizeof(SHMEM_VENDOR_STRING) < SHMEM_MAX_NAME_LEN);
memset(name, 0, SHMEM_MAX_NAME_LEN);
memcpy(name, SHMEM_VENDOR_STRING, sizeof(SHMEM_VENDOR_STRING));
}
}

Просмотреть файл

@ -125,7 +125,8 @@ liboshmem_fortran_la_SOURCES += \
shmem_int4_inc_f.c \
shmem_int8_inc_f.c \
shmem_quiet_f.c \
shmem_fence_f.c
shmem_fence_f.c \
shmem_info_f.c
AM_CPPFLAGS = -DOSHMEM_PROFILING=0
endif

Просмотреть файл

@ -117,7 +117,8 @@ nodist_liboshmem_fortran_pshmem_la_SOURCES = \
pshmem_int4_inc_f.c \
pshmem_int8_inc_f.c \
pshmem_quiet_f.c \
pshmem_fence_f.c
pshmem_fence_f.c \
pshmem_info_f.c
#
# Sym link in the sources from the real OSHMEM directory

Просмотреть файл

@ -29,6 +29,8 @@ PN (MPI_Fint, num_pes, NUM_PES, (void));
PN (MPI_Fint, shmem_my_pe, SHMEM_MY_PE, (void));
PN (MPI_Fint, my_pe, MY_PE, (void));
OSHMEM_DECLSPEC MPI_Fint _my_pe_(void);
PN (void, shmem_info_get_version, SHMEM_INFO_GET_VERSION, (MPI_Fint *major, MPI_Fint *minor));
PN (void, shmem_info_get_name, SHMEM_INFO_GET_NAME, (char *name));
PN (void, shmem_finalize, SHMEM_FINALIZE, (void));
PN (void, shmem_barrier_all, SHMEM_BARRIER_ALL, (void));
PN (void, shpalloc, SHPALLOC, (FORTRAN_POINTER_T *addr, MPI_Fint *length, MPI_Fint *errcode, MPI_Fint *abort));

52
oshmem/shmem/fortran/shmem_info_f.c Обычный файл
Просмотреть файл

@ -0,0 +1,52 @@
/*
* Copyright (c) 2013 Mellanox Technologies, Inc.
* All rights reserved.
* Copyright (c) 2013 Cisco Systems, Inc. All rights reserved.
* $COPYRIGHT$
*
* Additional copyrights may follow
*
* $HEADER$
*/
#include "oshmem_config.h"
#include <string.h>
#include "ompi/mpi/fortran/base/strings.h"
#include "oshmem/shmem/fortran/bindings.h"
#include "oshmem/include/shmem.h"
SHMEM_GENERATE_FORTRAN_BINDINGS_SUB (void,
SHMEM_INFO_GET_VERSION,
shmem_info_get_version_,
shmem_info_get_version__,
shmem_info_get_version_f,
(MPI_Fint *major, MPI_Fint *minor),
(major,minor) )
void shmem_info_get_version_f(MPI_Fint *major, MPI_Fint *minor)
{
int c_major, c_minor;
shmem_info_get_version(&c_major, &c_minor);
*major = OMPI_INT_2_FINT(c_major);
*minor = OMPI_INT_2_FINT(c_minor);
}
SHMEM_GENERATE_FORTRAN_BINDINGS_SUB (void,
SHMEM_INFO_GET_NAME,
shmem_info_get_name_,
shmem_info_get_name__,
shmem_info_get_name_f,
(char *name),
(name) )
void shmem_info_get_name_f(char *name)
{
char c_name[SHMEM_MAX_NAME_LEN];
shmem_info_get_name(c_name);
ompi_fortran_string_c2f(c_name, name, strlen(c_name) + 1);
}