/* * 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 "opal/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 */