Allow the DLL to correctly retrieve the pnding requests from MPI applications.
This commit was SVN r19244.
Этот коммит содержится в:
родитель
ac0160dcd1
Коммит
fc9ae0e835
@ -100,10 +100,10 @@ int ompi_fill_in_type_info(mqs_image *image, char **message)
|
|||||||
}
|
}
|
||||||
i_info->ompi_free_list_t.type = qh_type;
|
i_info->ompi_free_list_t.type = qh_type;
|
||||||
i_info->ompi_free_list_t.size = mqs_sizeof(qh_type);
|
i_info->ompi_free_list_t.size = mqs_sizeof(qh_type);
|
||||||
i_info->ompi_free_list_t.offset.fl_elem_class = mqs_field_offset(qh_type, "fl_elem_class");
|
i_info->ompi_free_list_t.offset.fl_frag_class = mqs_field_offset(qh_type, "fl_frag_class");
|
||||||
i_info->ompi_free_list_t.offset.fl_mpool = mqs_field_offset(qh_type, "fl_mpool");
|
i_info->ompi_free_list_t.offset.fl_mpool = mqs_field_offset(qh_type, "fl_mpool");
|
||||||
i_info->ompi_free_list_t.offset.fl_elem_size = mqs_field_offset(qh_type, "fl_elem_size");
|
i_info->ompi_free_list_t.offset.fl_frag_size = mqs_field_offset(qh_type, "fl_frag_size");
|
||||||
i_info->ompi_free_list_t.offset.fl_alignment = mqs_field_offset(qh_type, "fl_alignment");
|
i_info->ompi_free_list_t.offset.fl_frag_alignment = mqs_field_offset(qh_type, "fl_frag_alignment");
|
||||||
i_info->ompi_free_list_t.offset.fl_allocations = mqs_field_offset(qh_type, "fl_allocations");
|
i_info->ompi_free_list_t.offset.fl_allocations = mqs_field_offset(qh_type, "fl_allocations");
|
||||||
i_info->ompi_free_list_t.offset.fl_max_to_alloc = mqs_field_offset(qh_type, "fl_max_to_alloc");
|
i_info->ompi_free_list_t.offset.fl_max_to_alloc = mqs_field_offset(qh_type, "fl_max_to_alloc");
|
||||||
i_info->ompi_free_list_t.offset.fl_num_per_alloc = mqs_field_offset(qh_type, "fl_num_per_alloc");
|
i_info->ompi_free_list_t.offset.fl_num_per_alloc = mqs_field_offset(qh_type, "fl_num_per_alloc");
|
||||||
|
@ -69,10 +69,10 @@ typedef struct
|
|||||||
mqs_type *type;
|
mqs_type *type;
|
||||||
int size;
|
int size;
|
||||||
struct {
|
struct {
|
||||||
int fl_elem_class; /* opal_class_t* */
|
int fl_frag_class; /* opal_class_t* */
|
||||||
int fl_mpool; /* struct mca_mpool_base_module_t* */
|
int fl_mpool; /* struct mca_mpool_base_module_t* */
|
||||||
int fl_elem_size; /* size_t */
|
int fl_frag_size; /* size_t */
|
||||||
int fl_alignment; /* size_t */
|
int fl_frag_alignment; /* size_t */
|
||||||
int fl_allocations; /* opal_list_t */
|
int fl_allocations; /* opal_list_t */
|
||||||
int fl_max_to_alloc; /* size_t */
|
int fl_max_to_alloc; /* size_t */
|
||||||
int fl_num_per_alloc; /* size_t */
|
int fl_num_per_alloc; /* size_t */
|
||||||
|
@ -115,7 +115,7 @@
|
|||||||
#define VERBOSE_REQ 0x00000010
|
#define VERBOSE_REQ 0x00000010
|
||||||
#define VERBOSE_REQ_DUMP 0x00000020
|
#define VERBOSE_REQ_DUMP 0x00000020
|
||||||
|
|
||||||
#define VERBOSE 0x00000000
|
#define VERBOSE 0xFFFFFFFF
|
||||||
#if VERBOSE
|
#if VERBOSE
|
||||||
#define DEBUG(LEVEL, WHAT) if(LEVEL & VERBOSE) { printf WHAT; }
|
#define DEBUG(LEVEL, WHAT) if(LEVEL & VERBOSE) { printf WHAT; }
|
||||||
#else
|
#else
|
||||||
@ -840,10 +840,10 @@ static void ompi_free_list_t_dump_position( mqs_ompi_free_list_t_pos* position )
|
|||||||
printf( "position->upper_bound = 0x%llx\n", (long long)position->upper_bound );
|
printf( "position->upper_bound = 0x%llx\n", (long long)position->upper_bound );
|
||||||
printf( "position->header_space = %llx\n", (long long)position->header_space );
|
printf( "position->header_space = %llx\n", (long long)position->header_space );
|
||||||
printf( "position->free_list = 0x%llx\n", (long long)position->free_list );
|
printf( "position->free_list = 0x%llx\n", (long long)position->free_list );
|
||||||
printf( "position->fl_elem_class = 0x%llx\n", (long long)position->fl_elem_class );
|
printf( "position->fl_frag_class = 0x%llx\n", (long long)position->fl_frag_class );
|
||||||
printf( "position->fl_mpool = 0x%llx\n", (long long)position->fl_mpool );
|
printf( "position->fl_mpool = 0x%llx\n", (long long)position->fl_mpool );
|
||||||
printf( "position->fl_elem_size = %llx\n", (long long)position->fl_elem_size );
|
printf( "position->fl_frag_size = %llx\n", (long long)position->fl_frag_size );
|
||||||
printf( "position->fl_alignment = %llx\n", (long long)position->fl_alignment );
|
printf( "position->fl_frag_alignment = %llx\n", (long long)position->fl_frag_alignment );
|
||||||
printf( "position->fl_num_per_alloc = %llx\n", (long long)position->fl_num_per_alloc );
|
printf( "position->fl_num_per_alloc = %llx\n", (long long)position->fl_num_per_alloc );
|
||||||
printf( "position->fl_num_allocated = %llx\n", (long long)position->fl_num_allocated );
|
printf( "position->fl_num_allocated = %llx\n", (long long)position->fl_num_allocated );
|
||||||
printf( "position->fl_num_initial_alloc = %llx\n", (long long)position->fl_num_initial_alloc );
|
printf( "position->fl_num_initial_alloc = %llx\n", (long long)position->fl_num_initial_alloc );
|
||||||
@ -859,14 +859,14 @@ static int ompi_free_list_t_init_parser( mqs_process *proc, mpi_process_info *p_
|
|||||||
|
|
||||||
position->free_list = free_list;
|
position->free_list = free_list;
|
||||||
|
|
||||||
position->fl_elem_size =
|
position->fl_frag_size =
|
||||||
ompi_fetch_size_t( proc, position->free_list + i_info->ompi_free_list_t.offset.fl_elem_size,
|
ompi_fetch_size_t( proc, position->free_list + i_info->ompi_free_list_t.offset.fl_frag_size,
|
||||||
p_info );
|
p_info );
|
||||||
position->fl_alignment =
|
position->fl_frag_alignment =
|
||||||
ompi_fetch_size_t( proc, position->free_list + i_info->ompi_free_list_t.offset.fl_alignment,
|
ompi_fetch_size_t( proc, position->free_list + i_info->ompi_free_list_t.offset.fl_frag_alignment,
|
||||||
p_info );
|
p_info );
|
||||||
position->fl_elem_class =
|
position->fl_frag_class =
|
||||||
ompi_fetch_pointer( proc, position->free_list + i_info->ompi_free_list_t.offset.fl_elem_class,
|
ompi_fetch_pointer( proc, position->free_list + i_info->ompi_free_list_t.offset.fl_frag_class,
|
||||||
p_info );
|
p_info );
|
||||||
position->fl_mpool =
|
position->fl_mpool =
|
||||||
ompi_fetch_pointer( proc, position->free_list + i_info->ompi_free_list_t.offset.fl_mpool,
|
ompi_fetch_pointer( proc, position->free_list + i_info->ompi_free_list_t.offset.fl_mpool,
|
||||||
@ -879,13 +879,13 @@ static int ompi_free_list_t_init_parser( mqs_process *proc, mpi_process_info *p_
|
|||||||
p_info );
|
p_info );
|
||||||
|
|
||||||
if( 0 == position->fl_mpool ) {
|
if( 0 == position->fl_mpool ) {
|
||||||
position->header_space = position->fl_elem_size;
|
position->header_space = position->fl_frag_size;
|
||||||
} else {
|
} else {
|
||||||
DEBUG(VERBOSE_GENERAL, ("BLAH !!! (CORRECT ME)\n"));
|
DEBUG(VERBOSE_GENERAL, ("BLAH !!! (CORRECT ME)\n"));
|
||||||
position->header_space = position->fl_elem_size;
|
position->header_space = position->fl_frag_size;
|
||||||
}
|
}
|
||||||
position->header_space = OPAL_ALIGN( position->header_space,
|
position->header_space = OPAL_ALIGN( position->header_space,
|
||||||
position->fl_alignment, mqs_taddr_t );
|
position->fl_frag_alignment, mqs_taddr_t );
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Work around the strange ompi_free_list_t way to allocate elements. The first chunk is
|
* Work around the strange ompi_free_list_t way to allocate elements. The first chunk is
|
||||||
@ -900,12 +900,12 @@ static int ompi_free_list_t_init_parser( mqs_process *proc, mpi_process_info *p_
|
|||||||
if( 0 == position->fl_num_initial_alloc )
|
if( 0 == position->fl_num_initial_alloc )
|
||||||
position->fl_num_initial_alloc = position->fl_num_per_alloc;
|
position->fl_num_initial_alloc = position->fl_num_per_alloc;
|
||||||
}
|
}
|
||||||
DEBUG(VERBOSE_LISTS,("ompi_free_list_t fl_elem_size = %lld fl_header_space = %lld\n"
|
DEBUG(VERBOSE_LISTS,("ompi_free_list_t fl_frag_size = %lld fl_header_space = %lld\n"
|
||||||
" fl_alignment = %lld fl_num_per_alloc = %lld\n"
|
" fl_frag_alignment = %lld fl_num_per_alloc = %lld\n"
|
||||||
" fl_num_allocated = %lld fl_num_initial_alloc = %lld\n"
|
" fl_num_allocated = %lld fl_num_initial_alloc = %lld\n"
|
||||||
" header_space = %lld\n",
|
" header_space = %lld\n",
|
||||||
(long long)position->fl_elem_size, (long long)position->header_space,
|
(long long)position->fl_frag_size, (long long)position->header_space,
|
||||||
(long long)position->fl_alignment, (long long)position->fl_num_per_alloc,
|
(long long)position->fl_frag_alignment, (long long)position->fl_num_per_alloc,
|
||||||
(long long)position->fl_num_allocated, (long long)position->fl_num_initial_alloc,
|
(long long)position->fl_num_allocated, (long long)position->fl_num_initial_alloc,
|
||||||
(long long)position->header_space));
|
(long long)position->header_space));
|
||||||
|
|
||||||
@ -925,7 +925,7 @@ static int ompi_free_list_t_init_parser( mqs_process *proc, mpi_process_info *p_
|
|||||||
*/
|
*/
|
||||||
active_allocation += i_info->ompi_free_list_item_t.size;
|
active_allocation += i_info->ompi_free_list_item_t.size;
|
||||||
active_allocation = OPAL_ALIGN( active_allocation,
|
active_allocation = OPAL_ALIGN( active_allocation,
|
||||||
position->fl_alignment, mqs_taddr_t );
|
position->fl_frag_alignment, mqs_taddr_t );
|
||||||
/**
|
/**
|
||||||
* Now let's try to compute the upper bound ...
|
* Now let's try to compute the upper bound ...
|
||||||
*/
|
*/
|
||||||
@ -971,7 +971,7 @@ static int ompi_free_list_t_next_item( mqs_process *proc, mpi_process_info *p_in
|
|||||||
*/
|
*/
|
||||||
active_allocation += i_info->ompi_free_list_item_t.size;
|
active_allocation += i_info->ompi_free_list_item_t.size;
|
||||||
active_allocation = OPAL_ALIGN( active_allocation,
|
active_allocation = OPAL_ALIGN( active_allocation,
|
||||||
position->fl_alignment, mqs_taddr_t );
|
position->fl_frag_alignment, mqs_taddr_t );
|
||||||
/**
|
/**
|
||||||
* Now let's try to compute the upper bound ...
|
* Now let's try to compute the upper bound ...
|
||||||
*/
|
*/
|
||||||
|
@ -79,10 +79,10 @@ typedef struct {
|
|||||||
mqs_taddr_t upper_bound;
|
mqs_taddr_t upper_bound;
|
||||||
mqs_tword_t header_space;
|
mqs_tword_t header_space;
|
||||||
mqs_taddr_t free_list;
|
mqs_taddr_t free_list;
|
||||||
mqs_tword_t fl_elem_class; /* opal_class_t* */
|
mqs_tword_t fl_frag_class; /* opal_class_t* */
|
||||||
mqs_tword_t fl_mpool; /* struct mca_mpool_base_module_t* */
|
mqs_tword_t fl_mpool; /* struct mca_mpool_base_module_t* */
|
||||||
mqs_tword_t fl_elem_size; /* size_t */
|
mqs_tword_t fl_frag_size; /* size_t */
|
||||||
mqs_tword_t fl_alignment; /* size_t */
|
mqs_tword_t fl_frag_alignment; /* size_t */
|
||||||
mqs_tword_t fl_num_per_alloc; /* size_t */
|
mqs_tword_t fl_num_per_alloc; /* size_t */
|
||||||
mqs_tword_t fl_num_allocated; /* size_t */
|
mqs_tword_t fl_num_allocated; /* size_t */
|
||||||
mqs_tword_t fl_num_initial_alloc; /* size_t */
|
mqs_tword_t fl_num_initial_alloc; /* size_t */
|
||||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user