@@ -60,6 +60,39 @@ def filter_matrix_item(
6060 return True
6161
6262
63+ def create_distributed_config (item : Dict [str , Any ]) -> Dict [str , Any ]:
64+ """Create distributed test configuration from a regular config.
65+
66+ Takes a standard test config and modifies it for distributed testing:
67+ - Changes runner to multi-GPU instance
68+ - Adds num_gpus field
69+ - Adds config marker
70+ """
71+ import sys
72+
73+ # Create a copy to avoid modifying the original
74+ dist_item = item .copy ()
75+
76+ # Debug: Show original config
77+ print (f"[DEBUG] Creating distributed config from:" , file = sys .stderr )
78+ print (f"[DEBUG] Python: { item .get ('python_version' )} " , file = sys .stderr )
79+ print (f"[DEBUG] CUDA: { item .get ('desired_cuda' )} " , file = sys .stderr )
80+ print (f"[DEBUG] Original runner: { item .get ('validation_runner' )} " , file = sys .stderr )
81+
82+ # Override runner to use multi-GPU instance
83+ dist_item ["validation_runner" ] = "linux.g4dn.12xlarge.nvidia.gpu"
84+
85+ # Add distributed-specific fields
86+ dist_item ["num_gpus" ] = 2
87+ dist_item ["config" ] = "distributed"
88+
89+ # Debug: Show modified config
90+ print (f"[DEBUG] New runner: { dist_item ['validation_runner' ]} " , file = sys .stderr )
91+ print (f"[DEBUG] GPUs: { dist_item ['num_gpus' ]} " , file = sys .stderr )
92+
93+ return dist_item
94+
95+
6396def main (args : list [str ]) -> None :
6497 parser = argparse .ArgumentParser ()
6598 parser .add_argument (
@@ -99,6 +132,9 @@ def main(args: list[str]) -> None:
99132
100133 includes = matrix_dict ["include" ]
101134 filtered_includes = []
135+ distributed_includes = [] # NEW: separate list for distributed configs
136+
137+ print (f"[DEBUG] Processing { len (includes )} input configs" , file = sys .stderr )
102138
103139 for item in includes :
104140 if filter_matrix_item (
@@ -107,8 +143,25 @@ def main(args: list[str]) -> None:
107143 options .limit_pr_builds == "true" ,
108144 ):
109145 filtered_includes .append (item )
110-
111- filtered_matrix_dict = {"include" : filtered_includes }
146+
147+ # NEW: Create distributed variant for specific configs
148+ # Only Python 3.10 + CUDA 13.0 for now
149+ if item ["python_version" ] == "3.10" and item ["desired_cuda" ] == "cu130" :
150+ print (f"[DEBUG] Creating distributed config for py3.10+cu130" , file = sys .stderr )
151+ distributed_includes .append (create_distributed_config (item ))
152+
153+ # Debug: Show summary
154+ print (f"[DEBUG] Final counts:" , file = sys .stderr )
155+ print (f"[DEBUG] Regular configs: { len (filtered_includes )} " , file = sys .stderr )
156+ print (f"[DEBUG] Distributed configs: { len (distributed_includes )} " , file = sys .stderr )
157+
158+ # NEW: Output both regular and distributed configs
159+ filtered_matrix_dict = {
160+ "include" : filtered_includes ,
161+ "distributed_include" : distributed_includes # NEW field
162+ }
163+
164+ # Output to stdout (consumed by GitHub Actions)
112165 print (json .dumps (filtered_matrix_dict ))
113166
114167
0 commit comments