Add CUDA Plugin EP CI and fix Windows plugin build support#27959
Conversation
yuslepukhin
left a comment
There was a problem hiding this comment.
Factory fallback CreateSyncStreamForDeviceImpl (cuda_ep_factory.cc:531-549) does not validate mem_type == OrtDeviceMemoryType_DEFAULT, unlike the CudaEp-level version. This inconsistency is pre-existing but could be confusing.
|
SyncImpl restores device even when cudaSetDevice(ep->config_.device_id) fails. If cudaSetDevice fails, cudaDeviceSynchronize is skipped (good), but the restore branch still runs cudaSetDevice(prev_device). This is harmless since the device may not have changed, but the restore status would overwrite the original error if it somehow fails too. The current priority logic (if (status.IsOK()) status = restore_status) handles this correctly — only propagates restore error if the primary op succeeded. |
|
@yuslepukhin, for sync stream related issues, I could address them in another PR. This PR is mainly for CI setup. |
Summary
This PR improves CUDA Plugin EP development and validation in three areas:
Fixes the Windows CUDA Plugin EP build so the plugin can be compiled successfully with MSVC.
Adds dedicated Windows and Linux GitHub Actions workflows for building and testing the CUDA Plugin EP.
Expands the quick start documentation with instructions for running the CUDA Plugin EP Python tests locally.
Changes
Windows build fixes
CI coverage for CUDA Plugin EP
Add a Windows CUDA Plugin EP workflow that:
Add a similar Linux CUDA Plugin EP workflow.
Documentation updates