Skip to content

Standardize Collective Client Calls#310

Open
TheAssembler1 wants to merge 9 commits into
hpc-io:developfrom
TheAssembler1:standardize_collective_calls
Open

Standardize Collective Client Calls#310
TheAssembler1 wants to merge 9 commits into
hpc-io:developfrom
TheAssembler1:standardize_collective_calls

Conversation

@TheAssembler1

Copy link
Copy Markdown
Collaborator

Related Issues / Pull Requests

List all related issues and/or pull requests if there are any
#288 (comment)
#290 (comment)

Summary

This PR standardizes the naming and signature of all collective MPI operations in the PDC client API across 47 files. The convention is now consistent: collective variants use a _coll suffix and always take an MPI communicator (MPI_Comm comm) as their last parameter.

Changes

API standardization (src/api/):

  • All collective functions renamed to use _coll suffix where missing
  • MPI_Comm comm added as the last parameter to all collective function signatures in pdc_cont.h, pdc_obj.h, and pdc_region.h
  • pdc_mpi.h and pdc_mpi.c updated to match new signatures
  • Implementations in pdc_cont.c, pdc_obj.c, and pdc_region_transfer.c updated accordingly

Examples updated (examples/):

  • bdcats.c, bdcats_batch.c, haccio.c, haccio_v2.c, read_write_col_perf.c, tileio.c, tileio_v2.c, vpicio.c, vpicio_batch.c, vpicio_old.c updated to use new signatures

Tests updated (src/tests/):

  • All collective test programs updated to pass MPI communicator explicitly
  • Affected: cont/, obj/, misc/, deprecated/, tags/

Tools updated (src/tools/):

  • pdc_access_eqsim.c, pdc_import_eqsim.c, pdc_query_eqsim.c updated

Docs updated (docs/):

  • client_api.rst and using_pdc.rst updated to reflect new API signatures

Convention

Before this PR, collective calls were inconsistently named and some did not expose the MPI communicator to the caller. The new standard is:

  • Collective functions end in _coll
  • The MPI communicator is always the last parameter
  • When built without ENABLE_MPI, the comm parameter is int

Example:
Before: PDCcont_create(name, prop)
After: PDCcont_create_coll(name, prop, comm)

Include a brief summary of the proposed changes.

What changes are proposed in this pull request?

  • New feature (non-breaking change which adds functionality)
  • This change requires a documentation update

Checklist:

  • My code modifies existing public API, or introduces new public API, and I updated or wrote docstrings
  • My code requires documentation updates, and I have made corresponding changes to the documentation
  • New and existing unit tests pass locally with my changes

@TheAssembler1 TheAssembler1 requested a review from a team as a code owner May 21, 2026 09:18
@TheAssembler1 TheAssembler1 force-pushed the standardize_collective_calls branch from eda317b to 0c908ff Compare May 21, 2026 09:23

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR standardizes the PDC client API for MPI-collective operations by renaming collective variants to use a _coll suffix and (intended) adding an explicit communicator parameter as the last argument, then updates call sites across tools, examples, tests, and docs accordingly.

Changes:

  • Renamed collective APIs (e.g., *_mpi / *_col) to *_coll and updated call sites across the repo.
  • Updated container/object/region-transfer headers and implementations to reflect the standardized collective signatures.
  • Updated documentation to reference the new API names/signatures.

Reviewed changes

Copilot reviewed 47 out of 47 changed files in this pull request and generated 9 comments.

