oshmem: Align OSHMEM API with spec v1.2 (add new functions)
Этот коммит содержится в:
родитель
50d68cc02e
Коммит
2dc2159b4c
@ -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
Обычный файл
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
Обычный файл
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);
|
||||
}
|
Загрузка…
x
Ссылка в новой задаче
Block a user