I have had several people try the temp branch, and things are looking ok. Therefore, I am planning on moving this change into the trunk (hopefully) later this week. Please let me know if there are outstanding problems that have not been reported back to the list.
Thanks, Rich ------ Forwarded Message From: Richard Graham <rlgra...@ornl.gov> List-Post: devel@lists.open-mpi.org Date: Wed, 12 Sep 2007 19:53:19 -0400 Conversation: [RFC] Proposed changes to ompi_free_list Subject: [devel-core] [RFC] Proposed changes to ompi_free_list Proposed changes to the ompi_free_list: Please comment by: 9/19/2007 The current implemenation of ompi_free_list can have two memory regions associated with it, a header (called frag) allocated by malloc, and optional payload (called payload_buffer) allocated from an mpool associated with this list. The interface to ompi_free_list was set when both the free list and the associated payload were obtained by a single allocation, and therefore there exists a single parameter that specifies memory allocation. As a result, it is not possible to specify different alignments for the frag and the payload_buffer. In addition, under some circumstances the payload buffer returned is smaller than requested, and this information is not conveyed to the calling routine. This proposal is to change the interface functions to fully support separate frag and payload memory regions. The proposal is to change ompi_free_list_init to: int ompi_free_list_init( ompi_free_list_t *free_list, size_t frag_size, size_t frag_alignment, opal_class_t* frag_class, size_t payload_buffer_size, size_t payload_buffer_alignment, int num_elements_to_alloc, int max_elements_to_alloc, int num_elements_per_alloc, struct mca_mpool_base_module_t*, ompi_free_list_item_init_fn_t item_init, void *ctx); from: int ompi_free_list_init( ompi_free_list_t *free_list, size_t element_size, opal_class_t* element_class, int num_elements_to_alloc, int max_elements_to_alloc, int num_elements_per_alloc, struct mca_mpool_base_module_t* mpool) and ompi_free_list_init_ex to: int ompi_free_list_init_ex( ompi_free_list_t *free_list, size_t frag_size, size_t frag_alignment, opal_class_t* frag_class, size_t payload_buffer_size, size_t payload_buffer_alignment, int num_elements_to_alloc, int max_elements_to_alloc, int num_elements_per_alloc, struct mca_mpool_base_module_t*, ompi_free_list_item_init_fn_t item_init, void *ctx ); from: int ompi_free_list_init_ex( ompi_free_list_t *free_list, size_t element_size, size_t alignment, opal_class_t* element_class, int num_elements_to_alloc, int max_elements_to_alloc, int num_elements_per_alloc, struct mca_mpool_base_module_t*, ompi_free_list_item_init_fn_t item_init, void *ctx ); Current default alignment to ompi_free_list_init is CACHE_LINE_SIZE, which will be kept as the default alignment to current calls to ompi_free_list_init(). Currently, both frag and payload_buffer are controlled by a single parameter in ompi_free_list_init_ex(). This will be kept for current calls to mpi_free_list_init_ex(), setting both frag_alignment and payload_buffer_alignment to the same value. In addition, ompi_free_list_t will change to: struct ompi_free_list_t { opal_atomic_lifo_t super; size_t fl_max_to_alloc; size_t fl_num_allocated; size_t fl_num_per_alloc; size_t fl_num_waiting; size_t fl_frag_size; size_t fl_frag_alignment; size_t fl_payload_buffer_size; size_t fl_payload_buffer_alignment; opal_class_t* fl_elem_class; struct mca_mpool_base_module_t* fl_mpool; opal_mutex_t fl_lock; opal_condition_t fl_condition; opal_list_t fl_allocations; ompi_free_list_item_init_fn_t item_init; void* ctx; }; from: struct ompi_free_list_t { opal_atomic_lifo_t super; size_t fl_max_to_alloc; size_t fl_num_allocated; size_t fl_num_per_alloc; size_t fl_num_waiting; size_t fl_elem_size; size_t fl_alignment; opal_class_t* fl_elem_class; struct mca_mpool_base_module_t* fl_mpool; opal_mutex_t fl_lock; opal_condition_t fl_condition; opal_list_t fl_allocations; ompi_free_list_item_init_fn_t item_init; void* ctx; }; Thanks, Rich _______________________________________________ devel-core mailing list devel-c...@open-mpi.org http://www.open-mpi.org/mailman/listinfo.cgi/devel-core ------ End of Forwarded Message