Commit 0ca55744 authored by one's avatar one
Browse files

[xcl-lens] Move instance members to class members

parent 3e48fc9b
import re
from typing import Final
import pandas as pd
class RcclLogParser:
# Pattern -> output string or as-is
sys_patterns: Final = {
r"kernel version": None,
r"ROCr version": None,
r"RCCL version": None,
r"Librccl path": None,
r"iommu": None,
r"Dmabuf feature disabled": "Dmabuf: disabled",
r"Disabled GDRCopy": "GDRCopy: disabled",
r"Using network IB": "NET/IB: enabled",
r"NET/Plugin: Could not find: librccl-net.so": "NET/Plugin: internal",
}
# Pattern -> column with strict validation
graph_info_fields: Final = {
r"Pattern": ("Pattern", r"\d+"),
r"crossNic": ("crossNic", r"\d+"),
r"nChannels": ("nChannels", r"\d+"),
r"bw": ("bandwidth", r"[\d.]+/[\d.]+"),
r"type": ("type", r"[\w/]+"),
r"sameChannels": ("sameChannels", r"\d+"),
}
# Pattern -> column with strict validation
cl_transfer_fields: Final = {
r"protocol": ("protocol", r"Simple|LL|LL128"),
r"nbytes": ("nbytes", r"\d+"),
r"algorithm": ("algorithm", r"Tree|Ring"),
r"slicesteps": ("slicesteps", r"\d+"),
r"nchannels": ("nchannels", r"\d+"),
r"nloops": ("nloops", r"\d+"),
r"nsteps": ("nsteps", r"\d+"),
r"chunksize": ("chunksize", r"\d+"),
}
# Pattern -> column with strict validation
p2p_fields: Final = {
r"p2p : rank": ("local", r"\d+"),
r"send rank": ("send", r"\d+"),
r"recv rank": ("recv", r"\d+"),
r"p2pnChannelsPerPeer": ("p2pnChannelsPerPeer", r"\d+"),
r"p2pnChannels": ("p2pnChannels", r"\d+"),
r"nChannelsMax": ("nChannelsMax", r"\d+"),
r"protocol": ("protocol", r"Simple|LL|LL128"),
}
def __init__(self, verbose=False, hosts=None, ranks=None):
# Deduplicated set of (host, rank, content) tuples
self.log_entries: set[tuple[str, int, str]] = set()
......@@ -15,52 +62,6 @@ class RcclLogParser:
self._hosts = hosts if hosts is not None else []
self._ranks = [int(r) for r in ranks] if ranks is not None else []
# Pattern -> output string or as-is
self.sys_patterns = {
r"kernel version": None,
r"ROCr version": None,
r"RCCL version": None,
r"Librccl path": None,
r"iommu": None,
r"Dmabuf feature disabled": "Dmabuf: disabled",
r"Disabled GDRCopy": "GDRCopy: disabled",
r"Using network IB": "NET/IB: enabled",
r"NET/Plugin: Could not find: librccl-net.so": "NET/Plugin: internal",
}
# Pattern -> column with strict validation
self.graph_info_fields = {
r"Pattern": ("Pattern", r"\d+"),
r"crossNic": ("crossNic", r"\d+"),
r"nChannels": ("nChannels", r"\d+"),
r"bw": ("bandwidth", r"[\d.]+/[\d.]+"),
r"type": ("type", r"[\w/]+"),
r"sameChannels": ("sameChannels", r"\d+"),
}
# Pattern -> column with strict validation
self.cl_transfer_fields = {
r"protocol": ("protocol", r"Simple|LL|LL128"),
r"nbytes": ("nbytes", r"\d+"),
r"algorithm": ("algorithm", r"Tree|Ring"),
r"slicesteps": ("slicesteps", r"\d+"),
r"nchannels": ("nchannels", r"\d+"),
r"nloops": ("nloops", r"\d+"),
r"nsteps": ("nsteps", r"\d+"),
r"chunksize": ("chunksize", r"\d+"),
}
# Pattern -> column with strict validation
self.p2p_fields = {
r"p2p : rank": ("local", r"\d+"),
r"send rank": ("send", r"\d+"),
r"recv rank": ("recv", r"\d+"),
r"p2pnChannelsPerPeer": ("p2pnChannelsPerPeer", r"\d+"),
r"p2pnChannels": ("p2pnChannels", r"\d+"),
r"nChannelsMax": ("nChannelsMax", r"\d+"),
r"protocol": ("protocol", r"Simple|LL|LL128"),
}
def collect(self, line):
self._preprocess_line(line)
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment