Add topology-safe live decoder reconfiguration - #695
Conversation
d471ca8 to
faf0d1a
Compare
| @@ -0,0 +1,7 @@ | |||
| { | |||
There was a problem hiding this comment.
This looks like an accidental checkin that should be removed.
melody-ren
left a comment
There was a problem hiding this comment.
Thanks Vedika! I have some questions about the gpu roce path. See inline comments please~
| return 1; | ||
| } | ||
|
|
||
| cudaq::qec::decoding::config::multi_decoder_config config; |
There was a problem hiding this comment.
#679 added some nice validation helpers for config. We can call config.validate_custom_args() here to validate it
| throw std::runtime_error("duplicate decoder id " + | ||
| std::to_string(d.id)); | ||
| } | ||
| } catch (const std::exception &e) { |
There was a problem hiding this comment.
Later in SessionRegistry.cpp, we check for negative/out of range decoder IDs and mixed transports, which is a bit too late since invalid config should be rejected here before reaching SessionRegistry. I think we can just add those checks here too
| config_text << config_file.rdbuf(); | ||
|
|
||
| ConfigApplyRequest out; | ||
| out.yaml = decoder_yaml_from_daemon_yaml(config_text.str()); |
There was a problem hiding this comment.
I understand why the ServerConfig is stripped for the decoders, but what happens if the new config has server setup (e.g, transport is different) than the one currently serving? I think we need to check the server config's content before stripping and compare that to the active server's setting and reject if the transport restart is needed (For GPU RoCE path, I think we do need to reject per the current scope)
There was a problem hiding this comment.
Three questions about this:
(1) We removed HOLOLINK_GPU_ID. Not sure we should also remove these hololink env vars for two reasons: they should come from the config and we want to use HSB in names instead. @cketcham2333 ?
(2) The transport level config saved in ServerConfig is stripped before being sent to the factory, which then reads the settings from from_env. We have basically two pathways for configuring gpu_roce. This env might be useful still for internal testing but the primary route, in my opinion, should default to the config coming down the wire and we need some sort of reconciliation if the two disagree. I favor that we remove the env var path entirely though
(3) Related to another comment about transport might be different in the config: the gpu_roce related settings are not checked or reread on SIGHUP since ServerConfig is stripped
b6f7791 to
56df053
Compare
Signed-off-by: vedika-saravanan <vsaravanan@nvidia.com>
56df053 to
04b2d38
Compare
|
/ok to test 04b2d38 |
Signed-off-by: vedika-saravanan <vsaravanan@nvidia.com>
Signed-off-by: vedika-saravanan <vsaravanan@nvidia.com>
Signed-off-by: vedika-saravanan <vsaravanan@nvidia.com>
Signed-off-by: vedika-saravanan <vsaravanan@nvidia.com>
Signed-off-by: vedika-saravanan <vsaravanan@nvidia.com>
Signed-off-by: vedika-saravanan <vsaravanan@nvidia.com>
Summary
Reimplements live decoding-server configuration on top of the current one-ring-per-decoder architecture and runtime bridge providers.
Validation
Full CUDA-Q build and test coverage is delegated to GitHub CI because the local environment does not contain CUDA/CUDA-Q.