Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

tau memory_instrumentation (v3.0.x) #4

Open
wants to merge 1 commit into
base: v3.0.x
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions ompi/communicator/comm_init.c
Original file line number Diff line number Diff line change
Expand Up @@ -219,6 +219,7 @@ ompi_communicator_t *ompi_comm_allocate ( int local_size, int remote_size )

/* create new communicator element */
new_comm = OBJ_NEW(ompi_communicator_t);
Tau_start_class_allocation(new_comm->c_base.obj_class->cls_name, 0, 0);
new_comm->c_local_group = ompi_group_allocate ( local_size );
if ( 0 < remote_size ) {
new_comm->c_remote_group = ompi_group_allocate (remote_size);
Expand All @@ -234,6 +235,7 @@ ompi_communicator_t *ompi_comm_allocate ( int local_size, int remote_size )

/* fill in the inscribing hyper-cube dimensions */
new_comm->c_cube_dim = opal_cube_dim(local_size);
Tau_stop_class_allocation(new_comm->c_base.obj_class->cls_name, 0);

return new_comm;
}
Expand Down
17 changes: 16 additions & 1 deletion ompi/group/group_init.c
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,11 @@ ompi_predefined_group_t *ompi_mpi_group_null_addr = &ompi_mpi_group_null;
ompi_group_t *ompi_group_allocate(int group_size)
{
/* local variables */
Tau_start_class_allocation("ompi_group_t", 0, 0);
ompi_proc_t **procs = calloc (group_size, sizeof (ompi_proc_t *));
Tau_start_class_allocation("ompi_proc_t **", group_size * sizeof(ompi_proc_t *), 0);
Tau_stop_class_allocation("ompi_proc_t **", 1);
Tau_stop_class_allocation("ompi_group_t", 0);
ompi_group_t *new_group;

if (NULL == procs) {
Expand All @@ -81,6 +85,7 @@ ompi_group_t *ompi_group_allocate_plist_w_procs (ompi_proc_t **procs, int group_

/* create new group group element */
new_group = OBJ_NEW(ompi_group_t);
Tau_start_class_allocation(new_group->super.obj_class->cls_name, 0, 0);

if (NULL == new_group) {
return NULL;
Expand All @@ -105,7 +110,7 @@ ompi_group_t *ompi_group_allocate_plist_w_procs (ompi_proc_t **procs, int group_
OMPI_GROUP_SET_DENSE(new_group);

ompi_group_increment_proc_count (new_group);

Tau_stop_class_allocation(new_group->super.obj_class->cls_name, 0);
return new_group;
}

Expand All @@ -126,11 +131,14 @@ ompi_group_t *ompi_group_allocate_sporadic(int group_size)
new_group = NULL;
goto error_exit;
}
Tau_start_class_allocation(new_group->super.obj_class->cls_name, 0, 0);
/* allocate array of (grp_sporadic_list )'s */
if (0 < group_size) {
new_group->sparse_data.grp_sporadic.grp_sporadic_list =
(struct ompi_group_sporadic_list_t *)malloc
(sizeof(struct ompi_group_sporadic_list_t ) * group_size);
Tau_start_class_allocation("ompi_group_sporadic_list_t *", sizeof(struct ompi_group_sporadic_list_t ) * group_size, 0);
Tau_stop_class_allocation("ompi_group_sporadic_list_t *", 1);

/* non-empty group */
if ( NULL == new_group->sparse_data.grp_sporadic.grp_sporadic_list) {
Expand All @@ -151,6 +159,7 @@ ompi_group_t *ompi_group_allocate_sporadic(int group_size)
OMPI_GROUP_SET_SPORADIC(new_group);

error_exit:
Tau_stop_class_allocation(new_group->super.obj_class->cls_name, 0);
return new_group;
}

Expand All @@ -168,6 +177,7 @@ ompi_group_t *ompi_group_allocate_strided(void)
new_group = NULL;
goto error_exit;
}
Tau_start_class_allocation(new_group->super.obj_class->cls_name, 0, 0);
/* initialize our rank to MPI_UNDEFINED */
new_group->grp_my_rank = MPI_UNDEFINED;
new_group->grp_proc_pointers = NULL;
Expand All @@ -177,6 +187,7 @@ ompi_group_t *ompi_group_allocate_strided(void)
new_group->sparse_data.grp_strided.grp_strided_last_element = -1;
error_exit:
/* return */
Tau_stop_class_allocation(new_group->super.obj_class->cls_name, 0);
return new_group;
}
ompi_group_t *ompi_group_allocate_bmap(int orig_group_size , int group_size)
Expand All @@ -196,8 +207,11 @@ ompi_group_t *ompi_group_allocate_bmap(int orig_group_size , int group_size)
goto error_exit;
}
/* allocate the unsigned char list */
Tau_start_class_allocation(new_group->super.obj_class->cls_name, 0, 0);
new_group->sparse_data.grp_bitmap.grp_bitmap_array = (unsigned char *)malloc
(sizeof(unsigned char) * ompi_group_div_ceil(orig_group_size,BSIZE));
Tau_start_class_allocation("unsigned char *", sizeof(struct ompi_group_sporadic_list_t ) * group_size, 0);
Tau_stop_class_allocation("unsigned char *", 1);

new_group->sparse_data.grp_bitmap.grp_bitmap_array_len =
ompi_group_div_ceil(orig_group_size,BSIZE);
Expand All @@ -211,6 +225,7 @@ ompi_group_t *ompi_group_allocate_bmap(int orig_group_size , int group_size)

error_exit:
/* return */
Tau_stop_class_allocation(new_group->super.obj_class->cls_name, 0);
return new_group;
}

