gem5.prebuilt.viper.board module

class gem5.prebuilt.viper.board.ViperBoard(clk_freq: str, processor: AbstractProcessor, memory: AbstractMemorySystem, cache_hierarchy: AbstractCacheHierarchy, gpus: List[BaseViperGPU] | None = None)

Bases: X86Board

A derivative of X86Board capable of full system simulation for X86 with a GPU device. Provides all the functionality of the X86Board with helper methods specific to booting a disk with GPU libraries installed, enables AVX on supported CPU models (KVM only right now) for PyTorch, a workaround for X86Board 3GiB memory limitation, and helper methods to create a temporary readfile which reads in a binary blob into the simulator.

Limitations * Only KVM and ATOMIC CPU models can be used due to issue CPU Ruby protocol * 3GiB limit workaround is a VIPER specific hack which silently creates an

additional memory controller with 128MiB of additional memory.

  • This board should not be used to measure CPU performance.

abstract = False
cxx_exports = []
cxx_extra_bases = []
cxx_param_exports = []
cxx_template_params = []
get_coherence_protocol()
get_default_kernel_args() List[str]

Returns a default list of arguments for the workload kernel. We assume the following strings may be used as placeholders, to be replaced when set_kernel_disk_workload is executed:

  • {root_value} : set to get_default_kernel_root_val().

Returns:

A default list of arguments for the workload kernel.

get_devices()

Get the devices connected to the board.

Currently, this is only used for GPUs by the ViperBoard.

Returns:

The devices connected to the board or None.

get_disk_device()

Set a default disk device, in case user does not specify a disk device.

Returns:

The disk device.

get_low_mem_ports() Sequence[Tuple[AddrRange, Port]]
get_pci_host()
make_gpu_app(gpu: BaseViperGPU, app: str, opts: str)
override_create = False