22import platform
33
44
5- def _maca_root_from_env ():
6- return (
7- os .environ .get ("MACA_PATH" )
8- or os .environ .get ("MACA_HOME" )
9- or os .environ .get ("MACA_ROOT" )
10- or ""
11- ).strip ()
12-
13-
14- def metax_hpc_compiler_include_dirs ():
15- """Directories needed so g++ finds cuda_runtime_api.h (cu-bridge) when compiling against PyTorch c10/cuda headers on MetaX/HPCC."""
16- maca = _maca_root_from_env ()
17- if not maca :
18- return []
19- return [
20- os .path .join (maca , "tools" , "cu-bridge" , "include" ),
21- os .path .join (maca , "include" , "hcr" ),
22- os .path .join (maca , "include" ),
23- ]
5+ def _hpcc_toolkit_root () -> str :
6+ """HPCC/MACA install root (cu-bridge, headers). Env vars first; else common container path."""
7+ for key in ("MACA_PATH" , "MACA_HOME" , "MACA_ROOT" ):
8+ v = os .environ .get (key , "" ).strip ()
9+ if v :
10+ return v
11+ if os .path .isdir ("/opt/hpcc" ):
12+ return "/opt/hpcc"
13+ return ""
2414
2515
2616def _prepend_path_var (name , prefixes ):
@@ -32,14 +22,16 @@ def _prepend_path_var(name, prefixes):
3222 os .environ [name ] = f"{ chunk } :{ cur } " if cur else chunk
3323
3424
35- def ensure_metax_hpc_compiler_includes ():
36- """
37- Prepend HPCC/cu-bridge includes to CPATH, CPLUS_INCLUDE_PATH, and C_INCLUDE_PATH.
38- g++ uses CPLUS_INCLUDE_PATH for .cc files; C_INCLUDE_PATH alone is not enough.
39- """
40- dirs = metax_hpc_compiler_include_dirs ()
41- if not dirs :
25+ def ensure_aten_torch_compiler_includes () -> None :
26+ """If HPCC root is known, prepend cu-bridge + HPCC headers for g++ compiling ATen .cc (c10/cuda)."""
27+ root = _hpcc_toolkit_root ()
28+ if not root :
4229 return
30+ dirs = [
31+ os .path .join (root , "tools" , "cu-bridge" , "include" ),
32+ os .path .join (root , "include" , "hcr" ),
33+ os .path .join (root , "include" ),
34+ ]
4335 for var in ("CPATH" , "CPLUS_INCLUDE_PATH" , "C_INCLUDE_PATH" ):
4436 _prepend_path_var (var , dirs )
4537
@@ -69,12 +61,20 @@ def _truthy_flag_value(v: str) -> bool:
6961 return v in ("y" , "yes" , "true" , "1" , "on" )
7062
7163
72- def xmake_flags_need_metax_aten_torch_includes (flags : str ) -> bool :
73- """True when install.py-style args enable MetaX GPU and ATen (PyTorch) together."""
64+ # xmake.lua GPU / accelerator backends (any of these + aten may compile C++ against torch+cuda-style headers).
65+ _XMAKE_GPU_BACKEND_KEYS = frozenset (
66+ {
67+ "metax-gpu" ,
68+ }
69+ )
70+
71+
72+ def xmake_flags_need_aten_torch_compiler_includes (flags : str ) -> bool :
73+ """True when ATen is enabled with any GPU/accelerator backend (install.py / xmake f ...)."""
7474 d = _parse_xmake_cli_flag_values (flags )
75- return _truthy_flag_value (d .get ("metax-gpu " , "n" )) and _truthy_flag_value (
76- d . get ( "aten" , "n" )
77- )
75+ if not _truthy_flag_value (d .get ("aten " , "n" )):
76+ return False
77+ return any ( _truthy_flag_value ( d . get ( k , "n" )) for k in _XMAKE_GPU_BACKEND_KEYS )
7878
7979
8080def set_env ():
0 commit comments