44003a41f2
than relying on cnos to get the nid/pid map. This commit was SVN r17588.
164 строки
5.0 KiB
C
164 строки
5.0 KiB
C
/*
|
|
* 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$
|
|
*
|
|
* Additional copyrights may follow
|
|
*
|
|
* $HEADER$
|
|
*/
|
|
|
|
#ifndef OMPI_MCA_COMMON_PORTALS_H
|
|
#define OMPI_MCA_COMMON_PORTALS_H
|
|
|
|
#if OMPI_PORTALS_UTCP
|
|
|
|
#include <portals3.h>
|
|
#include <stdio.h>
|
|
#include <p3nal_utcp.h>
|
|
#include <p3rt/p3rt.h>
|
|
#include <p3api/debug.h>
|
|
|
|
#define OMPI_BTL_PORTALS_SEND_TABLE_ID 0
|
|
#define OMPI_BTL_PORTALS_RDMA_TABLE_ID 1
|
|
|
|
#define OMPI_MTL_PORTALS_SEND_TABLE_ID 2
|
|
#define OMPI_MTL_PORTALS_READ_TABLE_ID 3
|
|
#define OMPI_MTL_PORTALS_ACK_TABLE_ID 4
|
|
|
|
#elif (OMPI_PORTALS_CRAYXT3 || OMPI_PORTALS_CRAYXT3_MODEX)
|
|
#include <portals/portals3.h>
|
|
#define PTL_EQ_HANDLER_NONE NULL
|
|
/* Cray's definition, differs from the spec */
|
|
#define PTL_NO_ACK_REQ PTL_NOACK_REQ
|
|
|
|
#define OMPI_BTL_PORTALS_SEND_TABLE_ID 30
|
|
#define OMPI_BTL_PORTALS_RDMA_TABLE_ID 31
|
|
|
|
#define OMPI_MTL_PORTALS_SEND_TABLE_ID 32
|
|
#define OMPI_MTL_PORTALS_READ_TABLE_ID 33
|
|
#define OMPI_MTL_PORTALS_ACK_TABLE_ID 34
|
|
|
|
#else
|
|
|
|
#error "Unknown Portals library configuration"
|
|
|
|
#endif
|
|
|
|
#include "ompi/proc/proc.h"
|
|
|
|
|
|
/**
|
|
* Simple identifier for identifying node/process
|
|
*
|
|
* Get a string representing a simple way to identify the node/rank of
|
|
* the current process. Currently returns the rank in the job on the
|
|
* XT-3 or the hostname/pid on the reference implementation.
|
|
*
|
|
* \note Caller is responsible for calling free() on the returned
|
|
* string.
|
|
*/
|
|
char* ompi_common_portals_nodeid(void);
|
|
|
|
|
|
/**
|
|
* Register MCA parameters for Portals code
|
|
*
|
|
* Register MCA parameters for Portals common code. This should be
|
|
* called during component open so that parameters are available to
|
|
* omp_info and the like. This call will not intiailize the Portals
|
|
* interface or cause any communication.
|
|
*
|
|
* @retval OMPI_SUCCESS
|
|
*/
|
|
int ompi_common_portals_register_mca(void);
|
|
|
|
|
|
/**
|
|
* Initialize compatibility code
|
|
*
|
|
* Initialize Portals compatibility code. A best effort is made to
|
|
* initialize Portals (with PtlInit() and PtlNIInit(), although this
|
|
* may not be possible if use of the modex is required to setup the
|
|
* network (as is the case with the utcp reference implementation).
|
|
*
|
|
* @param ni_handle (OUT) network interface handle
|
|
* @param bool (OUT) true if using accelerated Portals, false otherwise
|
|
*
|
|
* @retval OMPI_SUCCESS Portals successfully initialized
|
|
* @retval OMPI_ERR_NOT_AVAILABLE Portals could not be initialized
|
|
*/
|
|
int ompi_common_portals_initialize(ptl_handle_ni_t *ni_handle, bool *accel);
|
|
|
|
/**
|
|
* Initialize network interface
|
|
*
|
|
* Initialize the portals network interface. The initializization may
|
|
* actually have happened in ompi_common_portals_initialize(), but
|
|
* this will return the network interface handle. This function may
|
|
* require some information shared by the modex, so should only be
|
|
* called after the modex data is available.
|
|
*
|
|
* @param ni_handle (OUT) network interface handle
|
|
* @param bool (OUT) true if using accelerated Portals, false otherwise
|
|
*
|
|
* @retval OMPI_SUCCESS Portals network interface successfully initialized
|
|
* @retval OMPI_ERROR Something bad happened
|
|
*/
|
|
int ompi_common_portals_ni_initialize(ptl_handle_ni_t *ni_handle, bool *accel);
|
|
|
|
|
|
/**
|
|
* Get process_id_t array for proc list
|
|
*
|
|
* Get ptl_process_id_t array for proc list
|
|
*
|
|
* @param nprocs (IN) Number of procs in proc list
|
|
* @param procs (IN) List of OMPI procs
|
|
* @param portals_procs (OUT) array of ptl_process_id_t
|
|
* structures associated with OMPI procs
|
|
*
|
|
* @retval OMPI_SUCCESS All went well
|
|
* @retval OMPI_ERROR All went poorly
|
|
*/
|
|
int ompi_common_portals_get_procs(size_t nprocs,
|
|
struct ompi_proc_t **procs,
|
|
ptl_process_id_t *portals_procs);
|
|
|
|
|
|
/**
|
|
* Shut down Portals network interface
|
|
*
|
|
* Shut down Portals network devince , including calling PtlNIFini()
|
|
* if appropriate. The common code will reference count so that it is
|
|
* safe for each component that calls
|
|
* ompi_component_portals_ni_initialize() to call
|
|
* ompi_common_portals_ni_finalize()
|
|
*/
|
|
int ompi_common_portals_ni_finalize(void);
|
|
|
|
|
|
/**
|
|
* Shut down Portals
|
|
*
|
|
* Shut down Portals, including calling PtlFini() if appropriate. The
|
|
* common code will reference count so that it is safe for each
|
|
* component that calls ompi_component_portals_initialize() to call
|
|
* ompi_common_portals_finalize()
|
|
*/
|
|
int ompi_common_portals_finalize(void);
|
|
|
|
|
|
int ompi_common_portals_error_ptl_to_ompi(int ptl_error);
|
|
|
|
|
|
#endif /* OMPI_MCA_COMMON_PORTALS_H */
|