63def collect_env_info():
64 has_gpu = torch.cuda.is_available()
65 torch_version = torch.__version__
66
67
68
69 from torch.utils.cpp_extension import CUDA_HOME
70
71 has_rocm = False
72 if tuple(map(int, torch_version.split(".")[:2])) >= (1, 5):
73 from torch.utils.cpp_extension import ROCM_HOME
74
75 if (getattr(torch.version, "hip", None) is not None) and (ROCM_HOME is not None):
76 has_rocm = True
77 has_cuda = has_gpu and (not has_rocm)
78
79 data = []
80 data.append(("sys.platform", sys.platform))
81 data.append(("Python", sys.version.replace("\n", "")))
82 data.append(("numpy", np.__version__))
83
84 try:
85 import fastreid
86
87 data.append(
88 ("fastreid", fastreid.__version__ + " @" + os.path.dirname(fastreid.__file__))
89 )
90 except ImportError:
91 data.append(("fastreid", "failed to import"))
92
93 data.append(get_env_module())
94 data.append(("PyTorch", torch_version + " @" + os.path.dirname(torch.__file__)))
95 data.append(("PyTorch debug build", torch.version.debug))
96
97 data.append(("GPU available", has_gpu))
98 if has_gpu:
99 devices = defaultdict(list)
100 for k in range(torch.cuda.device_count()):
101 devices[torch.cuda.get_device_name(k)].append(str(k))
102 for name, devids in devices.items():
103 data.append(("GPU " + ",".join(devids), name))
104
105 if has_rocm:
106 data.append(("ROCM_HOME", str(ROCM_HOME)))
107 else:
108 data.append(("CUDA_HOME", str(CUDA_HOME)))
109
110 cuda_arch_list = os.environ.get("TORCH_CUDA_ARCH_LIST", None)
111 if cuda_arch_list:
112 data.append(("TORCH_CUDA_ARCH_LIST", cuda_arch_list))
113 data.append(("Pillow", PIL.__version__))
114
115 try:
116 data.append(
117 (
118 "torchvision",
119 str(torchvision.__version__) + " @" + os.path.dirname(torchvision.__file__),
120 )
121 )
122 if has_cuda:
123 try:
124 torchvision_C = importlib.util.find_spec("torchvision._C").origin
125 msg = detect_compute_compatibility(CUDA_HOME, torchvision_C)
126 data.append(("torchvision arch flags", msg))
127 except ImportError:
128 data.append(("torchvision._C", "failed to find"))
129 except AttributeError:
130 data.append(("torchvision", "unknown"))
131
132 try:
133 import fvcore
134
135 data.append(("fvcore", fvcore.__version__))
136 except ImportError:
137 pass
138
139 try:
140 import cv2
141
142 data.append(("cv2", cv2.__version__))
143 except ImportError:
144 pass
145 env_str = tabulate(data) + "\n"
146 env_str += collect_torch_env()
147 return env_str
148
149