Skip to content

Commit 9cabba7

Browse files
authored
Merge branch 'main' into rwgk/contributor-review-coordination
2 parents 17c7109 + 22e4c1a commit 9cabba7

4 files changed

Lines changed: 37 additions & 30 deletions

File tree

‎.github/workflows/runner-trust-probe.yml‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@ name: "CI: Runner trust probe"
1111

1212
on:
1313
schedule:
14-
# Weekly on Mondays at 06:23 UTC
15-
- cron: "23 6 * * 1"
14+
# Daily at 06:00 PST (14:00 UTC)
15+
- cron: "0 14 * * *"
1616
workflow_dispatch:
1717
inputs:
1818
label-filter:

‎ci/tools/install_gpu_driver.sh‎

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,23 @@ in_container() {
9090
}
9191

9292
host_install() {
93-
apt-get -y install build-essential dkms "linux-headers-$(uname -r)" psmisc kmod
93+
local kernel_release kernel_gcc default_gcc
94+
kernel_release=$(uname -r)
95+
apt-get -y install build-essential
96+
97+
# Match the kernel's GCC major only when the default compiler differs.
98+
kernel_gcc=$(sed -nE 's/.*gcc(-[0-9]+)? (\([^)]*\) )?([0-9]+)\..*/\3/p' /proc/version)
99+
default_gcc=$(gcc -dumpversion | cut -d. -f1)
100+
echo "Kernel ${kernel_release}: GCC major=${kernel_gcc:-unknown}, default GCC major=${default_gcc}" >&2
101+
if [ -n "$kernel_gcc" ] && [ "$kernel_gcc" != "$default_gcc" ]; then
102+
apt-get -y install "gcc-${kernel_gcc}" "g++-${kernel_gcc}"
103+
# Installing a versioned compiler does not change the default; select it for DKMS.
104+
export CC="gcc-${kernel_gcc}" CXX="g++-${kernel_gcc}"
105+
echo "Kernel ${kernel_release}: using CC=${CC} CXX=${CXX}" >&2
106+
fi
107+
108+
# Header installation can trigger DKMS builds, so select the compiler first.
109+
apt-get -y install dkms "linux-headers-${kernel_release}" psmisc kmod
94110

95111
# Download and verify the installer before tearing down the existing
96112
# host driver so a download failure or SHA-256 mismatch leaves the

‎ci/tools/runner_trust_probe_node.js‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -48,9 +48,9 @@ module.exports = async function runNodeTrustProbe({
4848

4949
const tlsResult = await probeEndpoint();
5050
const rows = [
51-
['Node version', versionOk ? '**PASS**' : '**FAIL**', `\`${version}\` (require Node 24 \`>= v24.22.1\`; \`execPath=${execPath}\`)`],
52-
['Node env overrides', '**INFO**', `\`NODE_OPTIONS=${nodeOptions}\`, \`NODE_EXTRA_CA_CERTS=${extraCa}\`, \`NODE_USE_SYSTEM_CA=${useSystemCa}\``],
53-
['Node rejects test endpoint', `**${tlsResult.status}**`, tlsResult.detail],
51+
['Node version', versionOk ? '<strong>PASS</strong>' : '<strong>FAIL</strong>', `\`${version}\` (require Node 24 \`>= v24.22.1\`; \`execPath=${execPath}\`)`],
52+
['Node env overrides', '<strong>INFO</strong>', `\`NODE_OPTIONS=${nodeOptions}\`, \`NODE_EXTRA_CA_CERTS=${extraCa}\`, \`NODE_USE_SYSTEM_CA=${useSystemCa}\``],
53+
['Node rejects test endpoint', `<strong>${tlsResult.status}</strong>`, tlsResult.detail],
5454
];
5555

5656
await core.summary

‎cuda_core/tests/graph/test_graph_node_update.py‎

Lines changed: 15 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
import pytest
1515
from helpers.graph_kernels import compile_common_kernels
1616

17-
from cuda.core import Device, DeviceMemoryResource, LaunchConfig, LegacyPinnedMemoryResource
17+
from cuda.core import Device, DeviceMemoryResource, EventOptions, LaunchConfig, LegacyPinnedMemoryResource
1818
from cuda.core._memory._synchronous_memory_resource import _SynchronousMemoryResource
1919
from cuda.core._utils._weak_handles import weak_handle
2020
from cuda.core._utils.cuda_utils import CUDAError, driver, handle_return
@@ -96,36 +96,27 @@ def _update_executable_case(graph, case):
9696

9797

9898
def _event_record_case(device):
99-
"""Keep the selected event pending to identify each exec's record target."""
100-
original = device.create_event()
101-
replacement = device.create_event()
102-
invalid_replacement = device.create_event()
99+
"""Identify each exec's record target after completion."""
100+
event_options = EventOptions(timing_enabled=True)
101+
original = device.create_event(options=event_options)
102+
replacement = device.create_event(options=event_options)
103+
invalid_replacement = device.create_event(options=event_options)
103104
invalid_replacement.close()
104105

105-
callback_started = threading.Event()
106-
callback_release = threading.Event()
107-
108-
def blocking_callback():
109-
callback_started.set()
110-
callback_release.wait(timeout=30)
111-
112106
graph_def = GraphDefinition()
113-
callback_node = graph_def.callback(blocking_callback)
114-
node = callback_node.record(original)
107+
node = graph_def.record(original)
115108

116109
def assert_exec_uses(graph, expected):
117-
callback_started.clear()
118-
callback_release.clear()
119110
stream = device.create_stream()
111+
reference = stream.record(options=event_options)
112+
stream.sync()
113+
114+
with pytest.raises(RuntimeError, match=r"^Both Events must be recorded"):
115+
expected - reference
116+
120117
graph.launch(stream)
121-
try:
122-
assert callback_started.wait(timeout=5)
123-
assert expected.is_done is False
124-
unexpected = replacement if expected is original else original
125-
assert unexpected.is_done is True
126-
finally:
127-
callback_release.set()
128-
stream.sync()
118+
stream.sync()
119+
assert isinstance(expected - reference, float)
129120

130121
return _DefinitionUpdateCase(
131122
graph_def=graph_def,

0 commit comments

Comments
 (0)