Expand Down
4 changes: 4 additions & 0 deletions ompi/mca/pml/ob1/pml_ob1_comm.c
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,11 @@ OBJ_CLASS_INSTANCE(
int mca_pml_ob1_comm_init_size (mca_pml_ob1_comm_t* comm, size_t size)
{
/* send message sequence-number support - sender side */
Tau_start_class_allocation(comm->super.obj_class->cls_name, 0, 0);
comm->procs = (mca_pml_ob1_comm_proc_t **) calloc(size, sizeof (mca_pml_ob1_comm_proc_t *));
Tau_start_class_allocation("mca_pml_ob1_comm_proc_t", size * sizeof(mca_pml_ob1_comm_proc_t *), 0);
Tau_stop_class_allocation("mca_pml_ob1_comm_proc_t", 1);
Tau_stop_class_allocation(comm->super.obj_class->cls_name, 0);
if(NULL == comm->procs) {
return OMPI_ERR_OUT_OF_RESOURCE;
}
Expand Down
4 changes: 4 additions & 0 deletions ompi/mca/pml/yalla/pml_yalla.c
Original file line number Diff line number Diff line change
Expand Up @@ -256,7 +256,11 @@ int mca_pml_yalla_add_procs(struct ompi_proc_t **procs, size_t nprocs)
return OMPI_ERROR;
}

Tau_start_class_allocation(procs[i]->super.super.super.obj_class->cls_name, 0, 0);
Tau_start_class_allocation("mxm_conn_h", sizeof(mxm_conn_h), 0);
procs[i]->proc_endpoints[OMPI_PROC_ENDPOINT_TAG_PML] = conn;
Tau_stop_class_allocation("mxm_conn_h", 1);
Tau_stop_class_allocation(procs[i]->super.super.super.obj_class->cls_name, 0);
}

return OMPI_SUCCESS;
Expand Down
2 changes: 2 additions & 0 deletions ompi/win/win.c
Original file line number Diff line number Diff line change
Expand Up @@ -144,6 +144,7 @@ static int alloc_window(struct ompi_communicator_t *comm, ompi_info_t *info, int

/* create the object */
win = OBJ_NEW(ompi_win_t);
Tau_start_class_allocation(win->w_base.obj_class->cls_name, 0, 0);
if (NULL == win) {
return OMPI_ERR_OUT_OF_RESOURCE;
}
Expand Down Expand Up @@ -177,6 +178,7 @@ static int alloc_window(struct ompi_communicator_t *comm, ompi_info_t *info, int
win->w_group = group;

*win_out = win;
Tau_stop_class_allocation(win->w_base.obj_class->cls_name, 0);

return OMPI_SUCCESS;
}
Expand Down
24 changes: 24 additions & 0 deletions opal/class/opal_object.c
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,30 @@
#include "opal/class/opal_object.h"
#include "opal/constants.h"

void __attribute__((weak)) Tau_track_class_allocation(const char * name, size_t size) {

}

void __attribute__((weak)) Tau_track_class_deallocation(const char * name, size_t size) {

}

void __attribute__((weak)) Tau_start_class_allocation(const char * name, size_t size, int include_in_parent) {

}

void __attribute__((weak)) Tau_stop_class_allocation(const char * name, int record) {

}

void __attribute__((weak)) Tau_start_class_deallocation(const char * name, size_t size, int include_in_parent) {

}

void __attribute__((weak)) Tau_stop_class_deallocation(const char * name, int record) {

}

/*
* Instantiation of class descriptor for the base class. This is
* special, since be mark it as already initialized, with no parent
Expand Down
11 changes: 11 additions & 0 deletions opal/class/opal_object.h
Original file line number Diff line number Diff line change
Expand Up @@ -132,6 +132,13 @@ BEGIN_C_DECLS
#define OPAL_OBJ_MAGIC_ID ((0xdeafbeedULL << 32) + 0xdeafbeedULL)
#endif

void __attribute__((weak)) Tau_track_class_allocation(const char * name, size_t size);
void __attribute__((weak)) Tau_track_class_deallocation(const char * name, size_t size);
void __attribute__((weak)) Tau_start_class_allocation(const char * name, size_t size, int include_in_parent);
void __attribute__((weak)) Tau_stop_class_allocation(const char * name, int record);
void __attribute__((weak)) Tau_start_class_deallocation(const char * name, size_t size, int include_in_parent);
void __attribute__((weak)) Tau_stop_class_deallocation(const char * name, int record);

/* typedefs ***********************************************************/

typedef struct opal_object_t opal_object_t;
Expand Down Expand Up @@ -457,6 +464,7 @@ static inline void opal_obj_run_destructors(opal_object_t * object)

assert(NULL != object->obj_class);

Tau_track_class_deallocation(object->obj_class->cls_name, object->obj_class->cls_sizeof);
cls_destruct = object->obj_class->cls_destruct_array;
while( NULL != *cls_destruct ) {
(*cls_destruct)(object);
Expand All @@ -480,6 +488,8 @@ static inline opal_object_t *opal_obj_new(opal_class_t * cls)
opal_object_t *object;
assert(cls->cls_sizeof >= sizeof(opal_object_t));

Tau_start_class_allocation(cls->cls_name, cls->cls_sizeof, 0);

#if OPAL_WANT_MEMCHECKER
object = (opal_object_t *) calloc(1, cls->cls_sizeof);
#else
Expand All @@ -493,6 +503,7 @@ static inline opal_object_t *opal_obj_new(opal_class_t * cls)
object->obj_reference_count = 1;
opal_obj_run_constructors(object);
}
Tau_stop_class_allocation(cls->cls_name, 1);
return object;
}

Expand Down
6 changes: 6 additions & 0 deletions oshmem/proc/proc.c
Original file line number Diff line number Diff line change
Expand Up @@ -136,6 +136,7 @@ oshmem_group_t* oshmem_proc_group_create(int pe_start,
assert(oshmem_proc_local());

group = OBJ_NEW(oshmem_group_t);
Tau_start_class_allocation(group->base.obj_class->cls_name, 0, 0);

if (group) {
cur_pe = 0;
Expand All @@ -145,7 +146,10 @@ oshmem_group_t* oshmem_proc_group_create(int pe_start,

/* allocate an array */
proc_array = (ompi_proc_t**) malloc(pe_size * sizeof(ompi_proc_t*));
Tau_start_class_allocation("ompi_proc_t **", pe_size * sizeof(ompi_proc_t*), 0);
Tau_stop_class_allocation("ompi_proc_t **", 1);
if (NULL == proc_array) {
Tau_stop_class_allocation(group->base.obj_class->cls_name, 0);
OBJ_RELEASE(group);
OPAL_THREAD_UNLOCK(&oshmem_proc_lock);
return NULL ;
Expand Down Expand Up @@ -197,13 +201,15 @@ oshmem_group_t* oshmem_proc_group_create(int pe_start,
if (OSHMEM_SUCCESS != mca_scoll_base_select(group)) {
opal_output(0,
"Error: No collective modules are available: group is not created, returning NULL");
Tau_stop_class_allocation(group->base.obj_class->cls_name, 0);
oshmem_proc_group_destroy(group);
OPAL_THREAD_UNLOCK(&oshmem_proc_lock);
return NULL;
}
OPAL_THREAD_UNLOCK(&oshmem_proc_lock);
}

Tau_stop_class_allocation(group->base.obj_class->cls_name, 0);
return group;
}

Expand Down