⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rml_cnos.c

📁 MPI stands for the Message Passing Interface. Written by the MPI Forum (a large committee comprising
💻 C
字号:
/* * Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana *                         University Research and Technology *                         Corporation.  All rights reserved. * Copyright (c) 2004-2005 The University of Tennessee and The University *                         of Tennessee Research Foundation.  All rights *                         reserved. * Copyright (c) 2004-2005 High Performance Computing Center Stuttgart,  *                         University of Stuttgart.  All rights reserved. * Copyright (c) 2004-2005 The Regents of the University of California. *                         All rights reserved. * $COPYRIGHT$ *  * Additional copyrights may follow *  * $HEADER$ */#include "orte_config.h"#include "orte/orte_constants.h"#include "opal/util/output.h"#include "orte/mca/rml/base/base.h"#include "rml_cnos.h"#include "orte/mca/errmgr/errmgr.h"#if OMPI_RML_CNOS_HAVE_BARRIER#include <catamount/cnos_mpi_os.h>#endiforte_rml_component_t mca_rml_cnos_component = {    /* First, the mca_base_component_t struct containing meta     * information about the component itself */    {        /* Indicate that we are a rml v1.0.0 component (which also         * implies a specific MCA version) */        ORTE_RML_BASE_VERSION_1_0_0,        "cnos",			       /* MCA component name */        ORTE_MAJOR_VERSION,		       /* MCA component major version */        ORTE_MINOR_VERSION,		       /* MCA component minor version */        ORTE_RELEASE_VERSION,	       /* MCA component release version */        orte_rml_cnos_open,		       /* component open */        orte_rml_cnos_close,		       /* component close */    }    ,    /* Next the MCA v1.0.0 component meta data */    {        /* Whether the component is checkpointable or not */        false}    ,    orte_rml_cnos_init};orte_rml_module_t orte_rml_cnos_module = {    orte_rml_cnos_module_init,    orte_rml_cnos_module_fini,    orte_rml_cnos_get_uri,    orte_rml_cnos_set_uri,    orte_rml_cnos_parse_uris,    orte_rml_cnos_ping,    orte_rml_cnos_send,    orte_rml_cnos_send_nb,    orte_rml_cnos_send_buffer,    orte_rml_cnos_send_buffer_nb,    orte_rml_cnos_recv,    orte_rml_cnos_recv_nb,    orte_rml_cnos_recv_buffer,    orte_rml_cnos_recv_buffer_nb,    orte_rml_cnos_recv_cancel,    orte_rml_cnos_barrier,    orte_rml_cnos_xcast};intorte_rml_cnos_open(void){    return ORTE_SUCCESS;}orte_rml_module_t *orte_rml_cnos_init(int *priority){    *priority = 0;    return &orte_rml_cnos_module;}intorte_rml_cnos_close(void){    return ORTE_SUCCESS;}intorte_rml_cnos_module_init(void){    return ORTE_SUCCESS;}intorte_rml_cnos_module_fini(void){    return ORTE_SUCCESS;}char *orte_rml_cnos_get_uri(void){    return "(none)";}intorte_rml_cnos_set_uri(const char *name){    return ORTE_ERR_NOT_SUPPORTED;}intorte_rml_cnos_parse_uris(const char *uri,			   orte_process_name_t * peer, char ***uris){    return ORTE_ERR_NOT_SUPPORTED;}intorte_rml_cnos_ping(const char *uri, const struct timeval *tv){    return ORTE_ERR_NOT_SUPPORTED;}intorte_rml_cnos_send(orte_process_name_t * peer,		     struct iovec *msg, int count, int tag, int flags){    return ORTE_ERR_NOT_SUPPORTED;}intorte_rml_cnos_send_buffer(orte_process_name_t * peer,			    orte_buffer_t * buffer,			    orte_rml_tag_t tag, int flags){    return ORTE_ERR_NOT_SUPPORTED;}intorte_rml_cnos_recv(orte_process_name_t * peer,		     struct iovec *msg,		     int count, orte_rml_tag_t tag, int flags){    return ORTE_ERR_NOT_SUPPORTED;}intorte_rml_cnos_recv_buffer(orte_process_name_t * peer,			    orte_buffer_t * buf, orte_rml_tag_t tag){    return ORTE_ERR_NOT_SUPPORTED;}intorte_rml_cnos_send_nb(orte_process_name_t * peer,			struct iovec *msg,			int count,			orte_rml_tag_t tag,			int flags, orte_rml_callback_fn_t cbfunc, void *cbdata){    return ORTE_SUCCESS;}intorte_rml_cnos_send_buffer_nb(orte_process_name_t * peer,			       orte_buffer_t * buffer,			       orte_rml_tag_t tag,			       int flags,			       orte_rml_buffer_callback_fn_t			       cbfunc, void *cbdata){    return ORTE_SUCCESS;}intorte_rml_cnos_recv_nb(orte_process_name_t * peer,			struct iovec *msg,			int count,			orte_rml_tag_t tag,			int flags, orte_rml_callback_fn_t cbfunc, void *cbdata){    return ORTE_SUCCESS;}intorte_rml_cnos_recv_buffer_nb(orte_process_name_t * peer,			       orte_rml_tag_t tag,			       int flags,			       orte_rml_buffer_callback_fn_t			       cbfunc, void *cbdata){    return ORTE_SUCCESS;}intorte_rml_cnos_recv_cancel(orte_process_name_t * peer, orte_rml_tag_t tag){    return ORTE_ERR_NOT_SUPPORTED;}intorte_rml_cnos_barrier(void){#if OMPI_RML_CNOS_HAVE_BARRIER    cnos_barrier();#endif    return ORTE_SUCCESS;}intorte_rml_cnos_xcast(orte_process_name_t * root,                    orte_process_name_t * peers,                    size_t num_peers,                    orte_buffer_t * buffer,                    orte_gpr_trigger_cb_fn_t cbfunc,                    void *user_tag){    if (NULL != root || NULL != peers || 0 != num_peers ||         NULL != buffer || NULL != user_tag) {        return ORTE_ERR_NOT_SUPPORTED;    }    orte_rml_cnos_barrier();    if (NULL != cbfunc) {        orte_gpr_notify_message_t *msg;        msg = OBJ_NEW(orte_gpr_notify_message_t);        if (NULL == msg) {            ORTE_ERROR_LOG(ORTE_ERR_OUT_OF_RESOURCE);            return ORTE_ERR_OUT_OF_RESOURCE;        }        cbfunc(msg);        OBJ_RELEASE(msg);    }    return ORTE_SUCCESS;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -