Skip to content

Commit

Permalink
Simplify more code. (#151)
Browse files Browse the repository at this point in the history
Signed-off-by: Samuel K. Gutierrez <[email protected]>
  • Loading branch information
samuelkgutierrez authored May 22, 2024
1 parent a7a6a83 commit 55b7e88
Show file tree
Hide file tree
Showing 15 changed files with 184 additions and 376 deletions.
2 changes: 1 addition & 1 deletion src/quo-vadis-mpi.cc
Original file line number Diff line number Diff line change
Expand Up @@ -140,7 +140,7 @@ qvi_mpi_scope_comm_dup(
qv_scope_t *scope,
MPI_Comm *comm
) {
qvi_group_mpi_t *mpi_group = dynamic_cast<qvi_group_mpi_t *>(
qvi_group_mpi_s *mpi_group = dynamic_cast<qvi_group_mpi_s *>(
qvi_scope_group_get(scope)
);
return mpi_group->comm_dup(comm);
Expand Down
80 changes: 2 additions & 78 deletions src/qvi-group-mpi.cc
Original file line number Diff line number Diff line change
Expand Up @@ -16,57 +16,11 @@

#include "qvi-group-mpi.h"

qvi_group_mpi_s::~qvi_group_mpi_s(void)
{
qvi_mpi_group_free(&mpi_group);
}

int
qvi_group_mpi_s::create(void)
{
return qvi_mpi_group_new(&mpi_group);
}

int
qvi_group_mpi_s::initialize(
qvi_mpi_t *mpi
) {
assert(mpi);
if (!mpi) return QV_ERR_INTERNAL;

this->mpi = mpi;
return QV_SUCCESS;
}

qvi_task_id_t
qvi_group_mpi_s::task_id(void)
{
return qvi_task_task_id(qvi_mpi_task_get(mpi));
}

int
qvi_group_mpi_s::id(void)
{
return qvi_mpi_group_id(mpi_group);
}

int
qvi_group_mpi_s::size(void)
{
return qvi_mpi_group_size(mpi_group);
}

int
qvi_group_mpi_s::barrier(void)
{
return qvi_mpi_group_barrier(mpi_group);
}

int
qvi_group_mpi_s::self(
qvi_group_t **child
) {
qvi_group_mpi_t *ichild = new qvi_group_mpi_t();
qvi_group_mpi_s *ichild = new qvi_group_mpi_s();
// Initialize the child with the parent's MPI instance.
int rc = ichild->initialize(mpi);
if (rc != QV_SUCCESS) goto out;
Expand All @@ -89,7 +43,7 @@ qvi_group_mpi_s::split(
int key,
qvi_group_t **child
) {
qvi_group_mpi_t *ichild = new qvi_group_mpi_t();
qvi_group_mpi_s *ichild = new qvi_group_mpi_s();
// Initialize the child with the parent's MPI instance.
int rc = ichild->initialize(mpi);
if (rc != QV_SUCCESS) goto out;
Expand All @@ -107,36 +61,6 @@ qvi_group_mpi_s::split(
return rc;
}

int
qvi_group_mpi_s::gather(
qvi_bbuff_t *txbuff,
int root,
qvi_bbuff_t ***rxbuffs,
int *shared
) {
return qvi_mpi_group_gather_bbuffs(
mpi_group, txbuff, root, rxbuffs, shared
);
}

int
qvi_group_mpi_s::scatter(
qvi_bbuff_t **txbuffs,
int root,
qvi_bbuff_t **rxbuff
) {
return qvi_mpi_group_scatter_bbuffs(
mpi_group, txbuffs, root, rxbuff
);
}

int
qvi_group_mpi_s::comm_dup(
MPI_Comm *comm
) {
return qvi_mpi_group_comm_dup(mpi_group, comm);
}

/*
* vim: ft=cpp ts=4 sts=4 sw=4 expandtab
*/
72 changes: 49 additions & 23 deletions src/qvi-group-mpi.h
Original file line number Diff line number Diff line change
Expand Up @@ -27,22 +27,45 @@ struct qvi_group_mpi_s : public qvi_group_s {
qvi_mpi_t *mpi = nullptr;
/** Underlying group instance. */
qvi_mpi_group_t *mpi_group = nullptr;
/** Base constructor that does minimal work. */
qvi_group_mpi_s(void) = default;
/** Constructor. */
qvi_group_mpi_s(void)
{
const int rc = qvi_mpi_group_new(&mpi_group);
if (rc != QV_SUCCESS) throw qvi_runtime_error();
}
/** Virtual destructor. */
virtual ~qvi_group_mpi_s(void);
/** The real 'constructor' that can possibly fail. */
virtual int create(void);
virtual ~qvi_group_mpi_s(void)
{
qvi_mpi_group_free(&mpi_group);
}
/** Initializes the instance. */
int initialize(qvi_mpi_t *mpi);
int initialize(qvi_mpi_t *mpi_a)
{
if (!mpi_a) qvi_abort();

mpi = mpi_a;
return QV_SUCCESS;
}
/** Returns the caller's task_id. */
virtual qvi_task_id_t task_id(void);
virtual qvi_task_id_t task_id(void)
{
return qvi_task_task_id(qvi_mpi_task_get(mpi));
}
/** Returns the caller's group ID. */
virtual int id(void);
virtual int id(void)
{
return qvi_mpi_group_id(mpi_group);
}
/** Returns the number of members in this group. */
virtual int size(void);
virtual int size(void)
{
return qvi_mpi_group_size(mpi_group);
}
/** Performs node-local group barrier. */
virtual int barrier(void);
virtual int barrier(void)
{
return qvi_mpi_group_barrier(mpi_group);
}
/**
* Creates a new self group with a single member: the caller.
* Returns the appropriate newly created child group to the caller.
Expand All @@ -61,34 +84,37 @@ struct qvi_group_mpi_s : public qvi_group_s {
int key,
qvi_group_s **child
);
/**
* Gathers bbuffs to specified root.
*/
/** Gathers bbuffs to specified root. */
virtual int
gather(
qvi_bbuff_t *txbuff,
int root,
qvi_bbuff_t ***rxbuffs,
int *shared
);
/**
* Scatters bbuffs from specified root.
*/
) {
return qvi_mpi_group_gather_bbuffs(
mpi_group, txbuff, root, rxbuffs, shared
);
}
/** Scatters bbuffs from specified root. */
virtual int
scatter(
qvi_bbuff_t **txbuffs,
int root,
qvi_bbuff_t **rxbuff
);
/**
* Returns a duplicate of the underlying MPI group communicator.
*/
) {
return qvi_mpi_group_scatter_bbuffs(
mpi_group, txbuffs, root, rxbuff
);
}
/** Returns a duplicate of the underlying MPI group communicator. */
int
comm_dup(
MPI_Comm *comm
);
) {
return qvi_mpi_group_comm_dup(mpi_group, comm);
}
};
typedef qvi_group_mpi_s qvi_group_mpi_t;

#endif

Expand Down
84 changes: 1 addition & 83 deletions src/qvi-group-process.cc
Original file line number Diff line number Diff line change
Expand Up @@ -13,57 +13,11 @@

#include "qvi-group-process.h"

qvi_group_process_s::~qvi_group_process_s(void)
{
qvi_process_group_free(&proc_group);
}

int
qvi_group_process_s::create(void)
{
return qvi_process_group_new(&proc_group);
}

int
qvi_group_process_s::initialize(
qvi_process_t *proc
) {
assert(proc);
if (!proc) return QV_ERR_INTERNAL;

this->proc = proc;
return QV_SUCCESS;
}

qvi_task_id_t
qvi_group_process_s::task_id(void)
{
return qvi_task_task_id(qvi_process_task_get(proc));
}

int
qvi_group_process_s::id(void)
{
return qvi_process_group_id(proc_group);
}

int
qvi_group_process_s::size(void)
{
return qvi_process_group_size(proc_group);
}

int
qvi_group_process_s::barrier(void)
{
return qvi_process_group_barrier(proc_group);
}

int
qvi_group_process_s::self(
qvi_group_t **child
) {
qvi_group_process_t *ichild = new qvi_group_process_t();
qvi_group_process_s *ichild = new qvi_group_process_s();
// Initialize the child with the parent's process instance.
int rc = ichild->initialize(proc);
if (rc != QV_SUCCESS) goto out;
Expand All @@ -81,42 +35,6 @@ qvi_group_process_s::self(
return rc;
}

int
qvi_group_process_s::split(
int,
int,
qvi_group_t **child
) {
// NOTE: The concept of coloring with a provided key doesn't apply here, so
// ignore. Also, because this is in the context of a process, the concept
// of splitting doesn't really apply here, so just create another process
// group, self will suffice.
return self(child);
}

int
qvi_group_process_s::gather(
qvi_bbuff_t *txbuff,
int root,
qvi_bbuff_t ***rxbuffs,
int *shared
) {
return qvi_process_group_gather_bbuffs(
proc_group, txbuff, root, rxbuffs, shared
);
}

int
qvi_group_process_s::scatter(
qvi_bbuff_t **txbuffs,
int root,
qvi_bbuff_t **rxbuff
) {
return qvi_process_group_scatter_bbuffs(
proc_group, txbuffs, root, rxbuff
);
}

/*
* vim: ft=cpp ts=4 sts=4 sw=4 expandtab
*/
Loading

0 comments on commit 55b7e88

Please sign in to comment.