sglang_v0.5.2/pytorch_2.8.0/third_party/python-peachpy/peachpy/stream.py

59 lines
1.5 KiB
Python

# This file is part of PeachPy package and is licensed under the Simplified BSD license.
# See license.rst for the full text of the license.
active_stream = None
class InstructionStream(object):
def __init__(self):
self.instructions = list()
self.previous_stream = None
def __enter__(self):
global active_stream
self.previous_stream = active_stream
active_stream = self
return self
def __exit__(self, exc_type, exc_value, traceback):
global active_stream
active_stream = self.previous_stream
self.previous_stream = None
def __iter__(self):
return iter(self.instructions)
def __len__(self):
return len(self.instructions)
def __getitem__(self, i):
try:
return self.instructions[i]
except IndexError:
return None
def add_instruction(self, instruction):
if instruction is not None:
self.instructions.append(instruction)
def issue(self, count=1):
for i in range(count):
if self.instructions:
active_stream.add_instruction(self.instructions.pop(0))
class NullStream:
def __init__(self):
self.previous_stream = None
def __enter__(self):
global active_stream
self.previous_stream = active_stream
active_stream = None
return self
def __exit__(self, exc_type, exc_value, traceback):
global active_stream
active_stream = self.previous_stream
self.previous_stream = None