caminos-lib 0.6.3

A modular interconnection network simulator.
Documentation

Configuration
{
	random_seed: ![42,935,128643],
	warmup: 20000,
	measured: 10000,
	topology: Torus
	{
		sides: [8,8],
		servers_per_router: 2,
	},
	traffic: HomogeneousTraffic
	{
		pattern: ![
			Uniform { legend_name:"uniform" },
			RandomPermutation { legend_name:"random server permutation" },
			CartesianTransform
			{
				sides: [2,8,8],
				shift: [0,3,0],
				legend_name: "3-shift on x (a.k.a. tornado)",
			},
			CartesianTransform
			{
				sides: [2,8,8],
				permute: [0,2,1],
				legend_name: "transpose",
			},
		],
		servers: 128,
		load: ![0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0],
		//message_size: 128,
		message_size: 16,
	},
	maximum_packet_size: 16,
	router: Basic
	{
		virtual_channels: 2,
		//Choose randomly among the legal choices for each request.
		virtual_channel_policies: [ EnforceFlowControl, Random ],
		delay: 0,//0 cycles per router, as in fsin. Does it has even sense in the basic router?
		buffer_size: 64,//phits per buffer
		bubble: true,
		flit_size: 16,//phits in each packet. If equal to packet_size then it is virtual cut-through
		intransit_priority: false,
		allow_request_busy_port: true,
		output_prioritize_lowest_label: false,
		output_buffer_size:32,
	},
	routing: ![
			//This should enter a deadlock
			Shortest { legend_name: "unrestricted minimal routing" },
			DOR { order: [0,1], legend_name: "xy-DOR" },
			//Valiant's scheme, using DOR for both segments.
			Valiant {
				first: ChannelMap{routing:DOR {order:[0,1]},map:[ [0] ]},
				second: ChannelMap{routing:DOR {order:[0,1]},map:[ [1] ]},
				legend_name: "Valiant over DOR"
			},
		],
	link_classes: [
		LinkClass
		{
			delay: 1,
			//frequency_divisor: 1,//optionally set how many base cycles make out a link cycle of this class.
		},
		LinkClass
		{
			delay: 1,
			//frequency_divisor: 1,//optionally set how many base cycles make out a link cycle of this class.
		},
		LinkClass
		{
			delay: 1,
			//frequency_divisor: 1,//optionally set how many base cycles make out a link cycle of this class.
		},
		LinkClass
		{
			delay: 1,
			//frequency_divisor: 1,//optionally set how many base cycles make out a link cycle of this class.
		},
	],
	launch_configurations: [
		Slurm
		{
			job_pack_size: 2,
			time: "0-12:00:00",
		}
	]
}