3a683419c5
This is hot-fix patch for the issue reported by Ralph. In future we plan to restructure ml data structure layout. Tested by Nathan. cmr=v1.7.5:ticket=trac:4158 This commit was SVN r30619. The following Trac tickets were found above: Ticket 4158 --> https://svn.open-mpi.org/trac/ompi/ticket/4158
112 строки
2.8 KiB
C
112 строки
2.8 KiB
C
/*
|
|
* Copyright (c) 2009-2012 Oak Ridge National Laboratory. All rights reserved.
|
|
* Copyright (c) 2009-2012 Mellanox Technologies. All rights reserved.
|
|
* $COPYRIGHT$
|
|
*
|
|
* Additional copyrights may follow
|
|
*
|
|
* $HEADER$
|
|
*/
|
|
|
|
#ifndef MCA_ML_ALLOC_H
|
|
#define MCA_ML_ALLOC_H
|
|
|
|
#include "ompi_config.h"
|
|
#include "ompi/include/ompi/constants.h"
|
|
#include "ompi/communicator/communicator.h"
|
|
#include "ompi/mca/coll/coll.h"
|
|
#include "ompi/mca/bcol/base/base.h"
|
|
#include "opal/sys/atomic.h"
|
|
#include "ompi/mca/mpool/base/base.h"
|
|
#include "coll_ml_lmngr.h"
|
|
|
|
/*
|
|
Returns a block of memory from mpool
|
|
|
|
ARGS:
|
|
IN ml_component: component descriptor
|
|
OUT ml_memblock: block_addr - Starting address of the memory block
|
|
size - Size of the block
|
|
register_info - Register information passed from the mpool
|
|
|
|
Return
|
|
On Sucess : Returns size of memory block
|
|
On Failure: Returns -1
|
|
|
|
*/
|
|
|
|
struct mca_coll_ml_component_t;
|
|
struct mca_coll_ml_module_t;
|
|
|
|
mca_bcol_base_memory_block_desc_t *mca_coll_ml_allocate_block(
|
|
struct mca_coll_ml_component_t *ml_component,
|
|
struct mca_bcol_base_memory_block_desc_t *ml_memblock
|
|
);
|
|
/* Allocate the memory from mpool */
|
|
/* Register the memory block with bcols */
|
|
|
|
void mca_coll_ml_free_block(
|
|
mca_bcol_base_memory_block_desc_t *ml_memblock
|
|
);
|
|
|
|
|
|
|
|
|
|
/*
|
|
Initialize the memory block and map into buffers and memory banks, and
|
|
also buffer descriptors are initialized.
|
|
|
|
IN ml_memblock: Memory block descriptor
|
|
IN num_buffers: number of buffers
|
|
IN num_banks: number of banks
|
|
Return
|
|
On Sucess: OMPI_SUCCESS
|
|
On Failure: OMPI_ERROR
|
|
*/
|
|
int mca_coll_ml_initialize_block(
|
|
mca_bcol_base_memory_block_desc_t *ml_memblock,
|
|
uint32_t num_buffers,
|
|
uint32_t num_banks,
|
|
uint32_t buffer_size,
|
|
int32_t data_offset,
|
|
opal_list_t *bcols_in_use
|
|
);
|
|
/* Map blocks into buffers and banks */
|
|
/* Initialize the descriptors */
|
|
|
|
|
|
|
|
/*
|
|
Allocate a memory buffer from the block
|
|
IN ml_memblock: Memory block descriptor
|
|
OUT ml_membuffer: Buffer allocated for data from the block
|
|
|
|
Return
|
|
On Sucess: OMPI_SUCCESS
|
|
On Failure: OMPI_ERROR
|
|
*/
|
|
mca_bcol_base_payload_buffer_desc_t *mca_coll_ml_alloc_buffer(
|
|
struct mca_coll_ml_module_t *module);
|
|
|
|
int mca_coll_ml_free_buffer(
|
|
mca_bcol_base_memory_block_desc_t *ml_memblock,
|
|
struct mca_bcol_base_payload_buffer_desc_t *ml_membuffer
|
|
);
|
|
|
|
/*
|
|
Register the memory block with bcol component
|
|
|
|
IN ml_memblock: Memory block descriptor
|
|
OUT registerations (ml_memblock)
|
|
|
|
Return
|
|
On Sucess: OMPI_SUCCESS
|
|
On Failure: OMPI_ERROR
|
|
|
|
*/
|
|
int mca_coll_ml_register_block_bcol(
|
|
mca_bcol_base_memory_block_desc_t *ml_memblock
|
|
);
|
|
|
|
#endif /* MCA_ML_ALLOC_H */
|