1
1
it is not fully functional yet, but initial version is good enough.
developed by Igor, reviewed by miked

This commit was SVN r29430.
Этот коммит содержится в:
Mike Dubman 2013-10-12 19:15:36 +00:00
родитель 2141e9e6b4
Коммит 14304c299d
5 изменённых файлов: 82 добавлений и 2 удалений

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

@ -141,6 +141,21 @@ esac
AC_SUBST([OSHMEM_CFLAGS])
OPAL_CHECK_PMI([pmi_oshmem], [pmi_oshmem_happy="yes"], [pmi_oshmem_happy="no"])
AC_SUBST([pmi_oshmem_CPPFLAGS])
AC_SUBST([pmi_oshmem_LDFLAGS])
AC_SUBST([pmi_oshmem_LIBS])
AS_IF(
[test "$pmi_oshmem_happy" = "yes"],
[
OSHMEM_CFLAGS="$OSHMEM_CFLAGS $pmi_oshmem_CPPFLAGS"
OSHMEM_LDFLAGS="$OSHMEM_LDFLAGS $pmi_oshmem_LDFLAGS $pmi_oshmem_LIBS"
])
AC_SUBST([OSHMEM_CFLAGS])
AC_SUBST([OSHMEM_LDFLAGS])
OMPI_CHECK_OPENFABRICS([oshmem_verbs],

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

@ -380,6 +380,7 @@ OSHMEM_DECLSPEC int shmem_my_pe(void);
OSHMEM_DECLSPEC void shmem_put(void *target, const void *source, size_t len, int pe);
OSHMEM_DECLSPEC void shmem_get(void *target, const void *source, size_t len, int pe);
OSHMEM_DECLSPEC void globalexit(int status);
#if defined(c_plusplus) || defined(__cplusplus)

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

@ -196,6 +196,21 @@ static void* shmem_opal_thread(void* argc)
}
#endif
int inGlobalExit;
static void sighandler__SIGUSR1(int signum)
{
if (0 != inGlobalExit)
{
return;
}
_exit(0);
}
static void sighandler__SIGTERM(int signum)
{
/* Do nothing. Just replace other unpredictalbe handlers with this one (e.g. mxm handler). */
}
int oshmem_shmem_init(int argc, char **argv, int requested, int *provided)
{
int ret = OSHMEM_SUCCESS;
@ -225,7 +240,10 @@ int oshmem_shmem_init(int argc, char **argv, int requested, int *provided)
#endif
}
}
#ifdef SIGUSR1
signal(SIGUSR1,sighandler__SIGUSR1);
signal(SIGTERM,sighandler__SIGTERM);
#endif
return ret;
}

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

@ -53,7 +53,8 @@ SHMEM_API_SOURCES = \
shmem_clear_lock.c \
shmem_set_lock.c \
shmem_test_lock.c \
shmem_lock.c
shmem_lock.c \
globalexit.c
AM_CFLAGS = $(OSHMEM_CFLAGS)

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

@ -0,0 +1,45 @@
/*
* Copyright (c) 2012 Mellanox Technologies, Inc.
* All rights reserved.
* $COPYRIGHT$
*
* Additional copyrights may follow
*
* $HEADER$
*/
#include "oshmem_config.h"
#include "oshmem/include/shmem.h"
#include "oshmem/runtime/runtime.h"
#include "orte/mca/odls/odls_types.h"
#include "orte/mca/errmgr/errmgr.h"
#include "opal/dss/dss.h"
#include "orte/mca/rml/rml.h"
#if WANT_PMI_SUPPORT
#include <pmi.h>
#endif
extern int inGlobalExit;
void globalexit(int status)
{
inGlobalExit++;
if ((ORTE_JOBID_INVALID != ORTE_PROC_MY_DAEMON->jobid) &&
(0 != ORTE_PROC_MY_DAEMON->jobid) )
{
orte_errmgr.abort(status, NULL);
}
else
{
#if WANT_PMI_SUPPORT
PMI_Abort(status, NULL);
#endif /* WANT_PMI_SUPPORT */
_exit(status);
}
oshmem_shmem_aborted = true;
exit(status);
}