Show a summary per file
File Description
src/tools/pdc_query_eqsim.c Updates object creation call to new _coll API.
src/tools/pdc_import_eqsim.c Updates object creation call to new _coll API.
src/tools/pdc_access_eqsim.c Updates object open call to new _coll API (introduces non-MPI build concern).
src/tests/tags/kvtag_query.c Updates container creation to _coll with MPI guard.
src/tests/obj/write_obj_shared.c Renames collective object create call to _coll.
src/tests/obj/read_obj.c Updates collective container/object create calls to _coll.
src/tests/obj/read_obj_shared.c Updates collective container/object create calls to _coll.
src/tests/obj/open_obj_round_robin.c Updates collective container create call to _coll.
src/tests/obj/obj_round_robin_io.c Updates collective container create call to _coll with MPI guard.
src/tests/obj/obj_round_robin_io_all.c Updates collective container create call to _coll with MPI guard.
src/tests/obj/obj_life.c Updates collective container create call to _coll with MPI guard.
src/tests/obj/create_obj_scale.c Updates collective container create call to _coll.
src/tests/obj/create_obj_coll.c Renames collective object create calls to _coll.
src/tests/misc/vpicio.c Updates container/object create and transfer-start-all collective calls to _coll.
src/tests/misc/read_write_perf.c Adjusts MPI timing guards around transfer start/wait calls.
src/tests/misc/read_write_col_perf.c Renames collective object create call to _coll and adjusts MPI timing guards.
src/tests/misc/producer_waitall.c Updates collective container create call to _coll.
src/tests/misc/bdcats.c Updates collective object open and start-all collective calls to _coll.
src/tests/deprecated/vpicio_v2.c Updates collective container/object create calls to _coll.
src/tests/deprecated/vpicio_old.c Updates collective container/object create calls to _coll.
src/tests/deprecated/obj_transformation.c Renames collective object create calls to _coll.
src/tests/deprecated/buf_obj_map_mpi.c Renames collective object create call to _coll.
src/tests/deprecated/buf_map_mpi_v2.c Renames collective object create call to _coll.
src/tests/deprecated/blocked_lock.c Updates collective object create call to _coll (currently missing comm argument).
src/tests/cont/open_cont.c Updates collective container create call to _coll with MPI guard.
src/tests/cont/create_cont_coll.c Updates collective container create call to _coll.
src/tests/cont/cont_getid.c Updates collective container create call to _coll with MPI guard.
src/api/pdc_region/pdc_region_transfer.c Renames region transfer collective entry points to _coll.
src/api/pdc_region/include/pdc_region.h Updates public prototypes to renamed _coll transfer APIs.
src/api/pdc_obj/pdc_obj.c Adds PDCobj_open_coll API shape (comm parameter currently unused).
src/api/pdc_obj/pdc_mpi.c Renames MPI object-create implementation to PDCobj_create_coll.
src/api/pdc_obj/pdc_cont.c Adds *_coll container APIs with comm parameter (comm currently unused).
src/api/pdc_obj/include/pdc_obj.h Updates public object header to expose _coll API (currently syntactically broken).
src/api/pdc_obj/include/pdc_mpi.h Renames MPI object-create prototype to PDCobj_create_coll.
src/api/pdc_obj/include/pdc_cont.h Updates public container header to expose _coll APIs (currently breaks non-MPI builds).
examples/vpicio.c Updates example to new _coll container/object creation calls.
examples/vpicio_old.c Updates example to new _coll container/object creation calls.
examples/vpicio_batch.c Updates example to new _coll container/object creation calls.
examples/tileio.c Updates example to new _coll object/container calls.
examples/tileio_v2.c Updates example to new _coll object/container calls.
examples/read_write_col_perf.c Updates example to new _coll object creation call.
examples/haccio.c Updates example to new _coll object/container calls.
examples/haccio_v2.c Updates example to new _coll object/container calls.
examples/bdcats.c Updates example to new _coll object-open calls.
examples/bdcats_batch.c Updates example to new _coll object-open calls.
docs/source/using_pdc.rst Updates docs to new _coll API names/signatures (snippet inconsistency present).
docs/source/client_api.rst Updates doxygen listing to new _coll container-create API name.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread src/api/pdc_obj/include/pdc_obj.h Outdated
Comment on lines 28 to +32
#include "pdc_public.h"
#include "pdc_mpi.h"
#ifdef ENABLE_MPI
#include <mpi.h>
#endif
Comment thread src/api/pdc_obj/include/pdc_cont.h
Comment thread src/api/pdc_obj/pdc_cont.c
Comment thread src/api/pdc_obj/pdc_cont.c
Comment thread src/api/pdc_obj/pdc_obj.c
Comment thread src/tools/pdc_access_eqsim.c
Comment thread src/tests/deprecated/blocked_lock.c Outdated
Comment thread docs/source/using_pdc.rst Outdated
TheAssembler1 and others added 3 commits May 22, 2026 14:17
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
@TheAssembler1 TheAssembler1 force-pushed the standardize_collective_calls branch from 33b6f1b to 1ae0290 Compare May 22, 2026 19:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants