mtl_psm_recv.c

来自「MPI stands for the Message Passing Inter」· C语言 代码 · 共 80 行

C
80
字号
/* * Copyright (c) 2004-2006 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-2006 The Regents of the University of California. *                         All rights reserved. * Copyright (c) 2006      QLogic Corporation. All rights reserved. * $COPYRIGHT$ * * Additional copyrights may follow * * $HEADER$ */#include "ompi_config.h"#include "ompi/request/request.h"#include "ompi/datatype/datatype.h"#include "ompi/communicator/communicator.h"#include "ompi/datatype/convertor.h"#include "ompi/mca/mtl/base/mtl_base_datatype.h"#include "mtl_psm.h"#include "mtl_psm_types.h"#include "mtl_psm_request.h"intompi_mtl_psm_irecv(struct mca_mtl_base_module_t* mtl,                  struct ompi_communicator_t *comm,                  int src,                  int tag,                  struct ompi_convertor_t *convertor,                  struct mca_mtl_request_t *mtl_request){    int ret;        psm_error_t err;    mca_mtl_psm_request_t * mtl_psm_request = (mca_mtl_psm_request_t*) mtl_request;    uint64_t mqtag;    uint64_t tagsel;    size_t length;        ret = ompi_mtl_datatype_recv_buf(convertor,                                     &mtl_psm_request->buf,                                     &length,                                      &mtl_psm_request->free_after);        if (OMPI_SUCCESS != ret) return ret;    mtl_psm_request->length = length;    mtl_psm_request->convertor = convertor;    mtl_psm_request->type = OMPI_MTL_PSM_IRECV;    PSM_MAKE_TAGSEL(src, tag, comm->c_contextid, mqtag, tagsel);#if 0    printf("recv bits:   0x%016llx 0x%016llx\n", mqtag, tagsel);#endif    err = psm_mq_irecv(ompi_mtl_psm.mq, 		       mqtag,		       tagsel,		       0,		       mtl_psm_request->buf,		       length,		       mtl_psm_request,		       &mtl_psm_request->psm_request);        if (err) {        opal_output(0, "Error in psm_mq_irecv (error %s)\n", psm_error_get_string(err));        return OMPI_ERROR;    }    return OMPI_SUCCESS;}

⌨️ 快捷键说明

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