-
Notifications
You must be signed in to change notification settings - Fork 27
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
Adding Combination Operators Zip
, CombineLatest
, WithLatestFrom
#330
base: branch-23.07
Are you sure you want to change the base?
Adding Combination Operators Zip
, CombineLatest
, WithLatestFrom
#330
Conversation
This PR contains the changes from running the `ci/release/update-version.sh` script for a new release Authors: - Michael Demoret (https://github.com/mdemoret-nv) Approvers: - David Gardner (https://github.com/dagardner-nv) URL: nv-morpheus#357
Forward-merge branch-23.07 to branch-23.11
* Adopt patched pybind11 * Update versions of boost & libhwloc to work-around clang CI issue * A test for this bug exists in Morpheus, but is difficult to reproduce in MRC. A MRC based test coming soon. fixes nv-morpheus#262 Authors: - David Gardner (https://github.com/dagardner-nv) Approvers: - Michael Demoret (https://github.com/mdemoret-nv) URL: nv-morpheus#364
This PR replaces the `copy_prs` functionality from the `ops-bot` with the new dedicated `copy-pr-bot` GitHub application. Thorough documentation for the new `copy-pr-bot` application can be viewed below. - https://docs.gha-runners.nvidia.com/apps/copy-pr-bot/ **Important**: `copy-pr-bot` enforces signed commits. If an organization member opens a PR that contains unsigned commits, it will be deemed untrusted and therefore require an `/ok to test` comment. See the GitHub docs [here](https://docs.github.com/en/authentication/managing-commit-signature-verification/about-commit-signature-verification) for information on how to set up commit signing. Any time a PR is deemed untrusted, it will receive a comment that looks like this: rapidsai/ci-imgs#63 (comment). Every subsequent commit on an untrusted PR will require an additional `/ok to test` comment. Any existing PRs that have unsigned commits after this change is merged will require an `/ok to test` comment for each subsequent commit _or_ the PR can be rebased to include signed commits as mentioned in the docs below: https://docs.gha-runners.nvidia.com/cpr/contributors. This information is all included on the documentation page linked above. _I've skipped CI on this PR since it's not a change that is tested._ [skip ci]
…-morpheus#377) Cherry picks some changes from nv-morpheus#361 to allow other PRs to run CI since that PR is marked as `DO_NOT_MERGE` Authors: - Michael Demoret (https://github.com/mdemoret-nv) Approvers: - David Gardner (https://github.com/dagardner-nv) - Christopher Harris (https://github.com/cwharris) URL: nv-morpheus#377
…ironment (nv-morpheus#375) Adds a new `dependencies.yaml` which is used in RAPIDS devcontainer utils to generate conda env yamls, `project.toml`'s, and `setup.py`s on-the-fly using https://github.com/rapidsai/dependency-file-generator. Eventually we can generate/verify our existing environment files this way, but for now this gets us up and running in a RAPIDS devcontainer. Also changes `prometheus-cpp::core` to a `PRIVATE`ly linked library, as it's not longer necessary to be `PUBLIC`, and otherwise breaks a combined MRC/Morpheus build. Also adds a `MRC_PYTHON_INPLACE_BUILD` cmake option, which enables pybind11 modules to be copied back to the source tree. MRC/Morpheus unified build environment is a WIP, but available here: https://github.com/cwharris/cyber-dev. Contributes to nv-morpheus/Morpheus#704 Authors: - Christopher Harris (https://github.com/cwharris) Approvers: - Michael Demoret (https://github.com/mdemoret-nv) URL: nv-morpheus#375
Replace usage of deprecated `make_node_full` with `make_node` in the Quick Start Guide. Also fix a typo. Contributes to nv-morpheus/Morpheus#782. Authors: - Christopher Harris (https://github.com/cwharris) Approvers: - Michael Demoret (https://github.com/mdemoret-nv) URL: nv-morpheus#376
fixes nv-morpheus#379 ? Authors: - David Gardner (https://github.com/dagardner-nv) Approvers: - Christopher Harris (https://github.com/cwharris) - Michael Demoret (https://github.com/mdemoret-nv) URL: nv-morpheus#382
…-cap-add=sys_nice (nv-morpheus#383) REME.md update Authors: - David Gardner (https://github.com/dagardner-nv) Approvers: - Christopher Harris (https://github.com/cwharris) - Michael Demoret (https://github.com/mdemoret-nv) URL: nv-morpheus#383
PR updates `rapidsai/ci` references to `rapidsai/ci-conda`. Authors: - Jake Awe (https://github.com/AyodeAwe) Approvers: - David Gardner (https://github.com/dagardner-nv) URL: nv-morpheus#396
* Based on fixes from @mdemoret-nv : https://github.com/mdemoret-nv/MRC/tree/mdd_control-plane-promises & nv-morpheus#381 * Adopts updated versions of boost, clang & IWYU * Only run IWYU on files changed in PR * Use clang for checks stage * Allocate progress engine promises on the heap fixes nv-morpheus#379 Authors: - David Gardner (https://github.com/dagardner-nv) - Michael Demoret (https://github.com/mdemoret-nv) Approvers: - Michael Demoret (https://github.com/mdemoret-nv) - Christopher Harris (https://github.com/cwharris) URL: nv-morpheus#391
…orpheus#387) Adds support for unlimited pipe arguments. Authors: - Christopher Harris (https://github.com/cwharris) Approvers: - Michael Demoret (https://github.com/mdemoret-nv) URL: nv-morpheus#387
* Docker image uses `rapidsai/ci-conda` as the base per rapidsai/ops#2806 * Adds the ability to CI locally via `./ci/scripts/run_ci_local.sh build` & `./ci/scripts/run_ci_local.sh test` * Fix type-o in benchmark stage causing benchmarks to be executed twice & preventing results from being published. * Add `.tmp` and `.clangd` to `.gitignore` * Document need to set `DOCKER_BUILDKIT=1` for docker builds. fixes nv-morpheus#393 fixes nv-morpheus#397 Authors: - David Gardner (https://github.com/dagardner-nv) Approvers: - Christopher Harris (https://github.com/cwharris) URL: nv-morpheus#394
* PR replicates issue nv-morpheus#362, and will trigger a pybind11 internal error using an un-patched version of pybind11 * Only run IWYU on files changed in PR Note: * This bug requires the code in question to be run in a thread created by C++. fixes nv-morpheus#362 Authors: - David Gardner (https://github.com/dagardner-nv) Approvers: - Michael Demoret (https://github.com/mdemoret-nv) URL: nv-morpheus#365
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Approved, but I'm not familiar enough with most of the MRC aspects yet to give a thorough review.
@@ -824,6 +1012,182 @@ TEST_F(TestEdges, CombineLatest) | |||
source2->run(); | |||
|
|||
sink->run(); | |||
|
|||
EXPECT_EQ(sink->get_values(), |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This test doesn't account for all 5 pairs/values that could be yielded in a real scenario where the elements are interleaved, it only accounts for the scenario where source1 is run entirely before source2, meaning we don't get anything except the 2's for source1. Is it worth testing more thoroughly than this?
source1->run(); | ||
|
||
// Should throw when pushing last value | ||
EXPECT_THROW(source2->run(), exceptions::MrcRuntimeError); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
question: Is this going to cause us to throw when we try to shutdown the pipeline? Is that something we want?
|
||
sink->run(); | ||
|
||
EXPECT_EQ(sink->get_values(), |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
question: This differs from the previous test where we throw an exception. Why is that? Is it because we treat sink 0 and sink 1 differently in terms of the number of elements they are allowed to accept?
// Push 2 from each | ||
source2->push(2); | ||
source1->push(2); | ||
source3->push(2); | ||
|
||
// Push 2 from each | ||
source2->push(2); | ||
source1->push(2); | ||
source3->push(2); | ||
|
||
// Push the rest | ||
source3->run(); | ||
source1->run(); | ||
source2->run(); | ||
|
||
sink->run(); | ||
|
||
EXPECT_EQ(sink->get_values(), | ||
(std::vector<std::tuple<int, float, std::string>>{ | ||
std::tuple<int, float, std::string>{0, 1, "a"}, | ||
std::tuple<int, float, std::string>{1, 1, "a"}, | ||
std::tuple<int, float, std::string>{2, 3, "b"}, | ||
std::tuple<int, float, std::string>{3, 3, "b"}, | ||
std::tuple<int, float, std::string>{4, 3, "e"}, | ||
})); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
remark: the only thing I'm fuzzy on is whether 0, 1, a
should be in the output, since 0 _ _
was emitted before we had both _ 1 _
and _ _ a
.
question: are we suppose to remember and emit for all values of the source observable, or just the ones that occur after we've received at least one from the others?
template <size_t N> | ||
channel::Status set_upstream_value(NthTypeOf<N, TypesT...> value) | ||
{ | ||
std::unique_lock<decltype(m_mutex)> lock(m_mutex); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
std::unique_lock<decltype(m_mutex)> lock(m_mutex); | |
auto lock = std::unique_lock(m_mutex); |
|
||
void edge_complete() | ||
{ | ||
std::unique_lock<decltype(m_mutex)> lock(m_mutex); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
std::unique_lock<decltype(m_mutex)> lock(m_mutex); | |
auto lock = std::unique_lock(m_mutex); |
…rpheus#402) * Prevents `check_active_connection` from mistakenly returning true for a holder where `init_owned_edge` has been called but neither the `init_connected_edge method` or the `add_connector` method have not been called. Relates to issue nv-morpheus#360 Authors: - David Gardner (https://github.com/dagardner-nv) Approvers: - Michael Demoret (https://github.com/mdemoret-nv) URL: nv-morpheus#402
Authors: - David Gardner (https://github.com/dagardner-nv) Approvers: - Michael Demoret (https://github.com/mdemoret-nv) URL: nv-morpheus#467
…s#464) Adds maximum simultaneous tasks support to `TaskContainer` by only starting new tasks if the number of currently executing tasks is less than the maximum number of simultaneous tasks and starting new tasks as older tasks shut down. this eliminates the need for external semaphores or ticketing systems. Authors: - Christopher Harris (https://github.com/cwharris) - David Gardner (https://github.com/dagardner-nv) - Michael Demoret (https://github.com/mdemoret-nv) Approvers: - Michael Demoret (https://github.com/mdemoret-nv) URL: nv-morpheus#464
…ranch-*` and `main` to succeed
Morpheus documentation won't build with doxygen 1.10.0, but we need MRC and Morpheus doxygen versions to match so cross-repository environments can be solved correctly. This PR downgrades doxygen to the version used by Morpheus. Authors: - Christopher Harris (https://github.com/cwharris) Approvers: - Michael Demoret (https://github.com/mdemoret-nv) URL: nv-morpheus#469
…path methods (nv-morpheus#465) * All three methods performed nearly identical operations, but were defined in anonymous namespaces and not exposed in a header preventing sharing. * Consolidate all three into a new `split_string_to_vector` in `string_utils.hpp` closes nv-morpheus#454 Authors: - David Gardner (https://github.com/dagardner-nv) Approvers: - Michael Demoret (https://github.com/mdemoret-nv) URL: nv-morpheus#465
…ge-24.03 Forward-merge branch-24.03 into branch-24.06
* Adds `AutoRegSinkAdapter` and `AutoRegEgressPort` to `AsyncSink` * Adds `AutoRegSourceAdapter` and `AutoRegIngressPort` to `AsyncSource` * Giving `AsyncSink`, `AsyncSource` and `AsyncioRunnable` the same implicit converter functionality that `PythonNode` has * Fixes unrelated CI issue for IWYU, since IWYU can only run on compilation units, we can't execute it when a change only includes header files. Closes nv-morpheus/Morpheus#1626 Authors: - David Gardner (https://github.com/dagardner-nv) Approvers: - Michael Demoret (https://github.com/mdemoret-nv) URL: nv-morpheus#473
Forward-merge branch-24.03 into branch-24.06
Codecov ReportAttention: Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## branch-23.07 #330 +/- ##
===============================================
Coverage ? 73.26%
===============================================
Files ? 386
Lines ? 13533
Branches ? 1024
===============================================
Hits ? 9915
Misses ? 3618
Partials ? 0
Flags with carried forward coverage won't be shown. Click here to find out more.
Continue to review full report in Codecov by Sentry.
|
Contributes to rapidsai/dependency-file-generator#89. `--file_key` has been deprecated in `rapids-dependency-file-generator` for a few months, and I'm looking to fully remove it. This PR proposes: * switching this project's uses from `--file_key` to `--file-key` * updating the version of `rapids-dependency-file-generator` used in `pre-commit` to its latest release * switching from `mamba env create --force` to `mamba env create --yes` Authors: - James Lamb (https://github.com/jameslamb) Approvers: - Christopher Harris (https://github.com/cwharris) URL: nv-morpheus#482
Forward-merge branch-24.06 into branch-24.10
…morpheus#485) * Invoke `morpheus_utils_initialize_install_prefix` function after calling `project` * Related to nv-morpheus/Morpheus#1776 Authors: - David Gardner (https://github.com/dagardner-nv) Approvers: - Michael Demoret (https://github.com/mdemoret-nv) URL: nv-morpheus#485
…morpheus#493) * When a Python generator source yields a value, and the subscriber is no longer subscribed, stop the source. * Fix out of date docstring comment. This is a partial fix for nv-morpheus/Morpheus#1838 Authors: - David Gardner (https://github.com/dagardner-nv) Approvers: - Anuradha Karuppiah (https://github.com/AnuradhaKaruppiah) URL: nv-morpheus#493
…-morpheus#496) * Allows a Python generator source to check if the subscriber is still subscribed. * Define a class `SubscriberFuncWrapper` for Python sources rather than just a lambda. The reason is that python objects captured by the lambda need to be destroyed while the gil is held, which causes a problem if the lambda is destroyed unexpectedly. * Update `conftest.py` to set the loglevel to `DEBUG` if the `GLOG_v` environment variable is defined. Authors: - David Gardner (https://github.com/dagardner-nv) Approvers: - Michael Demoret (https://github.com/mdemoret-nv) URL: nv-morpheus#496
…heus#497) * Since CPU-only mode will become a supported feature we want to avoid unnecessary warnings. Relates to nv-morpheus/Morpheus#1851 Authors: - David Gardner (https://github.com/dagardner-nv) Approvers: - Michael Demoret (https://github.com/mdemoret-nv) URL: nv-morpheus#497
…iber` (nv-morpheus#499) * Remove the `make_source_subscriber` method in favor of inspecting the Python function signature. * Since the `make_source_subscriber` method was never part of a release I think this can still be considered a non-breaking change. Authors: - David Gardner (https://github.com/dagardner-nv) Approvers: - Michael Demoret (https://github.com/mdemoret-nv) URL: nv-morpheus#499
Closes nv-morpheus#478 Requires nv-morpheus/utilities#75 Authors: - Christopher Harris (https://github.com/cwharris) - Michael Demoret (https://github.com/mdemoret-nv) Approvers: - Anuradha Karuppiah (https://github.com/AnuradhaKaruppiah) - David Gardner (https://github.com/dagardner-nv) URL: nv-morpheus#494
Description
This adds a few new operators for combining multiple streams into one. For example, the code below illustrates using the
Zip
operatorChecklist