Skip to content

Commit

Permalink
use macros in code and add comments
Browse files Browse the repository at this point in the history
  • Loading branch information
naughtont3 committed May 30, 2019
1 parent a4f9d1c commit 646c904
Show file tree
Hide file tree
Showing 9 changed files with 106 additions and 48 deletions.
5 changes: 3 additions & 2 deletions ompi/communicator/comm_init.c
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@
#include "opal/util/bit_ops.h"
#include "opal/util/info_subscriber.h"
#include "opal/util/string_copy.h"
#include "opal/util/memprof.h"
#include "opal/mca/pmix/pmix.h"
#include "ompi/constants.h"
#include "ompi/mca/pml/pml.h"
Expand Down Expand Up @@ -242,7 +243,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->super.s_base.obj_class->cls_name, 0, 0);
OPAL_MEMPROF_START_ALLOC(new_comm->super.s_base.obj_class->cls_name, 0, 0);
new_comm->super.s_info = NULL;
new_comm->c_local_group = ompi_group_allocate ( local_size );
if ( 0 < remote_size ) {
Expand All @@ -259,7 +260,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->super.s_base.obj_class->cls_name, 0);
OPAL_MEMPROF_STOP_ALLOC(new_comm->super.s_base.obj_class->cls_name, 0);

return new_comm;
}
Expand Down
34 changes: 18 additions & 16 deletions ompi/group/group_init.c
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,8 @@
#include "ompi/constants.h"
#include "mpi.h"

#include "opal/util/memprof.h"

/* define class information */
static void ompi_group_construct(ompi_group_t *);
static void ompi_group_destruct(ompi_group_t *);
Expand Down Expand Up @@ -57,11 +59,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);
OPAL_MEMPROF_START_ALLOC("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);
OPAL_MEMPROF_START_ALLOC("ompi_proc_t **", group_size * sizeof(ompi_proc_t *), 0);
OPAL_MEMPROF_STOP_ALLOC("ompi_proc_t **", 1);
OPAL_MEMPROF_STOP_ALLOC("ompi_group_t", 0);
ompi_group_t *new_group;

if (NULL == procs) {
Expand All @@ -85,7 +87,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);
OPAL_MEMPROF_START_ALLOC(new_group->super.obj_class->cls_name, 0, 0);

if (NULL == new_group) {
return NULL;
Expand All @@ -110,7 +112,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);
OPAL_MEMPROF_STOP_ALLOC(new_group->super.obj_class->cls_name, 0);
return new_group;
}

Expand All @@ -131,14 +133,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);
OPAL_MEMPROF_START_ALLOC(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);
OPAL_MEMPROF_START_ALLOC("ompi_group_sporadic_list_t *", sizeof(struct ompi_group_sporadic_list_t ) * group_size, 0);
OPAL_MEMPROF_STOP_ALLOC("ompi_group_sporadic_list_t *", 1);

/* non-empty group */
if ( NULL == new_group->sparse_data.grp_sporadic.grp_sporadic_list) {
Expand All @@ -159,7 +161,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);
OPAL_MEMPROF_STOP_ALLOC(new_group->super.obj_class->cls_name, 0);
return new_group;
}

Expand All @@ -177,7 +179,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);
OPAL_MEMPROF_START_ALLOC(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 @@ -187,7 +189,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);
OPAL_MEMPROF_STOP_ALLOC(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 @@ -207,11 +209,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);
OPAL_MEMPROF_START_ALLOC(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);
OPAL_MEMPROF_START_ALLOC("unsigned char *", sizeof(struct ompi_group_sporadic_list_t ) * group_size, 0);
OPAL_MEMPROF_STOP_ALLOC("unsigned char *", 1);

new_group->sparse_data.grp_bitmap.grp_bitmap_array_len =
ompi_group_div_ceil(orig_group_size,BSIZE);
Expand All @@ -225,7 +227,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);
OPAL_MEMPROF_STOP_ALLOC(new_group->super.obj_class->cls_name, 0);
return new_group;
}

Expand Down
9 changes: 5 additions & 4 deletions ompi/mca/pml/ob1/pml_ob1_comm.c
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
*/

#include "ompi_config.h"
#include "opal/util/memprof.h"
#include <string.h>

#include "pml_ob1.h"
Expand Down Expand Up @@ -108,11 +109,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);
OPAL_MEMPROF_START_ALLOC(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);
OPAL_MEMPROF_START_ALLOC("mca_pml_ob1_comm_proc_t", size * sizeof(mca_pml_ob1_comm_proc_t *), 0);
OPAL_MEMPROF_STOP_ALLOC("mca_pml_ob1_comm_proc_t", 1);
OPAL_MEMPROF_STOP_ALLOC(comm->super.obj_class->cls_name, 0);
if(NULL == comm->procs) {
return OMPI_ERR_OUT_OF_RESOURCE;
}
Expand Down
9 changes: 5 additions & 4 deletions ompi/mca/pml/yalla/pml_yalla.c
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@

#include "opal/runtime/opal.h"
#include "opal/memoryhooks/memory.h"
#include "opal/util/memprof.h"
#include "opal/mca/memory/base/base.h"
#include "opal/mca/pmix/pmix.h"
#include "ompi/mca/pml/base/pml_base_bsend.h"
Expand Down Expand Up @@ -256,11 +257,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);
OPAL_MEMPROF_START_ALLOC(procs[i]->super.super.super.obj_class->cls_name, 0, 0);
OPAL_MEMPROF_START_ALLOC("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);
OPAL_MEMPROF_STOP_ALLOC("mxm_conn_h", 1);
OPAL_MEMPROF_STOP_ALLOC(procs[i]->super.super.super.obj_class->cls_name, 0);
}

return OMPI_SUCCESS;
Expand Down
5 changes: 3 additions & 2 deletions ompi/win/win.c
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@

#include "opal/util/info_subscriber.h"
#include "opal/util/string_copy.h"
#include "opal/util/memprof.h"

#include "mpi.h"
#include "ompi/win/win.h"
Expand Down Expand Up @@ -148,7 +149,7 @@ static int alloc_window(struct ompi_communicator_t *comm, opal_info_t *info, int

/* create the object */
win = OBJ_NEW(ompi_win_t);
Tau_start_class_allocation(win->super.s_base.obj_class->cls_name, 0, 0);
OPAL_MEMPROF_START_ALLOC(win->super.s_base.obj_class->cls_name, 0, 0);
if (NULL == win) {
return OMPI_ERR_OUT_OF_RESOURCE;
}
Expand Down Expand Up @@ -188,7 +189,7 @@ static int alloc_window(struct ompi_communicator_t *comm, opal_info_t *info, int
}

*win_out = win;
Tau_stop_class_allocation(win->super.s_base.obj_class->cls_name, 0);
OPAL_MEMPROF_STOP_ALLOC(win->super.s_base.obj_class->cls_name, 0);

return OMPI_SUCCESS;
}
Expand Down
6 changes: 3 additions & 3 deletions opal/class/opal_object.h
Original file line number Diff line number Diff line change
Expand Up @@ -459,7 +459,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);
OPAL_MEMPROF_TRACK_DEALLOC(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 @@ -483,7 +483,7 @@ 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);
OPAL_MEMPROF_START_ALLOC(cls->cls_name, cls->cls_sizeof, 0);

#if OPAL_WANT_MEMCHECKER
object = (opal_object_t *) calloc(1, cls->cls_sizeof);
Expand All @@ -498,7 +498,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);
OPAL_MEMPROF_STOP_ALLOC(cls->cls_name, 1);
return object;
}

Expand Down
2 changes: 1 addition & 1 deletion opal/util/memprof.c
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
/*
* Copyright (c) 2018 Cisco Systems, Inc. All rights reserved.
* Copyright (c) 2019 UT-Battelle, LLC. All rights reserved.
*
* $COPYRIGHT$
*
* Additional copyrights may follow
Expand Down
71 changes: 61 additions & 10 deletions opal/util/memprof.h
Original file line number Diff line number Diff line change
@@ -1,14 +1,4 @@
/*
* Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana
* University Research and Technology
* Corporation. All rights reserved.
* Copyright (c) 2004-2005 The University of Tennessee and The University
* of Tennessee Research Foundation. All rights
* reserved.
* Copyright (c) 2004-2005 High Performance Computing Center Stuttgart,
* University of Stuttgart. All rights reserved.
* Copyright (c) 2004-2005 The Regents of the University of California.
* All rights reserved.
* Copyright (c) 2018 UT-Battelle, LLC. All rights reserved.
*
* $COPYRIGHT$
Expand All @@ -25,13 +15,74 @@ BEGIN_C_DECLS

#if OPAL_ENABLE_MEM_PROFILE

/*
* NOTE: Must configure OMPI w/ '--enable-mem-profile',
* otherwise the macros are no-ops.
* Tested with TAU v1.27.1 and v1.28 and PDT 3.25
* for gathering memory profiling data about OMPI.
*
* Example usage:
* orterun -np 2 tau_exec -T mpi,pdt ring_c
* tau_mem_summarize.py . > ring-np2.csv
*/

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);

#define OPAL_MEMPROF_TRACK_ALLOC(name, size) \
do { \
Tau_track_class_allocation(name, size); \
} while(0)

#define OPAL_MEMPROF_TRACK_DEALLOC(name, size) \
do { \
Tau_track_class_deallocation(name, size); \
} while(0)

#define OPAL_MEMPROF_START_ALLOC(name, size, include_in_parent) \
do { \
Tau_start_class_allocation(name, size, include_in_parent); \
} while(0)

#define OPAL_MEMPROF_STOP_ALLOC(name, record) \
do { \
Tau_stop_class_allocation(name, record); \
} while(0)

#define OPAL_MEMPROF_START_DEALLOC(name, size, include_in_parent) \
do { \
Tau_start_class_deallocation(name, size, include_in_parent); \
} while(0)

#define OPAL_MEMPROF_STOP_DEALLOC(name, record) \
do { \
Tau_stop_class_deallocation(name, record); \
} while(0)

#else

#define OPAL_MEMPROF_TRACK_ALLOC(name, size) \
do { } while(0)

#define OPAL_MEMPROF_TRACK_DEALLOC(name, size) \
do { } while(0)

#define OPAL_MEMPROF_START_ALLOC(name, size, include_in_parent) \
do { } while(0)

#define OPAL_MEMPROF_STOP_ALLOC(name, record) \
do { } while(0)

#define OPAL_MEMPROF_START_DEALLOC(name, size, include_in_parent) \
do { } while(0)

#define OPAL_MEMPROF_STOP_DEALLOC(name, record) \
do { } while(0)

#endif /* OPAL_ENABLE_MEM_PROFILE */

END_C_DECLS
Expand Down
13 changes: 7 additions & 6 deletions oshmem/proc/proc.c
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@
#include "opal/dss/dss.h"
#include "opal/util/arch.h"
#include "opal/class/opal_list.h"
#include "opal/util/memprof.h"


static opal_mutex_t oshmem_proc_lock;
Expand Down Expand Up @@ -161,7 +162,7 @@ oshmem_group_t* oshmem_proc_group_create(int pe_start, int pe_stride, int pe_siz
}

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

if (NULL == group) {
return NULL;
Expand All @@ -174,10 +175,10 @@ oshmem_group_t* oshmem_proc_group_create(int pe_start, int pe_stride, int pe_siz

/* 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);
OPAL_MEMPROF_START_ALLOC("ompi_proc_t **", pe_size * sizeof(ompi_proc_t*), 0);
OPAL_MEMPROF_STOP_ALLOC("ompi_proc_t **", 1);
if (NULL == proc_array) {
Tau_stop_class_allocation(group->base.obj_class->cls_name, 0);
OPAL_MEMPROF_STOP_ALLOC(group->base.obj_class->cls_name, 0);
OBJ_RELEASE(group);
OPAL_THREAD_UNLOCK(&oshmem_proc_lock);
return NULL ;
Expand Down Expand Up @@ -229,7 +230,7 @@ oshmem_group_t* oshmem_proc_group_create(int pe_start, int pe_stride, int pe_siz
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);
OPAL_MEMPROF_STOP_ALLOC(group->base.obj_class->cls_name, 0);
oshmem_proc_group_destroy_internal(group, 0);
OPAL_THREAD_UNLOCK(&oshmem_proc_lock);
return NULL;
Expand All @@ -243,7 +244,7 @@ oshmem_group_t* oshmem_proc_group_create(int pe_start, int pe_stride, int pe_siz
}

OPAL_THREAD_UNLOCK(&oshmem_proc_lock);
Tau_stop_class_allocation(group->base.obj_class->cls_name, 0);
OPAL_MEMPROF_STOP_ALLOC(group->base.obj_class->cls_name, 0);
return group;
}

Expand Down

0 comments on commit 646c904

Please sign in to comment.