From 4435efe94d0dd9653d3004bd748b16d5dfd5531c Mon Sep 17 00:00:00 2001 From: amosrai0 Date: Mon, 13 Apr 2026 06:47:51 +0000 Subject: [PATCH 1/6] cleaning and fixes --- .../analytical_congestion_aware_sample.ipynb | 209 + .../analytical_congestion_aware_sample.py | 92 - ...analytical_congestion_unaware_sample.ipynb | 207 + .../analytical_congestion_unaware_sample.py | 90 - .../notebooks/config_to_schema_sample.ipynb | 258 + .../notebooks/config_to_schema_sample.py | 104 - client-scripts/notebooks/htsim_sample.ipynb | 240 + client-scripts/notebooks/htsim_sample.py | 125 - .../infragraph/analytical_dgx_device.ipynb | 632 ++ .../infragraph/analytical_dgx_device.py | 132 - .../infragraph/analytical_ironwood_rack.ipynb | 300 + .../infragraph/analytical_ironwood_rack.py | 131 - .../infragraph/htsim_clos_fabric_2tier.ipynb | 328 + .../infragraph/htsim_clos_fabric_2tier.py | 156 - .../infragraph/htsim_clos_fabric_3tier.ipynb | 5750 +++++++++++++++++ .../infragraph/htsim_clos_fabric_3tier.py | 155 - .../infragraph/ns3_clos_fabric_2tier.ipynb | 362 ++ .../infragraph/ns3_clos_fabric_2tier.py | 164 - .../infragraph/ns3_clos_fabric_3tier.ipynb | 343 + .../infragraph/ns3_clos_fabric_3tier.py | 160 - .../infragraph/ns3_single_dgx_device.ipynb | 838 +++ .../infragraph/ns3_single_dgx_device.py | 158 - .../ns3_single_ironwood_device.ipynb | 2553 ++++++++ .../infragraph/ns3_single_ironwood_device.py | 152 - .../infragraph/ns3_single_tier_with_dgx.ipynb | 735 +++ .../infragraph/ns3_single_tier_with_dgx.py | 161 - .../ns3_single_tier_with_generic_server.ipynb | 653 ++ .../ns3_single_tier_with_generic_server.py | 192 - .../notebooks/load_existing_et_example.ipynb | 267 + .../notebooks/load_existing_et_example.py | 131 - client-scripts/notebooks/ns3_sample.ipynb | 273 + client-scripts/notebooks/ns3_sample.py | 128 - ...test_analytical_congestion_aware_sample.py | 65 - ...st_analytical_congestion_unaware_sample.py | 63 - .../test_analytical_dgx_device.py | 100 - .../test_analytical_ironwood_rack.py | 100 - .../test_htsim_clos_fabric_2tier.py | 121 - .../test_htsim_clos_fabric_3tier.py | 121 - .../tests/test-notebook/test_htsim_sample.py | 97 - .../test_load_existing_et_example.py | 101 - .../test_ns3_clos_fabric_2tier.py | 128 - .../test_ns3_clos_fabric_3tier.py | 125 - .../tests/test-notebook/test_ns3_sample.py | 98 - .../test_ns3_single_dgx_device.py | 121 - .../test_ns3_single_ironwood_device.py | 117 - .../test_ns3_single_tier_with_dgx.py | 126 - ...est_ns3_single_tier_with_generic_server.py | 157 - 47 files changed, 13948 insertions(+), 3871 deletions(-) create mode 100644 client-scripts/notebooks/analytical_congestion_aware_sample.ipynb delete mode 100644 client-scripts/notebooks/analytical_congestion_aware_sample.py create mode 100644 client-scripts/notebooks/analytical_congestion_unaware_sample.ipynb delete mode 100644 client-scripts/notebooks/analytical_congestion_unaware_sample.py create mode 100644 client-scripts/notebooks/config_to_schema_sample.ipynb delete mode 100644 client-scripts/notebooks/config_to_schema_sample.py create mode 100644 client-scripts/notebooks/htsim_sample.ipynb delete mode 100644 client-scripts/notebooks/htsim_sample.py create mode 100644 client-scripts/notebooks/infragraph/analytical_dgx_device.ipynb delete mode 100644 client-scripts/notebooks/infragraph/analytical_dgx_device.py create mode 100644 client-scripts/notebooks/infragraph/analytical_ironwood_rack.ipynb delete mode 100644 client-scripts/notebooks/infragraph/analytical_ironwood_rack.py create mode 100644 client-scripts/notebooks/infragraph/htsim_clos_fabric_2tier.ipynb delete mode 100644 client-scripts/notebooks/infragraph/htsim_clos_fabric_2tier.py create mode 100644 client-scripts/notebooks/infragraph/htsim_clos_fabric_3tier.ipynb delete mode 100644 client-scripts/notebooks/infragraph/htsim_clos_fabric_3tier.py create mode 100644 client-scripts/notebooks/infragraph/ns3_clos_fabric_2tier.ipynb delete mode 100644 client-scripts/notebooks/infragraph/ns3_clos_fabric_2tier.py create mode 100644 client-scripts/notebooks/infragraph/ns3_clos_fabric_3tier.ipynb delete mode 100644 client-scripts/notebooks/infragraph/ns3_clos_fabric_3tier.py create mode 100644 client-scripts/notebooks/infragraph/ns3_single_dgx_device.ipynb delete mode 100644 client-scripts/notebooks/infragraph/ns3_single_dgx_device.py create mode 100644 client-scripts/notebooks/infragraph/ns3_single_ironwood_device.ipynb delete mode 100644 client-scripts/notebooks/infragraph/ns3_single_ironwood_device.py create mode 100644 client-scripts/notebooks/infragraph/ns3_single_tier_with_dgx.ipynb delete mode 100644 client-scripts/notebooks/infragraph/ns3_single_tier_with_dgx.py create mode 100644 client-scripts/notebooks/infragraph/ns3_single_tier_with_generic_server.ipynb delete mode 100644 client-scripts/notebooks/infragraph/ns3_single_tier_with_generic_server.py create mode 100644 client-scripts/notebooks/load_existing_et_example.ipynb delete mode 100644 client-scripts/notebooks/load_existing_et_example.py create mode 100644 client-scripts/notebooks/ns3_sample.ipynb delete mode 100644 client-scripts/notebooks/ns3_sample.py delete mode 100644 service/tests/test-notebook/test_analytical_congestion_aware_sample.py delete mode 100644 service/tests/test-notebook/test_analytical_congestion_unaware_sample.py delete mode 100644 service/tests/test-notebook/test_analytical_dgx_device.py delete mode 100644 service/tests/test-notebook/test_analytical_ironwood_rack.py delete mode 100644 service/tests/test-notebook/test_htsim_clos_fabric_2tier.py delete mode 100644 service/tests/test-notebook/test_htsim_clos_fabric_3tier.py delete mode 100644 service/tests/test-notebook/test_htsim_sample.py delete mode 100644 service/tests/test-notebook/test_load_existing_et_example.py delete mode 100644 service/tests/test-notebook/test_ns3_clos_fabric_2tier.py delete mode 100644 service/tests/test-notebook/test_ns3_clos_fabric_3tier.py delete mode 100644 service/tests/test-notebook/test_ns3_sample.py delete mode 100644 service/tests/test-notebook/test_ns3_single_dgx_device.py delete mode 100644 service/tests/test-notebook/test_ns3_single_ironwood_device.py delete mode 100644 service/tests/test-notebook/test_ns3_single_tier_with_dgx.py delete mode 100644 service/tests/test-notebook/test_ns3_single_tier_with_generic_server.py diff --git a/client-scripts/notebooks/analytical_congestion_aware_sample.ipynb b/client-scripts/notebooks/analytical_congestion_aware_sample.ipynb new file mode 100644 index 0000000..793dbce --- /dev/null +++ b/client-scripts/notebooks/analytical_congestion_aware_sample.ipynb @@ -0,0 +1,209 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "42708369", + "metadata": {}, + "source": [ + "##### Import the required modules and configure the system path to locate them" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "970611b8", + "metadata": {}, + "outputs": [], + "source": [ + "import sys\n", + "sys.path.append(\"../utils\")\n", + "from astra_sim import AstraSim, Collective, NetworkBackend" + ] + }, + { + "cell_type": "markdown", + "id": "fa81522b", + "metadata": {}, + "source": [ + "##### Call the AstraSim client helper with the server endpoint and tag to connect to the ASTRA-sim gRPC server, initialize the SDK, and create a tagged folder for configs, results, and logs." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "a89f699a", + "metadata": {}, + "outputs": [], + "source": [ + "astra = AstraSim(server_endpoint = \"172.17.0.2:8989\", tag = \"analytical_congestion_aware_sample\")" + ] + }, + { + "cell_type": "markdown", + "id": "67e495d4", + "metadata": {}, + "source": [ + "##### Generate workload execution traces for each rank and set the required data size for AstraSim configuration" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "a3f00619", + "metadata": { + "lines_to_next_cell": 2 + }, + "outputs": [], + "source": [ + "astra.configuration.common_config.workload = astra.generate_collective(collective=Collective.ALLTOALL, coll_size= 8*1024*1024, npu_range=[0,8])\n", + "print(astra.configuration.common_config.workload)" + ] + }, + { + "cell_type": "markdown", + "id": "f7fe6ba5", + "metadata": {}, + "source": [ + "##### Configure ASTRA-sim system config" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "2bc05826", + "metadata": { + "lines_to_next_cell": 2 + }, + "outputs": [], + "source": [ + "astra.configuration.common_config.system.scheduling_policy = astra.configuration.common_config.system.LIFO\n", + "astra.configuration.common_config.system.endpoint_delay = 10\n", + "astra.configuration.common_config.system.active_chunks_per_dimension = 1\n", + "astra.configuration.common_config.system.all_gather_implementation = [astra.configuration.common_config.system.RING]\n", + "astra.configuration.common_config.system.all_to_all_implementation = [astra.configuration.common_config.system.DIRECT]\n", + "astra.configuration.common_config.system.all_reduce_implementation = [astra.configuration.common_config.system.RING]\n", + "astra.configuration.common_config.system.collective_optimization = astra.configuration.common_config.system.LOCALBWAWARE\n", + "astra.configuration.common_config.system.local_mem_bw = 1600\n", + "print(astra.configuration.common_config.system)" + ] + }, + { + "cell_type": "markdown", + "id": "292def3f", + "metadata": {}, + "source": [ + "##### Configure ASTRA-sim remote memory configuration" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "6353e6c6", + "metadata": { + "lines_to_next_cell": 2 + }, + "outputs": [], + "source": [ + "astra.configuration.common_config.remote_memory.memory_type = astra.configuration.common_config.remote_memory.NO_MEMORY_EXPANSION\n", + "print(astra.configuration.common_config.remote_memory)" + ] + }, + { + "cell_type": "markdown", + "id": "76e50273", + "metadata": {}, + "source": [ + "##### Configure the network backend and topology" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "0384143f", + "metadata": { + "lines_to_next_cell": 2 + }, + "outputs": [], + "source": [ + "# astra.configuration.network_backend.choice = astra.configuration.network_backend.ANALYTICAL_CONGESTION_AWARE\n", + "astra.configuration.network_backend.analytical_congestion_aware.topology.network.clear()\n", + "astra.configuration.network_backend.analytical_congestion_aware.topology.network.add(\"switch\", 8, 100, 0.005) # add(type_of_topology, number_of_nodes, bandwidth_in_gbps, latency_in_ns)\n", + "print(\"Network backend set to\", astra.configuration.network_backend.choice)\n", + "print(\"network backend choice set to:\",astra.configuration.network_backend.analytical_congestion_aware.topology.choice)" + ] + }, + { + "cell_type": "markdown", + "id": "8a9b435c", + "metadata": {}, + "source": [ + "##### Configure ASTRA-sim cmd parameters" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f2cbf6ec", + "metadata": { + "lines_to_next_cell": 2 + }, + "outputs": [], + "source": [ + "astra.configuration.common_config.cmd_parameters.comm_scale = 1\n", + "astra.configuration.common_config.cmd_parameters.rendezvous_protocol = False\n", + "astra.configuration.common_config.cmd_parameters.injection_scale = 1\n", + "\n", + "print(astra.configuration.network_backend.analytical_congestion_aware.topology.network)" + ] + }, + { + "cell_type": "markdown", + "id": "a6857638", + "metadata": {}, + "source": [ + "#### Start the simulation by specifying the network backend" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e8e0cfef", + "metadata": {}, + "outputs": [], + "source": [ + "astra.run_simulation(NetworkBackend.ANALYTICAL_CONGESTION_AWARE)" + ] + }, + { + "cell_type": "markdown", + "id": "0d74c3ca", + "metadata": {}, + "source": [ + "##### Download all the configurations as a zip" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "46bbb3e0", + "metadata": {}, + "outputs": [], + "source": [ + "astra.download_configuration()" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "name": "python", + "version": "3.11.0" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/client-scripts/notebooks/analytical_congestion_aware_sample.py b/client-scripts/notebooks/analytical_congestion_aware_sample.py deleted file mode 100644 index a166181..0000000 --- a/client-scripts/notebooks/analytical_congestion_aware_sample.py +++ /dev/null @@ -1,92 +0,0 @@ -# --- -# jupyter: -# jupytext: -# text_representation: -# extension: .py -# format_name: percent -# format_version: '1.3' -# jupytext_version: 1.19.1 -# kernelspec: -# display_name: Python 3 -# language: python -# name: python3 -# --- - -# %% [markdown] -# ##### Import the required modules and configure the system path to locate them - -# %% -import sys -sys.path.append("../utils") -from astra_sim import AstraSim, Collective, NetworkBackend - -# %% [markdown] -# ##### Call the AstraSim client helper with the server endpoint and tag to connect to the ASTRA-sim gRPC server, initialize the SDK, and create a tagged folder for configs, results, and logs. - -# %% -astra = AstraSim(server_endpoint = "172.17.0.2:8989", tag = "analytical_congestion_aware_sample") - -# %% [markdown] -# ##### Generate workload execution traces for each rank and set the required data size for AstraSim configuration - -# %% -astra.configuration.common_config.workload = astra.generate_collective(collective=Collective.ALLTOALL, coll_size= 8*1024*1024, npu_range=[0,8]) -print(astra.configuration.common_config.workload) - - -# %% [markdown] -# ##### Configure ASTRA-sim system config - -# %% -astra.configuration.common_config.system.scheduling_policy = astra.configuration.common_config.system.LIFO -astra.configuration.common_config.system.endpoint_delay = 10 -astra.configuration.common_config.system.active_chunks_per_dimension = 1 -astra.configuration.common_config.system.all_gather_implementation = [astra.configuration.common_config.system.RING] -astra.configuration.common_config.system.all_to_all_implementation = [astra.configuration.common_config.system.DIRECT] -astra.configuration.common_config.system.all_reduce_implementation = [astra.configuration.common_config.system.RING] -astra.configuration.common_config.system.collective_optimization = astra.configuration.common_config.system.LOCALBWAWARE -astra.configuration.common_config.system.local_mem_bw = 1600 -print(astra.configuration.common_config.system) - - -# %% [markdown] -# ##### Configure ASTRA-sim remote memory configuration - -# %% -astra.configuration.common_config.remote_memory.memory_type = astra.configuration.common_config.remote_memory.NO_MEMORY_EXPANSION -print(astra.configuration.common_config.remote_memory) - - -# %% [markdown] -# ##### Configure the network backend and topology - -# %% -# astra.configuration.network_backend.choice = astra.configuration.network_backend.ANALYTICAL_CONGESTION_AWARE -astra.configuration.network_backend.analytical_congestion_aware.topology.network.clear() -astra.configuration.network_backend.analytical_congestion_aware.topology.network.add("switch", 8, 100, 0.005) # add(type_of_topology, number_of_nodes, bandwidth_in_gbps, latency_in_ns) -print("Network backend set to", astra.configuration.network_backend.choice) -print("network backend choice set to:",astra.configuration.network_backend.analytical_congestion_aware.topology.choice) - - -# %% [markdown] -# ##### Configure ASTRA-sim cmd parameters - -# %% -astra.configuration.common_config.cmd_parameters.comm_scale = 1 -astra.configuration.common_config.cmd_parameters.rendezvous_protocol = False -astra.configuration.common_config.cmd_parameters.injection_scale = 1 - -print(astra.configuration.network_backend.analytical_congestion_aware.topology.network) - - -# %% [markdown] -# #### Start the simulation by specifying the network backend - -# %% -astra.run_simulation(NetworkBackend.ANALYTICAL_CONGESTION_AWARE) - -# %% [markdown] -# ##### Download all the configurations as a zip - -# %% -astra.download_configuration() diff --git a/client-scripts/notebooks/analytical_congestion_unaware_sample.ipynb b/client-scripts/notebooks/analytical_congestion_unaware_sample.ipynb new file mode 100644 index 0000000..f203f31 --- /dev/null +++ b/client-scripts/notebooks/analytical_congestion_unaware_sample.ipynb @@ -0,0 +1,207 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "eb43ba22", + "metadata": {}, + "source": [ + "##### Import the required modules and configure the system path to locate them" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "3060cfd4", + "metadata": {}, + "outputs": [], + "source": [ + "import sys\n", + "sys.path.append(\"../utils\")\n", + "from astra_sim import AstraSim, Collective, NetworkBackend" + ] + }, + { + "cell_type": "markdown", + "id": "70c0620f", + "metadata": {}, + "source": [ + "##### Call the AstraSim client helper with the server endpoint and tag to connect to the ASTRA-sim gRPC server, initialize the SDK, and create a tagged folder for configs, results, and logs." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "1d58edab", + "metadata": {}, + "outputs": [], + "source": [ + "astra = AstraSim(server_endpoint =\"172.17.0.2:8989\", tag = \"analytical_congestion_unaware_sample\")" + ] + }, + { + "cell_type": "markdown", + "id": "9ccee35f", + "metadata": {}, + "source": [ + "##### Generate workload execution traces for each rank and set the required data size for AstraSim configuration" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "3e81c44d", + "metadata": { + "lines_to_next_cell": 2 + }, + "outputs": [], + "source": [ + "astra.configuration.common_config.workload = astra.generate_collective(collective=Collective.ALLREDUCE, coll_size= 1024*1024*1024, npu_range=[0,8])\n", + "print(astra.configuration.common_config.workload)" + ] + }, + { + "cell_type": "markdown", + "id": "64b74479", + "metadata": {}, + "source": [ + "##### Configure ASTRA-sim system config" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "329a9e55", + "metadata": { + "lines_to_next_cell": 2 + }, + "outputs": [], + "source": [ + "astra.configuration.common_config.system.scheduling_policy = astra.configuration.common_config.system.LIFO\n", + "astra.configuration.common_config.system.endpoint_delay = 10\n", + "astra.configuration.common_config.system.active_chunks_per_dimension = 1\n", + "astra.configuration.common_config.system.all_gather_implementation = [astra.configuration.common_config.system.RING]\n", + "astra.configuration.common_config.system.all_to_all_implementation = [astra.configuration.common_config.system.DIRECT]\n", + "astra.configuration.common_config.system.all_reduce_implementation = [astra.configuration.common_config.system.RING]\n", + "astra.configuration.common_config.system.collective_optimization = astra.configuration.common_config.system.LOCALBWAWARE\n", + "astra.configuration.common_config.system.local_mem_bw = 1600\n", + "print(astra.configuration.common_config.system)" + ] + }, + { + "cell_type": "markdown", + "id": "714ee503", + "metadata": {}, + "source": [ + "##### Configure ASTRA-sim remote memory configuration" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "2dedb40d", + "metadata": { + "lines_to_next_cell": 2 + }, + "outputs": [], + "source": [ + "astra.configuration.common_config.remote_memory.memory_type = astra.configuration.common_config.remote_memory.NO_MEMORY_EXPANSION\n", + "print(astra.configuration.common_config.remote_memory)" + ] + }, + { + "cell_type": "markdown", + "id": "b08c6473", + "metadata": {}, + "source": [ + "##### Configure the network backend and topology" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "260c0790", + "metadata": {}, + "outputs": [], + "source": [ + "# astra.configuration.network_backend.choice = astra.configuration.network_backend.ANALYTICAL_CONGESTION_UNAWARE\n", + "astra.configuration.network_backend.analytical_congestion_aware.topology.network.clear()\n", + "astra.configuration.network_backend.analytical_congestion_unaware.topology.network.add(\"fullyconnected\", 8, 100, 0.005) # add(type_of_topology, number_of_nodes, bandwidth_in_gbps, latency_in_ns)\n", + "print(\"Network backend set to\", astra.configuration.network_backend.choice)\n", + "print(\"network backend choice set to:\",astra.configuration.network_backend.analytical_congestion_unaware.topology.choice)" + ] + }, + { + "cell_type": "markdown", + "id": "e8c1dfdf", + "metadata": {}, + "source": [ + "##### Configure ASTRA-sim cmd parameters" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "2415e723", + "metadata": { + "lines_to_next_cell": 2 + }, + "outputs": [], + "source": [ + "astra.configuration.common_config.cmd_parameters.comm_scale = 1\n", + "astra.configuration.common_config.cmd_parameters.rendezvous_protocol = False\n", + "astra.configuration.common_config.cmd_parameters.injection_scale = 1" + ] + }, + { + "cell_type": "markdown", + "id": "99679487", + "metadata": {}, + "source": [ + "#### Start the simulation by specifying the network backend" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "073d2540", + "metadata": {}, + "outputs": [], + "source": [ + "astra.run_simulation(NetworkBackend.ANALYTICAL_CONGESTION_UNAWARE)" + ] + }, + { + "cell_type": "markdown", + "id": "beba5b30", + "metadata": {}, + "source": [ + "##### Download all the configurations as a zip" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "aaba6af4", + "metadata": { + "lines_to_next_cell": 2 + }, + "outputs": [], + "source": [ + "astra.download_configuration()" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "name": "python", + "version": "3.11.0" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/client-scripts/notebooks/analytical_congestion_unaware_sample.py b/client-scripts/notebooks/analytical_congestion_unaware_sample.py deleted file mode 100644 index d699c45..0000000 --- a/client-scripts/notebooks/analytical_congestion_unaware_sample.py +++ /dev/null @@ -1,90 +0,0 @@ -# --- -# jupyter: -# jupytext: -# text_representation: -# extension: .py -# format_name: percent -# format_version: '1.3' -# jupytext_version: 1.19.1 -# kernelspec: -# display_name: Python 3 -# language: python -# name: python3 -# --- - -# %% [markdown] -# ##### Import the required modules and configure the system path to locate them - -# %% -import sys -sys.path.append("../utils") -from astra_sim import AstraSim, Collective, NetworkBackend - -# %% [markdown] -# ##### Call the AstraSim client helper with the server endpoint and tag to connect to the ASTRA-sim gRPC server, initialize the SDK, and create a tagged folder for configs, results, and logs. - -# %% -astra = AstraSim(server_endpoint ="172.17.0.2:8989", tag = "analytical_congestion_unaware_sample") - -# %% [markdown] -# ##### Generate workload execution traces for each rank and set the required data size for AstraSim configuration - -# %% -astra.configuration.common_config.workload = astra.generate_collective(collective=Collective.ALLREDUCE, coll_size= 1024*1024*1024, npu_range=[0,8]) -print(astra.configuration.common_config.workload) - - -# %% [markdown] -# ##### Configure ASTRA-sim system config - -# %% -astra.configuration.common_config.system.scheduling_policy = astra.configuration.common_config.system.LIFO -astra.configuration.common_config.system.endpoint_delay = 10 -astra.configuration.common_config.system.active_chunks_per_dimension = 1 -astra.configuration.common_config.system.all_gather_implementation = [astra.configuration.common_config.system.RING] -astra.configuration.common_config.system.all_to_all_implementation = [astra.configuration.common_config.system.DIRECT] -astra.configuration.common_config.system.all_reduce_implementation = [astra.configuration.common_config.system.RING] -astra.configuration.common_config.system.collective_optimization = astra.configuration.common_config.system.LOCALBWAWARE -astra.configuration.common_config.system.local_mem_bw = 1600 -print(astra.configuration.common_config.system) - - -# %% [markdown] -# ##### Configure ASTRA-sim remote memory configuration - -# %% -astra.configuration.common_config.remote_memory.memory_type = astra.configuration.common_config.remote_memory.NO_MEMORY_EXPANSION -print(astra.configuration.common_config.remote_memory) - - -# %% [markdown] -# ##### Configure the network backend and topology - -# %% -# astra.configuration.network_backend.choice = astra.configuration.network_backend.ANALYTICAL_CONGESTION_UNAWARE -astra.configuration.network_backend.analytical_congestion_aware.topology.network.clear() -astra.configuration.network_backend.analytical_congestion_unaware.topology.network.add("fullyconnected", 8, 100, 0.005) # add(type_of_topology, number_of_nodes, bandwidth_in_gbps, latency_in_ns) -print("Network backend set to", astra.configuration.network_backend.choice) -print("network backend choice set to:",astra.configuration.network_backend.analytical_congestion_unaware.topology.choice) - -# %% [markdown] -# ##### Configure ASTRA-sim cmd parameters - -# %% -astra.configuration.common_config.cmd_parameters.comm_scale = 1 -astra.configuration.common_config.cmd_parameters.rendezvous_protocol = False -astra.configuration.common_config.cmd_parameters.injection_scale = 1 - - -# %% [markdown] -# #### Start the simulation by specifying the network backend - -# %% -astra.run_simulation(NetworkBackend.ANALYTICAL_CONGESTION_UNAWARE) - -# %% [markdown] -# ##### Download all the configurations as a zip - -# %% -astra.download_configuration() - diff --git a/client-scripts/notebooks/config_to_schema_sample.ipynb b/client-scripts/notebooks/config_to_schema_sample.ipynb new file mode 100644 index 0000000..df99828 --- /dev/null +++ b/client-scripts/notebooks/config_to_schema_sample.ipynb @@ -0,0 +1,258 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "794e5901", + "metadata": {}, + "source": [ + "##### Import the required modules and configure the system path to locate them" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "9cd4574f", + "metadata": {}, + "outputs": [], + "source": [ + "import sys\n", + "import os\n", + "sys.path.append(\"../utils\")\n", + "from config_to_schema import TranslateConfig\n", + "import astra_sim_sdk.astra_sim_sdk as astra_sim" + ] + }, + { + "cell_type": "markdown", + "id": "ac016638", + "metadata": {}, + "source": [ + "##### Initialize astra-sim sdk" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "3f03bf76", + "metadata": {}, + "outputs": [], + "source": [ + "config = astra_sim.Config()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "86088050", + "metadata": {}, + "outputs": [], + "source": [ + "RESOURCES_DIR = os.path.join(os.path.dirname(os.path.abspath(__file__)), \"../resourcess/\")" + ] + }, + { + "cell_type": "markdown", + "id": "6748d449", + "metadata": {}, + "source": [ + "##### Translate Remote Memory" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "5c2ae4df", + "metadata": {}, + "outputs": [], + "source": [ + "remote_mem_path = os.path.join(RESOURCES_DIR, \"RemoteMemory.json\")\n", + "TranslateConfig.translate_remote_memory(remote_mem_path, config)" + ] + }, + { + "cell_type": "markdown", + "id": "b9d359ef", + "metadata": {}, + "source": [ + "##### Translate System Configuration" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ba5028dc", + "metadata": {}, + "outputs": [], + "source": [ + "system_config_path = os.path.join(RESOURCES_DIR, \"system.json\")\n", + "TranslateConfig.translate_system_configuration(system_config_path, config)" + ] + }, + { + "cell_type": "markdown", + "id": "2ee6f37d", + "metadata": {}, + "source": [ + "##### Translate Communicator group Configuration" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "5394e3a6", + "metadata": {}, + "outputs": [], + "source": [ + "communicator_config_path = os.path.join(RESOURCES_DIR, \"communicator_group.json\")\n", + "TranslateConfig.translate_communicator_configuration(communicator_config_path, config)" + ] + }, + { + "cell_type": "markdown", + "id": "7bd8daf5", + "metadata": {}, + "source": [ + "##### Translate nc-topology Configuration\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "30286e0b", + "metadata": {}, + "outputs": [], + "source": [ + "nc_topology_file_path = os.path.join(RESOURCES_DIR, \"nc-topology-file.txt\")\n", + "TranslateConfig.translate_ns3_nc_topology_configuration(nc_topology_file_path, config)" + ] + }, + { + "cell_type": "markdown", + "id": "55c3383b", + "metadata": {}, + "source": [ + "##### Translate network Configuration" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "bb0467cd", + "metadata": {}, + "outputs": [], + "source": [ + "network_config_path = os.path.join(RESOURCES_DIR, \"network_config.txt\")\n", + "TranslateConfig.translate_ns3_network_configuration(network_config_path, config)" + ] + }, + { + "cell_type": "markdown", + "id": "d7ec022b", + "metadata": {}, + "source": [ + "##### Translate logical Configuration" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "fef72781", + "metadata": {}, + "outputs": [], + "source": [ + "logical_dim_file = os.path.join(RESOURCES_DIR, \"logical.json\")\n", + "TranslateConfig.translate_ns3_logical_configuration(logical_dim_file, config)" + ] + }, + { + "cell_type": "markdown", + "id": "595828c0", + "metadata": {}, + "source": [ + "##### Translate analytical network Configuration" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "7a0dfea3", + "metadata": {}, + "outputs": [], + "source": [ + "analytical_network_file = os.path.join(RESOURCES_DIR, \"network.yaml\")\n", + "# There are three available backends — analytical_congestion_aware, analytical_congestion_unaware, and HTsim — all of which use the analytical_network file format, so specify the backend_name\n", + "TranslateConfig.translate_analytical_network(analytical_network_file, config, \"analytical_congestion_aware\")" + ] + }, + { + "cell_type": "markdown", + "id": "250e418b", + "metadata": {}, + "source": [ + "##### Translate HTsim fat tree topology" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "6ee56854", + "metadata": {}, + "outputs": [], + "source": [ + "htsim_fat_tree_file = os.path.join(RESOURCES_DIR, \"8nodes.topo\")\n", + "TranslateConfig.translate_htsim_fat_tree_topology(htsim_fat_tree_file, config)" + ] + }, + { + "cell_type": "markdown", + "id": "1d586a45", + "metadata": {}, + "source": [ + "##### Translate ns3 trace file" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "9eebd213", + "metadata": {}, + "outputs": [], + "source": [ + "ns3_trace_file = os.path.join(RESOURCES_DIR, \"trace.txt\")\n", + "TranslateConfig.translate_ns3_trace_file_to_schema(ns3_trace_file, config)" + ] + }, + { + "cell_type": "markdown", + "id": "fd2fc03c", + "metadata": {}, + "source": [ + "##### Translate logging file to schema" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "9b60a44a", + "metadata": {}, + "outputs": [], + "source": [ + "logging_toml_file = os.path.join(RESOURCES_DIR, \"logging_config.toml\")\n", + "TranslateConfig.translate_logging_file_to_schema(logging_toml_file, config)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "name": "python", + "version": "3.11.0" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/client-scripts/notebooks/config_to_schema_sample.py b/client-scripts/notebooks/config_to_schema_sample.py deleted file mode 100644 index f57131c..0000000 --- a/client-scripts/notebooks/config_to_schema_sample.py +++ /dev/null @@ -1,104 +0,0 @@ -# --- -# jupyter: -# jupytext: -# text_representation: -# extension: .py -# format_name: percent -# format_version: '1.3' -# jupytext_version: 1.19.1 -# kernelspec: -# display_name: Python 3 -# language: python -# name: python3 -# --- - -# %% [markdown] -# ##### Import the required modules and configure the system path to locate them - -# %% -import sys -import os -sys.path.append("../utils") -from config_to_schema import TranslateConfig -import astra_sim_sdk.astra_sim_sdk as astra_sim - -# %% [markdown] -# ##### Initialize astra-sim sdk - -# %% -config = astra_sim.Config() - -# %% -RESOURCES_DIR = os.path.join(os.path.dirname(os.path.abspath(__file__)), "../resourcess/") - -# %% [markdown] -# ##### Translate Remote Memory - -# %% -remote_mem_path = os.path.join(RESOURCES_DIR, "RemoteMemory.json") -TranslateConfig.translate_remote_memory(remote_mem_path, config) - -# %% [markdown] -# ##### Translate System Configuration - -# %% -system_config_path = os.path.join(RESOURCES_DIR, "system.json") -TranslateConfig.translate_system_configuration(system_config_path, config) - -# %% [markdown] -# ##### Translate Communicator group Configuration - -# %% -communicator_config_path = os.path.join(RESOURCES_DIR, "communicator_group.json") -TranslateConfig.translate_communicator_configuration(communicator_config_path, config) - -# %% [markdown] -# ##### Translate nc-topology Configuration -# - -# %% -nc_topology_file_path = os.path.join(RESOURCES_DIR, "nc-topology-file.txt") -TranslateConfig.translate_ns3_nc_topology_configuration(nc_topology_file_path, config) - -# %% [markdown] -# ##### Translate network Configuration - -# %% -network_config_path = os.path.join(RESOURCES_DIR, "network_config.txt") -TranslateConfig.translate_ns3_network_configuration(network_config_path, config) - -# %% [markdown] -# ##### Translate logical Configuration - -# %% -logical_dim_file = os.path.join(RESOURCES_DIR, "logical.json") -TranslateConfig.translate_ns3_logical_configuration(logical_dim_file, config) - -# %% [markdown] -# ##### Translate analytical network Configuration - -# %% -analytical_network_file = os.path.join(RESOURCES_DIR, "network.yaml") -# There are three available backends — analytical_congestion_aware, analytical_congestion_unaware, and HTsim — all of which use the analytical_network file format, so specify the backend_name -TranslateConfig.translate_analytical_network(analytical_network_file, config, "analytical_congestion_aware") - -# %% [markdown] -# ##### Translate HTsim fat tree topology - -# %% -htsim_fat_tree_file = os.path.join(RESOURCES_DIR, "8nodes.topo") -TranslateConfig.translate_htsim_fat_tree_topology(htsim_fat_tree_file, config) - -# %% [markdown] -# ##### Translate ns3 trace file - -# %% -ns3_trace_file = os.path.join(RESOURCES_DIR, "trace.txt") -TranslateConfig.translate_ns3_trace_file_to_schema(ns3_trace_file, config) - -# %% [markdown] -# ##### Translate logging file to schema - -# %% -logging_toml_file = os.path.join(RESOURCES_DIR, "logging_config.toml") -TranslateConfig.translate_logging_file_to_schema(logging_toml_file, config) diff --git a/client-scripts/notebooks/htsim_sample.ipynb b/client-scripts/notebooks/htsim_sample.ipynb new file mode 100644 index 0000000..f6eedba --- /dev/null +++ b/client-scripts/notebooks/htsim_sample.ipynb @@ -0,0 +1,240 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "8ca5060e", + "metadata": {}, + "source": [ + "##### Import the required modules and configure the system path to locate them" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "0578d4a5", + "metadata": {}, + "outputs": [], + "source": [ + "import sys\n", + "sys.path.append(\"../utils\")\n", + "from astra_sim import AstraSim, Collective, NetworkBackend" + ] + }, + { + "cell_type": "markdown", + "id": "2758ebfe", + "metadata": {}, + "source": [ + "##### Call the AstraSim client helper with the server endpoint and tag to connect to the ASTRA-sim gRPC server, initialize the SDK, and create a tagged folder for configs, results, and logs." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ed5628bc", + "metadata": {}, + "outputs": [], + "source": [ + "astra = AstraSim(server_endpoint =\"172.17.0.2:8989\",tag = \"htsim_sample\")" + ] + }, + { + "cell_type": "markdown", + "id": "768c6eaa", + "metadata": {}, + "source": [ + "##### Generate workload execution traces for each rank and set the required data size for AstraSim configuration" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "a0531dfd", + "metadata": {}, + "outputs": [], + "source": [ + "astra.configuration.common_config.workload = astra.generate_collective(collective=Collective.ALLREDUCE, coll_size= 1 * 1024 * 1024, npu_range=[0, 8])\n", + "print(astra.configuration.common_config.workload)" + ] + }, + { + "cell_type": "markdown", + "id": "3a7b4d31", + "metadata": {}, + "source": [ + "##### Configure ASTRA-sim system config" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "015c17a2", + "metadata": {}, + "outputs": [], + "source": [ + "astra.configuration.common_config.system.scheduling_policy = astra.configuration.common_config.system.LIFO\n", + "astra.configuration.common_config.system.endpoint_delay = 10\n", + "astra.configuration.common_config.system.active_chunks_per_dimension = 1\n", + "astra.configuration.common_config.system.preferred_dataset_splits = 4\n", + "astra.configuration.common_config.system.all_gather_implementation = [astra.configuration.common_config.system.RING]\n", + "astra.configuration.common_config.system.all_to_all_implementation = [astra.configuration.common_config.system.DIRECT]\n", + "astra.configuration.common_config.system.all_reduce_implementation = [astra.configuration.common_config.system.RING]\n", + "astra.configuration.common_config.system.collective_optimization = astra.configuration.common_config.system.LOCALBWAWARE\n", + "astra.configuration.common_config.system.local_mem_bw = 1600\n", + "astra.configuration.common_config.system.peak_perf = 900\n", + "astra.configuration.common_config.system.roofline_enabled = 0\n", + "print(astra.configuration.common_config.system)\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "id": "8dedb720", + "metadata": {}, + "source": [ + "##### Configure ASTRA-sim remote memory configuration" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "3b59596b", + "metadata": { + "lines_to_next_cell": 2 + }, + "outputs": [], + "source": [ + "astra.configuration.common_config.remote_memory.memory_type = astra.configuration.common_config.remote_memory.NO_MEMORY_EXPANSION\n", + "print(astra.configuration.common_config.remote_memory)" + ] + }, + { + "cell_type": "markdown", + "id": "cc132acb", + "metadata": {}, + "source": [ + "##### Configure the network backend, htsim protocol and topology" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "8f6fbfff", + "metadata": {}, + "outputs": [], + "source": [ + "astra.configuration.network_backend.htsim.topology.network_topology_configuration.network.clear()\n", + "astra.configuration.network_backend.htsim.topology.network_topology_configuration.network.add(\"ring\", 8, 100, 0.005) # add(type_of_topology, number_of_nodes, bandwidth_in_gbps, latency_in_ns)\n", + "astra.configuration.network_backend.htsim.htsim_protocol.choice = astra.configuration.network_backend.htsim.htsim_protocol.TCP\n", + "print(\"Network backend set to\", astra.configuration.network_backend.choice)\n", + "print(\"network backend choice set to:\",astra.configuration.network_backend.htsim.topology.choice)\n", + "print(\"protocol set to\", astra.configuration.network_backend.htsim.htsim_protocol.choice)" + ] + }, + { + "cell_type": "markdown", + "id": "b3c1ac6b", + "metadata": {}, + "source": [ + "##### Configure the fat tree topology." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "0a468797", + "metadata": { + "lines_to_next_cell": 2 + }, + "outputs": [], + "source": [ + "# Configuring topo file\n", + "astra.configuration.network_backend.htsim.topology.network_topology_configuration.htsim_topology.fat_tree.nodes = 8\n", + "astra.configuration.network_backend.htsim.topology.network_topology_configuration.htsim_topology.fat_tree.podsize = 4\n", + "astra.configuration.network_backend.htsim.topology.network_topology_configuration.htsim_topology.fat_tree.tiers = 3\n", + "\n", + "# Configuring values for each tiers\n", + "# Configuring values for tier 0\n", + "astra.configuration.network_backend.htsim.topology.network_topology_configuration.htsim_topology.fat_tree.tier_0.set(\n", + " downlink_speed_gbps=200\n", + ")\n", + "astra.configuration.network_backend.htsim.topology.network_topology_configuration.htsim_topology.fat_tree.tier_0.radix_down = 2\n", + "astra.configuration.network_backend.htsim.topology.network_topology_configuration.htsim_topology.fat_tree.tier_0.radix_up = 2\n", + "astra.configuration.network_backend.htsim.topology.network_topology_configuration.htsim_topology.fat_tree.tier_0.downlink_latency_ns = 1000\n", + "\n", + "# Configuring values for tier 1\n", + "astra.configuration.network_backend.htsim.topology.network_topology_configuration.htsim_topology.fat_tree.tier_1.set(\n", + " downlink_speed_gbps=200\n", + ")\n", + "astra.configuration.network_backend.htsim.topology.network_topology_configuration.htsim_topology.fat_tree.tier_1.radix_down = 2\n", + "astra.configuration.network_backend.htsim.topology.network_topology_configuration.htsim_topology.fat_tree.tier_1.radix_up = 4\n", + "astra.configuration.network_backend.htsim.topology.network_topology_configuration.htsim_topology.fat_tree.tier_1.downlink_latency_ns = 1000\n", + "astra.configuration.network_backend.htsim.topology.network_topology_configuration.htsim_topology.fat_tree.tier_1.bundle = 1\n", + "\n", + "# Configuring values for tier 2\n", + "astra.configuration.network_backend.htsim.topology.network_topology_configuration.htsim_topology.fat_tree.tier_2.set(\n", + " downlink_speed_gbps=100\n", + ")\n", + "astra.configuration.network_backend.htsim.topology.network_topology_configuration.htsim_topology.fat_tree.tier_2.radix_down = 4\n", + "astra.configuration.network_backend.htsim.topology.network_topology_configuration.htsim_topology.fat_tree.tier_2.downlink_latency_ns = 1000\n", + "astra.configuration.network_backend.htsim.topology.network_topology_configuration.htsim_topology.fat_tree.tier_2.bundle = 2\n", + "\n", + "astra.configuration.network_backend.htsim.htsim_protocol.tcp.nodes = \"8\"\n", + "print(astra.configuration.network_backend.htsim.topology.network_topology_configuration)" + ] + }, + { + "cell_type": "markdown", + "id": "00a5b3d4", + "metadata": {}, + "source": [ + "#### Start the simulation by specifying the network backend" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "fca076da", + "metadata": { + "lines_to_next_cell": 2 + }, + "outputs": [], + "source": [ + "astra.run_simulation(NetworkBackend.HTSIM)" + ] + }, + { + "cell_type": "markdown", + "id": "2d1c5c1e", + "metadata": {}, + "source": [ + "##### Download all the configurations as a zip" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "6e88a73e", + "metadata": { + "lines_to_next_cell": 2 + }, + "outputs": [], + "source": [ + "astra.download_configuration()" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "name": "python", + "version": "3.11.0" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/client-scripts/notebooks/htsim_sample.py b/client-scripts/notebooks/htsim_sample.py deleted file mode 100644 index 4d2e364..0000000 --- a/client-scripts/notebooks/htsim_sample.py +++ /dev/null @@ -1,125 +0,0 @@ -# --- -# jupyter: -# jupytext: -# text_representation: -# extension: .py -# format_name: percent -# format_version: '1.3' -# jupytext_version: 1.19.1 -# kernelspec: -# display_name: Python 3 -# language: python -# name: python3 -# --- - -# %% [markdown] -# ##### Import the required modules and configure the system path to locate them - -# %% -import sys -sys.path.append("../utils") -from astra_sim import AstraSim, Collective, NetworkBackend - -# %% [markdown] -# ##### Call the AstraSim client helper with the server endpoint and tag to connect to the ASTRA-sim gRPC server, initialize the SDK, and create a tagged folder for configs, results, and logs. - -# %% -astra = AstraSim(server_endpoint ="172.17.0.2:8989",tag = "htsim_sample") - -# %% [markdown] -# ##### Generate workload execution traces for each rank and set the required data size for AstraSim configuration - -# %% -astra.configuration.common_config.workload = astra.generate_collective(collective=Collective.ALLREDUCE, coll_size= 1 * 1024 * 1024, npu_range=[0, 8]) -print(astra.configuration.common_config.workload) - -# %% [markdown] -# ##### Configure ASTRA-sim system config - -# %% -astra.configuration.common_config.system.scheduling_policy = astra.configuration.common_config.system.LIFO -astra.configuration.common_config.system.endpoint_delay = 10 -astra.configuration.common_config.system.active_chunks_per_dimension = 1 -astra.configuration.common_config.system.preferred_dataset_splits = 4 -astra.configuration.common_config.system.all_gather_implementation = [astra.configuration.common_config.system.RING] -astra.configuration.common_config.system.all_to_all_implementation = [astra.configuration.common_config.system.DIRECT] -astra.configuration.common_config.system.all_reduce_implementation = [astra.configuration.common_config.system.RING] -astra.configuration.common_config.system.collective_optimization = astra.configuration.common_config.system.LOCALBWAWARE -astra.configuration.common_config.system.local_mem_bw = 1600 -astra.configuration.common_config.system.peak_perf = 900 -astra.configuration.common_config.system.roofline_enabled = 0 -print(astra.configuration.common_config.system) - - - -# %% [markdown] -# ##### Configure ASTRA-sim remote memory configuration - -# %% -astra.configuration.common_config.remote_memory.memory_type = astra.configuration.common_config.remote_memory.NO_MEMORY_EXPANSION -print(astra.configuration.common_config.remote_memory) - - -# %% [markdown] -# ##### Configure the network backend, htsim protocol and topology - -# %% -astra.configuration.network_backend.htsim.topology.network_topology_configuration.network.clear() -astra.configuration.network_backend.htsim.topology.network_topology_configuration.network.add("ring", 8, 100, 0.005) # add(type_of_topology, number_of_nodes, bandwidth_in_gbps, latency_in_ns) -astra.configuration.network_backend.htsim.htsim_protocol.choice = astra.configuration.network_backend.htsim.htsim_protocol.TCP -print("Network backend set to", astra.configuration.network_backend.choice) -print("network backend choice set to:",astra.configuration.network_backend.htsim.topology.choice) -print("protocol set to", astra.configuration.network_backend.htsim.htsim_protocol.choice) - -# %% [markdown] -# ##### Configure the fat tree topology. - -# %% -# Configuring topo file -astra.configuration.network_backend.htsim.topology.network_topology_configuration.htsim_topology.fat_tree.nodes = 8 -astra.configuration.network_backend.htsim.topology.network_topology_configuration.htsim_topology.fat_tree.podsize = 4 -astra.configuration.network_backend.htsim.topology.network_topology_configuration.htsim_topology.fat_tree.tiers = 3 - -# Configuring values for each tiers -# Configuring values for tier 0 -astra.configuration.network_backend.htsim.topology.network_topology_configuration.htsim_topology.fat_tree.tier_0.set( - downlink_speed_gbps=200 -) -astra.configuration.network_backend.htsim.topology.network_topology_configuration.htsim_topology.fat_tree.tier_0.radix_down = 2 -astra.configuration.network_backend.htsim.topology.network_topology_configuration.htsim_topology.fat_tree.tier_0.radix_up = 2 -astra.configuration.network_backend.htsim.topology.network_topology_configuration.htsim_topology.fat_tree.tier_0.downlink_latency_ns = 1000 - -# Configuring values for tier 1 -astra.configuration.network_backend.htsim.topology.network_topology_configuration.htsim_topology.fat_tree.tier_1.set( - downlink_speed_gbps=200 -) -astra.configuration.network_backend.htsim.topology.network_topology_configuration.htsim_topology.fat_tree.tier_1.radix_down = 2 -astra.configuration.network_backend.htsim.topology.network_topology_configuration.htsim_topology.fat_tree.tier_1.radix_up = 4 -astra.configuration.network_backend.htsim.topology.network_topology_configuration.htsim_topology.fat_tree.tier_1.downlink_latency_ns = 1000 -astra.configuration.network_backend.htsim.topology.network_topology_configuration.htsim_topology.fat_tree.tier_1.bundle = 1 - -# Configuring values for tier 2 -astra.configuration.network_backend.htsim.topology.network_topology_configuration.htsim_topology.fat_tree.tier_2.set( - downlink_speed_gbps=100 -) -astra.configuration.network_backend.htsim.topology.network_topology_configuration.htsim_topology.fat_tree.tier_2.radix_down = 4 -astra.configuration.network_backend.htsim.topology.network_topology_configuration.htsim_topology.fat_tree.tier_2.downlink_latency_ns = 1000 -astra.configuration.network_backend.htsim.topology.network_topology_configuration.htsim_topology.fat_tree.tier_2.bundle = 2 - -astra.configuration.network_backend.htsim.htsim_protocol.tcp.nodes = "8" -print(astra.configuration.network_backend.htsim.topology.network_topology_configuration) - - -# %% [markdown] -# #### Start the simulation by specifying the network backend - -# %% -astra.run_simulation(NetworkBackend.HTSIM) - - -# %% [markdown] -# ##### Download all the configurations as a zip - -# %% -astra.download_configuration() - diff --git a/client-scripts/notebooks/infragraph/analytical_dgx_device.ipynb b/client-scripts/notebooks/infragraph/analytical_dgx_device.ipynb new file mode 100644 index 0000000..5438f93 --- /dev/null +++ b/client-scripts/notebooks/infragraph/analytical_dgx_device.ipynb @@ -0,0 +1,632 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "650e72e0", + "metadata": {}, + "source": [ + "##### Import the required modules and configure the system path to locate them" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "7c7bf2c9", + "metadata": {}, + "outputs": [], + "source": [ + "import sys\n", + "sys.path.append(\"../../utils\")\n", + "import networkx\n", + "import yaml\n", + "import os\n", + "import astra_sim_sdk.astra_sim_sdk as astra_sim_kit\n", + "from common import FileFolderUtils\n", + "from astra_sim import AstraSim, Collective, NetworkBackend\n", + "from infragraph.infragraph_service import InfraGraphService\n", + "from infragraph.blueprints.devices.nvidia.dgx import NvidiaDGX, DgxProfile\n", + "from infragraph import Infrastructure\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "id": "d5857661", + "metadata": {}, + "source": [ + "##### Call the AstraSim client helper with the server endpoint and tag to connect to the ASTRA-sim gRPC server, initialize the SDK, and create a tagged folder for configs, results, and logs" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "c4ff237b", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Successfully connected to gRPC server at 172.17.0.2:8989\n" + ] + } + ], + "source": [ + "astra = AstraSim(server_endpoint = \"172.17.0.2:8989\", tag = \"analytical_dgx_device\")" + ] + }, + { + "cell_type": "markdown", + "id": "0cc43938", + "metadata": {}, + "source": [ + "##### Get all available DGX variants" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "dccce3c9", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "('dgx1', 'dgx2', 'dgx_a100', 'dgx_h100', 'dgx_gb200')\n" + ] + } + ], + "source": [ + "from typing import get_args\n", + "print(get_args(DgxProfile))" + ] + }, + { + "cell_type": "markdown", + "id": "25987b17", + "metadata": {}, + "source": [ + "##### Create a Nvidia DGX device fabric using infragraph device blueprint" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "8a0b157d", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "devices:\n", + "- components:\n", + " - choice: cpu\n", + " count: 2\n", + " description: AMD EPYC 9654 (Genoa)\n", + " name: cpu\n", + " - choice: xpu\n", + " count: 8\n", + " description: NVIDIA H100 / H200 SXM5\n", + " name: xpu\n", + " - choice: switch\n", + " count: 4\n", + " description: NVIDIA NVSwitch\n", + " name: nvsw\n", + " - choice: switch\n", + " count: 3\n", + " description: Broadcom PCIe Gen5 Switch\n", + " name: pciesw\n", + " - choice: custom\n", + " count: 8\n", + " custom:\n", + " type: pcie_slot\n", + " description: PCIe Gen5 x16 slots (ConnectX / BlueField)\n", + " name: pciesl\n", + " - choice: nic\n", + " count: 8\n", + " description: NVIDIA ConnectX / BlueField\n", + " name: cx7\n", + " description: NVIDIA DGX System\n", + " edges:\n", + " - ep1:\n", + " component: cpu\n", + " ep2:\n", + " component: cpu\n", + " link: cpu_fabric\n", + " scheme: many2many\n", + " - ep1:\n", + " component: cpu[0]\n", + " ep2:\n", + " component: pciesl[0:3]\n", + " link: pcie\n", + " scheme: many2many\n", + " - ep1:\n", + " component: cpu[1]\n", + " ep2:\n", + " component: pciesl[4:7]\n", + " link: pcie\n", + " scheme: many2many\n", + " - ep1:\n", + " component: cpu[0]\n", + " ep2:\n", + " component: pciesw[0]\n", + " link: pcie\n", + " scheme: one2one\n", + " - ep1:\n", + " component: cpu[1]\n", + " ep2:\n", + " component: pciesw[1]\n", + " link: pcie\n", + " scheme: one2one\n", + " - ep1:\n", + " component: pciesl[0]\n", + " ep2:\n", + " component: xpu[0]\n", + " link: pcie\n", + " scheme: one2one\n", + " - ep1:\n", + " component: pciesl[1]\n", + " ep2:\n", + " component: xpu[1]\n", + " link: pcie\n", + " scheme: one2one\n", + " - ep1:\n", + " component: pciesl[2]\n", + " ep2:\n", + " component: xpu[2]\n", + " link: pcie\n", + " scheme: one2one\n", + " - ep1:\n", + " component: pciesl[3]\n", + " ep2:\n", + " component: xpu[3]\n", + " link: pcie\n", + " scheme: one2one\n", + " - ep1:\n", + " component: pciesl[4]\n", + " ep2:\n", + " component: xpu[4]\n", + " link: pcie\n", + " scheme: one2one\n", + " - ep1:\n", + " component: pciesl[5]\n", + " ep2:\n", + " component: xpu[5]\n", + " link: pcie\n", + " scheme: one2one\n", + " - ep1:\n", + " component: pciesl[6]\n", + " ep2:\n", + " component: xpu[6]\n", + " link: pcie\n", + " scheme: one2one\n", + " - ep1:\n", + " component: pciesl[7]\n", + " ep2:\n", + " component: xpu[7]\n", + " link: pcie\n", + " scheme: one2one\n", + " - ep1:\n", + " component: nvsw[0:4]\n", + " ep2:\n", + " component: pciesw[2]\n", + " link: pcie\n", + " scheme: many2many\n", + " - ep1:\n", + " component: cpu[0]\n", + " ep2:\n", + " component: pciesw[2]\n", + " link: pcie\n", + " scheme: one2one\n", + " - ep1:\n", + " component: nvsw[0:4]\n", + " ep2:\n", + " component: xpu[0:8]\n", + " link: xpu_fabric\n", + " scheme: many2many\n", + " - ep1:\n", + " component: pciesl[0]\n", + " ep2:\n", + " component: cx7[0]\n", + " link: pcie\n", + " scheme: one2one\n", + " - ep1:\n", + " component: pciesl[1]\n", + " ep2:\n", + " component: cx7[1]\n", + " link: pcie\n", + " scheme: one2one\n", + " - ep1:\n", + " component: pciesl[2]\n", + " ep2:\n", + " component: cx7[2]\n", + " link: pcie\n", + " scheme: one2one\n", + " - ep1:\n", + " component: pciesl[3]\n", + " ep2:\n", + " component: cx7[3]\n", + " link: pcie\n", + " scheme: one2one\n", + " - ep1:\n", + " component: pciesl[4]\n", + " ep2:\n", + " component: cx7[4]\n", + " link: pcie\n", + " scheme: one2one\n", + " - ep1:\n", + " component: pciesl[5]\n", + " ep2:\n", + " component: cx7[5]\n", + " link: pcie\n", + " scheme: one2one\n", + " - ep1:\n", + " component: pciesl[6]\n", + " ep2:\n", + " component: cx7[6]\n", + " link: pcie\n", + " scheme: one2one\n", + " - ep1:\n", + " component: pciesl[7]\n", + " ep2:\n", + " component: cx7[7]\n", + " link: pcie\n", + " scheme: one2one\n", + " links:\n", + " - description: infinity_fabric\n", + " name: cpu_fabric\n", + " - description: nvlink_4\n", + " name: xpu_fabric\n", + " - description: PCI Express PCIE_GEN5 x16\n", + " name: pcie\n", + " name: dgx_h100\n", + "instances:\n", + "- count: 1\n", + " device: dgx_h100\n", + " name: dgx_h100\n", + "\n" + ] + } + ], + "source": [ + "server = NvidiaDGX()\n", + "infrastructure = Infrastructure()\n", + "infrastructure.devices.append(server)\n", + "infrastructure.instances.add(name=server.name, device=server.name, count=1)\n", + "astra.configuration.infragraph.infrastructure.deserialize(infrastructure.serialize())\n", + "print(astra.configuration.infragraph.infrastructure)" + ] + }, + { + "cell_type": "markdown", + "id": "a27e7ce9", + "metadata": {}, + "source": [ + "##### Initialize the Infragraph service, display the fabric topology, and retrieve/set the total number of NPUs to generate the collective" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "24921fe9", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "╙── dgx_h100.0.cx7.3\n", + " │\n", + " dgx_h100.0.pciesl.3\n", + " │\n", + " dgx_h100.0.xpu.3\n", + " ├── dgx_h100.0.nvsw.0\n", + " │ ├── dgx_h100.0.pciesw.2\n", + " │ │ ├── dgx_h100.0.cpu.0\n", + " │ │ │ ├── dgx_h100.0.cpu.1\n", + " │ │ │ │ ├── dgx_h100.0.pciesl.4\n", + " │ │ │ │ │ ├── dgx_h100.0.xpu.4 ─ dgx_h100.0.nvsw.0\n", + " │ │ │ │ │ │ ├── dgx_h100.0.nvsw.1 ─ dgx_h100.0.pciesw.2, dgx_h100.0.xpu.3\n", + " │ │ │ │ │ │ │ ├── dgx_h100.0.xpu.0 ─ dgx_h100.0.nvsw.0\n", + " │ │ │ │ │ │ │ │ ├── dgx_h100.0.pciesl.0 ─ dgx_h100.0.cpu.0\n", + " │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ dgx_h100.0.cx7.0\n", + " │ │ │ │ │ │ │ │ ├── dgx_h100.0.nvsw.2 ─ dgx_h100.0.pciesw.2, dgx_h100.0.xpu.3, dgx_h100.0.xpu.4\n", + " │ │ │ │ │ │ │ │ │ ├── dgx_h100.0.xpu.1 ─ dgx_h100.0.nvsw.0, dgx_h100.0.nvsw.1\n", + " │ │ │ │ │ │ │ │ │ │ ├── dgx_h100.0.pciesl.1 ─ dgx_h100.0.cpu.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ dgx_h100.0.cx7.1\n", + " │ │ │ │ │ │ │ │ │ │ └── dgx_h100.0.nvsw.3 ─ dgx_h100.0.pciesw.2, dgx_h100.0.xpu.0, dgx_h100.0.xpu.3, dgx_h100.0.xpu.4\n", + " │ │ │ │ │ │ │ │ │ │ ├── dgx_h100.0.xpu.2 ─ dgx_h100.0.nvsw.0, dgx_h100.0.nvsw.1, dgx_h100.0.nvsw.2\n", + " │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ dgx_h100.0.pciesl.2 ─ dgx_h100.0.cpu.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ dgx_h100.0.cx7.2\n", + " │ │ │ │ │ │ │ │ │ │ ├── dgx_h100.0.xpu.5 ─ dgx_h100.0.nvsw.0, dgx_h100.0.nvsw.1, dgx_h100.0.nvsw.2\n", + " │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ dgx_h100.0.pciesl.5 ─ dgx_h100.0.cpu.1\n", + " │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ dgx_h100.0.cx7.5\n", + " │ │ │ │ │ │ │ │ │ │ ├── dgx_h100.0.xpu.6 ─ dgx_h100.0.nvsw.0, dgx_h100.0.nvsw.1, dgx_h100.0.nvsw.2\n", + " │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ dgx_h100.0.pciesl.6 ─ dgx_h100.0.cpu.1\n", + " │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ dgx_h100.0.cx7.6\n", + " │ │ │ │ │ │ │ │ │ │ └── dgx_h100.0.xpu.7 ─ dgx_h100.0.nvsw.0, dgx_h100.0.nvsw.1, dgx_h100.0.nvsw.2\n", + " │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ dgx_h100.0.pciesl.7\n", + " │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ dgx_h100.0.cx7.7\n", + " │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ └── dgx_h100.0.cx7.4\n", + " │ │ │ │ ├── dgx_h100.0.pciesw.1\n", + " │ │ │ │ └── ...\n", + " │ │ │ ├── dgx_h100.0.pciesw.0\n", + " │ │ │ └── ...\n", + " │ │ └── ...\n", + " │ └── ...\n", + " └── ...\n", + "None\n" + ] + } + ], + "source": [ + "service = InfraGraphService()\n", + "service.set_graph(infrastructure)\n", + "total_npus = service.get_component(device=server, type=\"xpu\").count\n", + "g = service.get_networkx_graph()\n", + "print(networkx.write_network_text(g, vertical_chains=True))" + ] + }, + { + "cell_type": "markdown", + "id": "b0f2bfc4", + "metadata": {}, + "source": [ + "##### Generate workload execution traces for each rank and set the required data size for AstraSim configuration" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "793d7563", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "All contents of the folder /workspaces/astra_sim_service/client-scripts/utils/../trial/analytical_dgx_device/configuration/workload have been deleted.\n", + "Generated 8 et in /workspaces/astra_sim_service/client-scripts/utils/../trial/analytical_dgx_device/configuration/workload\n" + ] + } + ], + "source": [ + "astra.configuration.common_config.workload = astra.generate_collective(collective=Collective.ALLREDUCE, coll_size= 1 *1024*1024, npu_range=[0, total_npus])" + ] + }, + { + "cell_type": "markdown", + "id": "99de70db", + "metadata": {}, + "source": [ + "##### Configure ASTRA-sim system config" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "b56c38cf", + "metadata": {}, + "outputs": [], + "source": [ + "astra.configuration.common_config.system.scheduling_policy = astra.configuration.common_config.system.LIFO\n", + "astra.configuration.common_config.system.endpoint_delay = 10\n", + "astra.configuration.common_config.system.active_chunks_per_dimension = 1\n", + "astra.configuration.common_config.system.all_gather_implementation = [astra.configuration.common_config.system.RING]\n", + "astra.configuration.common_config.system.all_to_all_implementation = [astra.configuration.common_config.system.DIRECT]\n", + "astra.configuration.common_config.system.all_reduce_implementation = [astra.configuration.common_config.system.ONERING]\n", + "astra.configuration.common_config.system.collective_optimization = astra.configuration.common_config.system.LOCALBWAWARE\n", + "astra.configuration.common_config.system.local_mem_bw = 1600" + ] + }, + { + "cell_type": "markdown", + "id": "d339364c", + "metadata": {}, + "source": [ + "##### Configure ASTRA-sim remote memory configuration" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "id": "36490835", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "memory_type: NO_MEMORY_EXPANSION\n", + "remote_mem_bw: 0\n", + "remote_mem_latency: 0\n", + "\n" + ] + } + ], + "source": [ + "astra.configuration.common_config.remote_memory.memory_type = astra.configuration.common_config.remote_memory.NO_MEMORY_EXPANSION\n", + "print(astra.configuration.common_config.remote_memory)" + ] + }, + { + "cell_type": "markdown", + "id": "8836e23b", + "metadata": {}, + "source": [ + "##### Set ASTRA-sim network backend to ANALYTICAL_CONGESTION_AWARE" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "id": "1efef83a", + "metadata": {}, + "outputs": [], + "source": [ + "astra.configuration.network_backend.analytical_congestion_aware.topology.choice = astra.configuration.network_backend.analytical_congestion_aware.topology.INFRAGRAPH" + ] + }, + { + "cell_type": "markdown", + "id": "bf4c4369", + "metadata": {}, + "source": [ + "##### Adding ASTRA-sim - Infragraph specific annotation" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "id": "70bf271e", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 23, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "host_device_spec = astra_sim_kit.AnnotationDeviceSpecifications()\n", + "host_device_spec.device_bandwidth_gbps = 100\n", + "host_device_spec.device_latency_ms = 0.05\n", + "host_device_spec.device_name = server.name\n", + "host_device_spec.device_type = \"host\"\n", + "astra.configuration.infragraph.annotations.device_specifications.append(host_device_spec)" + ] + }, + { + "cell_type": "markdown", + "id": "e146c4a2", + "metadata": {}, + "source": [ + "##### Configure ASTRA-sim cmd parameters" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "id": "3c096641", + "metadata": {}, + "outputs": [], + "source": [ + "astra.configuration.common_config.cmd_parameters.comm_scale = 1\n", + "astra.configuration.common_config.cmd_parameters.injection_scale = 1\n", + "astra.configuration.common_config.cmd_parameters.rendezvous_protocol = False" + ] + }, + { + "cell_type": "markdown", + "id": "080a8923", + "metadata": {}, + "source": [ + "#### Start the simulation by specifying the network backend" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "id": "fbcb30d1", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Generating Configuration ZIP now\n", + "output_path: /workspaces/astra_sim_service/client-scripts/utils/../trial/analytical_dgx_device/config.zip\n", + "folder_path: /workspaces/astra_sim_service/client-scripts/utils/../trial/analytical_dgx_device/configuration/workload/..\n", + "pack_zip complete\n", + "message: 'Configuration applied successfully. warnings: Unable to generate communicator\n", + " group message from schema - communicator group configuration empty'\n", + "\n", + "message: Simulation started successfully\n", + "\n", + "astra-sim server Status: running\n", + "Downloading Output files....\n", + "Transferring Files from ASTRA-sim server\n", + "Downloading file: simulation.log\n", + "All files downloaded Successfully\n", + "Simulation completed\n" + ] + } + ], + "source": [ + "astra.run_simulation(NetworkBackend.ANALYTICAL_CONGESTION_AWARE)" + ] + }, + { + "cell_type": "markdown", + "id": "866b346f", + "metadata": {}, + "source": [ + "##### Save infragraph as a yaml" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "id": "71901931", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "saved yaml to: /workspaces/astra_sim_service/client-scripts/utils/../trial/analytical_dgx_device/output/../analytical_dgx_device.yaml\n" + ] + } + ], + "source": [ + "with open(os.path.join(FileFolderUtils.get_instance().OUTPUT_DIR,\"../infrastructure\",\"analytical_dgx_device.yaml\"),\"w\") as f:\n", + " data = infrastructure.serialize(\"dict\")\n", + " yaml.dump(data, f, default_flow_style=False, indent=4)\n", + "\n", + "print(\"saved yaml to:\", os.path.join(FileFolderUtils.get_instance().OUTPUT_DIR,\"..\",\"analytical_dgx_device.yaml\"))" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.0" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/client-scripts/notebooks/infragraph/analytical_dgx_device.py b/client-scripts/notebooks/infragraph/analytical_dgx_device.py deleted file mode 100644 index d0a816c..0000000 --- a/client-scripts/notebooks/infragraph/analytical_dgx_device.py +++ /dev/null @@ -1,132 +0,0 @@ -# --- -# jupyter: -# jupytext: -# text_representation: -# extension: .py -# format_name: percent -# format_version: '1.3' -# jupytext_version: 1.19.1 -# kernelspec: -# display_name: Python 3 -# language: python -# name: python3 -# --- - -# %% [markdown] -# ##### Import the required modules and configure the system path to locate them - -# %% -import sys -sys.path.append("../../utils") -import networkx -import astra_sim_sdk.astra_sim_sdk as astra_sim_kit -from astra_sim import AstraSim, Collective, NetworkBackend -from infragraph.infragraph_service import InfraGraphService -from infragraph.blueprints.devices.nvidia.dgx import NvidiaDGX, DgxProfile -from infragraph import Infrastructure - - - -# %% [markdown] -# ##### Call the AstraSim client helper with the server endpoint and tag to connect to the ASTRA-sim gRPC server, initialize the SDK, and create a tagged folder for configs, results, and logs - -# %% -astra = AstraSim(server_endpoint = "172.17.0.2:8989", tag = "analytical_dgx_device") - -# %% [markdown] -# ##### Get all available DGX variants - -# %% -from typing import get_args -print(get_args(DgxProfile)) - -# %% [markdown] -# ##### Create a Nvidia DGX device fabric using infragraph device blueprint - -# %% -server = NvidiaDGX() -infrastructure = Infrastructure() -infrastructure.devices.append(server) -infrastructure.instances.add(name=server.name, device=server.name, count=1) -astra.configuration.infragraph.infrastructure.deserialize(infrastructure.serialize()) -print(astra.configuration.infragraph.infrastructure) - -# %% [markdown] -# ##### Initialize the Infragraph service, display the fabric topology, and retrieve/set the total number of NPUs to generate the collective - -# %% -service = InfraGraphService() -service.set_graph(infrastructure) -total_npus = service.get_component(device=server, type="xpu").count -g = service.get_networkx_graph() -print(networkx.write_network_text(g, vertical_chains=True)) - -# %% [markdown] -# ##### Generate workload execution traces for each rank and set the required data size for AstraSim configuration - -# %% -astra.configuration.common_config.workload = astra.generate_collective(collective=Collective.ALLREDUCE, coll_size= 1 *1024*1024, npu_range=[0, total_npus]) - -# %% [markdown] -# ##### Configure ASTRA-sim system config - -# %% -astra.configuration.common_config.system.scheduling_policy = astra.configuration.common_config.system.LIFO -astra.configuration.common_config.system.endpoint_delay = 10 -astra.configuration.common_config.system.active_chunks_per_dimension = 1 -astra.configuration.common_config.system.all_gather_implementation = [astra.configuration.common_config.system.RING] -astra.configuration.common_config.system.all_to_all_implementation = [astra.configuration.common_config.system.DIRECT] -astra.configuration.common_config.system.all_reduce_implementation = [astra.configuration.common_config.system.ONERING] -astra.configuration.common_config.system.collective_optimization = astra.configuration.common_config.system.LOCALBWAWARE -astra.configuration.common_config.system.local_mem_bw = 1600 - -# %% [markdown] -# ##### Configure ASTRA-sim remote memory configuration - -# %% -astra.configuration.common_config.remote_memory.memory_type = astra.configuration.common_config.remote_memory.NO_MEMORY_EXPANSION -print(astra.configuration.common_config.remote_memory) - -# %% [markdown] -# ##### Set ASTRA-sim network backend to ANALYTICAL_CONGESTION_AWARE - -# %% -astra.configuration.network_backend.analytical_congestion_aware.topology.choice = astra.configuration.network_backend.analytical_congestion_aware.topology.INFRAGRAPH - -# %% [markdown] -# ##### Adding ASTRA-sim - Infragraph specific annotation - -# %% -host_device_spec = astra_sim_kit.AnnotationDeviceSpecifications() -host_device_spec.device_bandwidth_gbps = 100 -host_device_spec.device_latency_ms = 0.05 -host_device_spec.device_name = server.name -host_device_spec.device_type = "host" -astra.configuration.infragraph.annotations.device_specifications.append(host_device_spec) - -# %% [markdown] -# ##### Configure ASTRA-sim cmd parameters - -# %% -astra.configuration.common_config.cmd_parameters.comm_scale = 1 -astra.configuration.common_config.cmd_parameters.injection_scale = 1 -astra.configuration.common_config.cmd_parameters.rendezvous_protocol = False - -# %% [markdown] -# #### Start the simulation by specifying the network backend - -# %% -astra.run_simulation(NetworkBackend.ANALYTICAL_CONGESTION_AWARE) - -# %% [markdown] -# ##### Save infragraph as a yaml - -# %% -import yaml -import os -from common import FileFolderUtils -with open(os.path.join(FileFolderUtils.get_instance().OUTPUT_DIR,"../infrastructure","analytical_dgx_device.yaml"),"w") as f: - data = infrastructure.serialize("dict") - yaml.dump(data, f, default_flow_style=False, indent=4) - -print("saved yaml to:", os.path.join(FileFolderUtils.get_instance().OUTPUT_DIR,"..","analytical_dgx_device.yaml")) diff --git a/client-scripts/notebooks/infragraph/analytical_ironwood_rack.ipynb b/client-scripts/notebooks/infragraph/analytical_ironwood_rack.ipynb new file mode 100644 index 0000000..1d7e639 --- /dev/null +++ b/client-scripts/notebooks/infragraph/analytical_ironwood_rack.ipynb @@ -0,0 +1,300 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "bea06936", + "metadata": {}, + "source": [ + "##### Import the required modules and configure the system path to locate them" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "a6d3813d", + "metadata": {}, + "outputs": [], + "source": [ + "import sys\n", + "sys.path.append(\"../../utils\")\n", + "import networkx\n", + "import yaml\n", + "import os\n", + "import astra_sim_sdk.astra_sim_sdk as astra_sim_kit\n", + "from common import FileFolderUtils\n", + "from astra_sim import AstraSim, Collective, NetworkBackend\n", + "from infragraph.infragraph_service import InfraGraphService\n", + "from infragraph.blueprints.devices.ironwood_rack import IronwoodRack\n", + "from infragraph import Infrastructure" + ] + }, + { + "cell_type": "markdown", + "id": "cc09d155", + "metadata": {}, + "source": [ + "##### Call the AstraSim client helper with the server endpoint and tag to connect to the ASTRA-sim gRPC server, initialize the SDK, and create a tagged folder for configs, results, and logs" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "75fc79b2", + "metadata": {}, + "outputs": [], + "source": [ + "astra = AstraSim(server_endpoint = \"172.17.0.2:8989\", tag = \"analytical_ironwood_rack\")" + ] + }, + { + "cell_type": "markdown", + "id": "e1d35925", + "metadata": {}, + "source": [ + "##### Create a ironwood rack device fabric using infragraph device blueprint" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e149fef8", + "metadata": {}, + "outputs": [], + "source": [ + "server = IronwoodRack()\n", + "infrastructure = Infrastructure()\n", + "infrastructure.devices.append(server)\n", + "\n", + "infrastructure.instances.add(name=server.name, device=server.name, count=1)\n", + "astra.configuration.infragraph.infrastructure.deserialize(infrastructure.serialize())\n", + "print(astra.configuration.infragraph.infrastructure)" + ] + }, + { + "cell_type": "markdown", + "id": "cba694b6", + "metadata": {}, + "source": [ + "##### Initialize the Infragraph service, display the fabric topology, and retrieve/set the total number of NPUs to generate the collective" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "4fb89a22", + "metadata": {}, + "outputs": [], + "source": [ + "service = InfraGraphService()\n", + "service.set_graph(infrastructure)\n", + "total_npus = service.get_component(device=server, type=\"xpu\").count\n", + "g = service.get_networkx_graph()\n", + "print(networkx.write_network_text(g, vertical_chains=True))" + ] + }, + { + "cell_type": "markdown", + "id": "77f53072", + "metadata": {}, + "source": [ + "##### Generate workload execution traces for each rank and set the required data size for AstraSim configuration" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "eeefed28", + "metadata": {}, + "outputs": [], + "source": [ + "astra.configuration.common_config.workload = astra.generate_collective(collective=Collective.ALLREDUCE, coll_size= 1 *1024*1024, npu_range=[0, total_npus])" + ] + }, + { + "cell_type": "markdown", + "id": "7d9049f7", + "metadata": {}, + "source": [ + "##### Configure ASTRA-sim system config" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "0c2f1788", + "metadata": {}, + "outputs": [], + "source": [ + "astra.configuration.common_config.system.scheduling_policy = astra.configuration.common_config.system.LIFO\n", + "astra.configuration.common_config.system.endpoint_delay = 10\n", + "astra.configuration.common_config.system.active_chunks_per_dimension = 1\n", + "astra.configuration.common_config.system.all_gather_implementation = [astra.configuration.common_config.system.RING, astra.configuration.common_config.system.RING, astra.configuration.common_config.system.RING]\n", + "astra.configuration.common_config.system.all_to_all_implementation = [astra.configuration.common_config.system.RING, astra.configuration.common_config.system.RING, astra.configuration.common_config.system.RING]\n", + "astra.configuration.common_config.system.all_reduce_implementation = [astra.configuration.common_config.system.RING, astra.configuration.common_config.system.RING, astra.configuration.common_config.system.RING]\n", + "astra.configuration.common_config.system.collective_optimization = astra.configuration.common_config.system.LOCALBWAWARE\n", + "astra.configuration.common_config.system.local_mem_bw = 1600" + ] + }, + { + "cell_type": "markdown", + "id": "49377270", + "metadata": {}, + "source": [ + "##### Configure ASTRA-sim remote memory configuration" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "17aeee6e", + "metadata": {}, + "outputs": [], + "source": [ + "astra.configuration.common_config.remote_memory.memory_type = astra.configuration.common_config.remote_memory.NO_MEMORY_EXPANSION\n", + "print(astra.configuration.common_config.remote_memory)" + ] + }, + { + "cell_type": "markdown", + "id": "90c09fed", + "metadata": {}, + "source": [ + "##### Configure network backend to ANALYTICAL_CONGESTION_AWARE" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "b66e035b", + "metadata": {}, + "outputs": [], + "source": [ + "astra.configuration.network_backend.analytical_congestion_unaware.topology.choice = astra.configuration.network_backend.analytical_congestion_unaware.topology.INFRAGRAPH" + ] + }, + { + "cell_type": "markdown", + "id": "178ac732", + "metadata": {}, + "source": [ + "##### Adding ASTRA-sim - Infragraph specific annotation" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "2409f0aa", + "metadata": { + "lines_to_next_cell": 2 + }, + "outputs": [], + "source": [ + "host_device_spec = astra_sim_kit.AnnotationDeviceSpecifications()\n", + "host_device_spec.device_bandwidth_gbps = 100\n", + "host_device_spec.device_latency_ms = 0.05\n", + "host_device_spec.device_name = server.name\n", + "host_device_spec.device_type = \"host\"\n", + "astra.configuration.infragraph.annotations.device_specifications.append(host_device_spec)" + ] + }, + { + "cell_type": "markdown", + "id": "0f9a2c48", + "metadata": {}, + "source": [ + "##### Configure ASTRA-sim cmd parameters" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "1628a250", + "metadata": {}, + "outputs": [], + "source": [ + "astra.configuration.common_config.cmd_parameters.comm_scale = 1\n", + "astra.configuration.common_config.cmd_parameters.injection_scale = 1\n", + "astra.configuration.common_config.cmd_parameters.rendezvous_protocol = False" + ] + }, + { + "cell_type": "markdown", + "id": "d99092a6", + "metadata": {}, + "source": [ + "#### Start the simulation by specifying the network backend" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "46c2a21b", + "metadata": {}, + "outputs": [], + "source": [ + "astra.run_simulation(NetworkBackend.ANALYTICAL_CONGESTION_UNAWARE)" + ] + }, + { + "cell_type": "markdown", + "id": "45269b28", + "metadata": {}, + "source": [ + "##### Download all the configurations as a zip" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "2adbbcda", + "metadata": {}, + "outputs": [], + "source": [ + "astra.download_configuration()" + ] + }, + { + "cell_type": "markdown", + "id": "09548149", + "metadata": {}, + "source": [ + "##### Save infragraph as a yaml" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ed9f3910", + "metadata": {}, + "outputs": [], + "source": [ + "with open(os.path.join(FileFolderUtils.get_instance().OUTPUT_DIR,\"../infrastructure\",\"analytical_dgx_device.yaml\"),\"w\") as f:\n", + " data = infrastructure.serialize(\"dict\")\n", + " yaml.dump(data, f, default_flow_style=False, indent=4)\n", + "\n", + "print(\"saved yaml to:\", os.path.join(FileFolderUtils.get_instance().OUTPUT_DIR,\"..\",\"analytical_dgx_device.yaml\"))" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.0rc1" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/client-scripts/notebooks/infragraph/analytical_ironwood_rack.py b/client-scripts/notebooks/infragraph/analytical_ironwood_rack.py deleted file mode 100644 index ce51e7a..0000000 --- a/client-scripts/notebooks/infragraph/analytical_ironwood_rack.py +++ /dev/null @@ -1,131 +0,0 @@ -# --- -# jupyter: -# jupytext: -# text_representation: -# extension: .py -# format_name: percent -# format_version: '1.3' -# jupytext_version: 1.19.1 -# kernelspec: -# display_name: Python 3 -# language: python -# name: python3 -# --- - -# %% [markdown] -# ##### Import the required modules and configure the system path to locate them - -# %% -import sys -sys.path.append("../../utils") -import networkx -import astra_sim_sdk.astra_sim_sdk as astra_sim_kit -from astra_sim import AstraSim, Collective, NetworkBackend -from infragraph.infragraph_service import InfraGraphService -from infragraph.blueprints.devices.ironwood_rack import IronwoodRack -from infragraph import Infrastructure - -# %% [markdown] -# ##### Call the AstraSim client helper with the server endpoint and tag to connect to the ASTRA-sim gRPC server, initialize the SDK, and create a tagged folder for configs, results, and logs - -# %% -astra = AstraSim(server_endpoint = "172.17.0.2:8989", tag = "analytical_ironwood_rack") - -# %% [markdown] -# ##### Create a ironwood rack device fabric using infragraph device blueprint - -# %% -server = IronwoodRack() -infrastructure = Infrastructure() -infrastructure.devices.append(server) - -infrastructure.instances.add(name=server.name, device=server.name, count=1) -astra.configuration.infragraph.infrastructure.deserialize(infrastructure.serialize()) -print(astra.configuration.infragraph.infrastructure) - -# %% [markdown] -# ##### Initialize the Infragraph service, display the fabric topology, and retrieve/set the total number of NPUs to generate the collective - -# %% -service = InfraGraphService() -service.set_graph(infrastructure) -total_npus = service.get_component(device=server, type="xpu").count -g = service.get_networkx_graph() -print(networkx.write_network_text(g, vertical_chains=True)) - -# %% [markdown] -# ##### Generate workload execution traces for each rank and set the required data size for AstraSim configuration - -# %% -astra.configuration.common_config.workload = astra.generate_collective(collective=Collective.ALLREDUCE, coll_size= 1 *1024*1024, npu_range=[0, total_npus]) - -# %% [markdown] -# ##### Configure ASTRA-sim system config - -# %% -astra.configuration.common_config.system.scheduling_policy = astra.configuration.common_config.system.LIFO -astra.configuration.common_config.system.endpoint_delay = 10 -astra.configuration.common_config.system.active_chunks_per_dimension = 1 -astra.configuration.common_config.system.all_gather_implementation = [astra.configuration.common_config.system.RING, astra.configuration.common_config.system.RING, astra.configuration.common_config.system.RING] -astra.configuration.common_config.system.all_to_all_implementation = [astra.configuration.common_config.system.RING, astra.configuration.common_config.system.RING, astra.configuration.common_config.system.RING] -astra.configuration.common_config.system.all_reduce_implementation = [astra.configuration.common_config.system.RING, astra.configuration.common_config.system.RING, astra.configuration.common_config.system.RING] -astra.configuration.common_config.system.collective_optimization = astra.configuration.common_config.system.LOCALBWAWARE -astra.configuration.common_config.system.local_mem_bw = 1600 - -# %% [markdown] -# ##### Configure ASTRA-sim remote memory configuration - -# %% -astra.configuration.common_config.remote_memory.memory_type = astra.configuration.common_config.remote_memory.NO_MEMORY_EXPANSION -print(astra.configuration.common_config.remote_memory) - -# %% [markdown] -# ##### Configure network backend to ANALYTICAL_CONGESTION_AWARE - -# %% -astra.configuration.network_backend.analytical_congestion_unaware.topology.choice = astra.configuration.network_backend.analytical_congestion_unaware.topology.INFRAGRAPH - -# %% [markdown] -# ##### Adding ASTRA-sim - Infragraph specific annotation - -# %% -host_device_spec = astra_sim_kit.AnnotationDeviceSpecifications() -host_device_spec.device_bandwidth_gbps = 100 -host_device_spec.device_latency_ms = 0.05 -host_device_spec.device_name = server.name -host_device_spec.device_type = "host" -astra.configuration.infragraph.annotations.device_specifications.append(host_device_spec) - - -# %% [markdown] -# ##### Configure ASTRA-sim cmd parameters - -# %% -astra.configuration.common_config.cmd_parameters.comm_scale = 1 -astra.configuration.common_config.cmd_parameters.injection_scale = 1 -astra.configuration.common_config.cmd_parameters.rendezvous_protocol = False - -# %% [markdown] -# #### Start the simulation by specifying the network backend - -# %% -astra.run_simulation(NetworkBackend.ANALYTICAL_CONGESTION_UNAWARE) - -# %% [markdown] -# ##### Download all the configurations as a zip - -# %% -astra.download_configuration() - -# %% [markdown] -# ##### Save infragraph as a yaml - -# %% -import yaml -import os -from common import FileFolderUtils -with open(os.path.join(FileFolderUtils.get_instance().OUTPUT_DIR,"../infrastructure","analytical_dgx_device.yaml"),"w") as f: - data = infrastructure.serialize("dict") - yaml.dump(data, f, default_flow_style=False, indent=4) - -print("saved yaml to:", os.path.join(FileFolderUtils.get_instance().OUTPUT_DIR,"..","analytical_dgx_device.yaml")) diff --git a/client-scripts/notebooks/infragraph/htsim_clos_fabric_2tier.ipynb b/client-scripts/notebooks/infragraph/htsim_clos_fabric_2tier.ipynb new file mode 100644 index 0000000..1d2f6a0 --- /dev/null +++ b/client-scripts/notebooks/infragraph/htsim_clos_fabric_2tier.ipynb @@ -0,0 +1,328 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "8de400f9", + "metadata": {}, + "source": [ + "##### Import the required modules and configure the system path to locate them" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "cccb5e49", + "metadata": {}, + "outputs": [], + "source": [ + "import sys\n", + "sys.path.append(\"../../utils\")\n", + "import networkx\n", + "import yaml\n", + "import os\n", + "import astra_sim_sdk.astra_sim_sdk as astra_sim_kit\n", + "from common import FileFolderUtils\n", + "from astra_sim import AstraSim, Collective, NetworkBackend\n", + "from infragraph.infragraph_service import InfraGraphService\n", + "from infragraph.blueprints.fabrics.clos_fat_tree_fabric import ClosFatTreeFabric\n", + "from infragraph.blueprints.devices.generic.server import Server\n", + "from infragraph.blueprints.devices.generic.generic_switch import Switch" + ] + }, + { + "cell_type": "markdown", + "id": "64688a84", + "metadata": {}, + "source": [ + "##### Call the AstraSim client helper with the server endpoint and tag to connect to the ASTRA-sim gRPC server, initialize the SDK, and create a tagged folder for configs, results, and logs." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "5d3a3b48", + "metadata": {}, + "outputs": [], + "source": [ + "astra = AstraSim(server_endpoint = \"172.17.0.2:8989\", tag = \"htsim_clos_fabric_2tier\")" + ] + }, + { + "cell_type": "markdown", + "id": "084c8cc6", + "metadata": {}, + "source": [ + "##### Create a two-tier clos fabric using infragraph fabric blueprint" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "a5b0ec8f", + "metadata": {}, + "outputs": [], + "source": [ + "server = Server()\n", + "switch = Switch(port_count=8)\n", + "infrastructure = ClosFatTreeFabric(switch, server, 2,[])\n", + "astra.configuration.infragraph.infrastructure.deserialize(infrastructure.serialize())\n", + "print(astra.configuration.infragraph.infrastructure)" + ] + }, + { + "cell_type": "markdown", + "id": "10a5c5f3", + "metadata": {}, + "source": [ + "##### Initialize the Infragraph service, display the fabric topology, and retrieve/set the total number of NPUs to generate the collective" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "648027ad", + "metadata": {}, + "outputs": [], + "source": [ + "service = InfraGraphService()\n", + "service.set_graph(infrastructure)\n", + "g = service.get_networkx_graph()\n", + "print(networkx.write_network_text(g, vertical_chains=True))\n", + "total_npus = 16" + ] + }, + { + "cell_type": "markdown", + "id": "dcaf99c4", + "metadata": {}, + "source": [ + "##### Generate workload execution traces for each rank and set the required data size for AstraSim configuration" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "a9c74682", + "metadata": {}, + "outputs": [], + "source": [ + "astra.configuration.common_config.workload = astra.generate_collective(collective=Collective.ALLREDUCE, coll_size= 1 *1024*1024, npu_range=[0, total_npus])" + ] + }, + { + "cell_type": "markdown", + "id": "4e052d35", + "metadata": {}, + "source": [ + "##### Configure ASTRA-sim system config" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "cb7010b3", + "metadata": {}, + "outputs": [], + "source": [ + "astra.configuration.common_config.system.scheduling_policy = astra.configuration.common_config.system.LIFO\n", + "astra.configuration.common_config.system.endpoint_delay = 10\n", + "astra.configuration.common_config.system.active_chunks_per_dimension = 1\n", + "astra.configuration.common_config.system.preferred_dataset_splits = 4\n", + "astra.configuration.common_config.system.all_gather_implementation = [astra.configuration.common_config.system.RING]\n", + "astra.configuration.common_config.system.all_to_all_implementation = [astra.configuration.common_config.system.DIRECT]\n", + "astra.configuration.common_config.system.all_reduce_implementation = [astra.configuration.common_config.system.RING]\n", + "astra.configuration.common_config.system.collective_optimization = astra.configuration.common_config.system.LOCALBWAWARE\n", + "astra.configuration.common_config.system.local_mem_bw = 1600\n", + "astra.configuration.common_config.system.peak_perf = 900\n", + "astra.configuration.common_config.system.roofline_enabled = 0\n", + "print(astra.configuration.common_config.system)\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "id": "30ec2cad", + "metadata": {}, + "source": [ + "##### Configure the remote memory configuration" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "4b4100d4", + "metadata": {}, + "outputs": [], + "source": [ + "astra.configuration.common_config.remote_memory.memory_type = astra.configuration.common_config.remote_memory.NO_MEMORY_EXPANSION\n", + "print(astra.configuration.common_config.remote_memory)" + ] + }, + { + "cell_type": "markdown", + "id": "96c7a0bc", + "metadata": {}, + "source": [ + "##### Configure the selected network backend and the topology (infragraph or network_topology_configuration)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "2d14185a", + "metadata": { + "lines_to_next_cell": 2 + }, + "outputs": [], + "source": [ + "astra.configuration.network_backend.choice = astra.configuration.network_backend.HTSIM\n", + "astra.configuration.network_backend.htsim.topology.choice = astra.configuration.network_backend.htsim.topology.INFRAGRAPH" + ] + }, + { + "cell_type": "markdown", + "id": "5b7f489f", + "metadata": {}, + "source": [ + "##### Select htsim protocol" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "5298b22f", + "metadata": {}, + "outputs": [], + "source": [ + "astra.configuration.network_backend.htsim.htsim_protocol.choice = astra.configuration.network_backend.htsim.htsim_protocol.TCP\n", + "print(\"Network backend set to\", astra.configuration.network_backend.choice)\n", + "print(\"network topology choice set to:\",astra.configuration.network_backend.htsim.topology.choice)\n", + "print(\"protocol set to\", astra.configuration.network_backend.htsim.htsim_protocol)\n", + "astra.configuration.network_backend.htsim.htsim_protocol.tcp.nodes = str(total_npus)" + ] + }, + { + "cell_type": "markdown", + "id": "8cdb444c", + "metadata": {}, + "source": [ + "##### Adding ASTRA-sim - Infragraph specific annotation" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "26e98e61", + "metadata": {}, + "outputs": [], + "source": [ + "host_device_spec = astra_sim_kit.AnnotationDeviceSpecifications()\n", + "host_device_spec.device_bandwidth_gbps = 1000\n", + "host_device_spec.device_latency_ms = 0.005\n", + "host_device_spec.device_name = \"server\"\n", + "host_device_spec.device_type = \"host\"\n", + "astra.configuration.infragraph.annotations.device_specifications.append(host_device_spec)\n", + "\n", + "switch_device_spec = astra_sim_kit.AnnotationDeviceSpecifications()\n", + "switch_device_spec.device_bandwidth_gbps = 1000\n", + "switch_device_spec.device_latency_ms = 0.005\n", + "switch_device_spec.device_name = \"switch\"\n", + "switch_device_spec.device_type = \"switch\"\n", + "astra.configuration.infragraph.annotations.device_specifications.append(\n", + " switch_device_spec\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "dfe625b5", + "metadata": {}, + "source": [ + "##### Configure ASTRA-sim cmd parameters" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "1e99a61a", + "metadata": {}, + "outputs": [], + "source": [ + "astra.configuration.common_config.cmd_parameters.comm_scale = 1\n", + "astra.configuration.common_config.cmd_parameters.injection_scale = 1\n", + "astra.configuration.common_config.cmd_parameters.rendezvous_protocol = False" + ] + }, + { + "cell_type": "markdown", + "id": "bf92ca9b", + "metadata": {}, + "source": [ + "#### Start the simulation by specifying the network backend" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "4e3b4263", + "metadata": {}, + "outputs": [], + "source": [ + "astra.run_simulation(NetworkBackend.HTSIM)" + ] + }, + { + "cell_type": "markdown", + "id": "fcb4b56e", + "metadata": {}, + "source": [ + "##### Download all the configurations as a zip" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "1f9f13ee", + "metadata": {}, + "outputs": [], + "source": [ + "astra.download_configuration()" + ] + }, + { + "cell_type": "markdown", + "id": "0917b124", + "metadata": {}, + "source": [ + "##### Save infragraph as a yaml" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "42271c43", + "metadata": {}, + "outputs": [], + "source": [ + "with open(os.path.join(FileFolderUtils.get_instance().OUTPUT_DIR,\"../infrastructure\",\"htsim_clos_fabric_2tier.yaml\"),\"w\") as f:\n", + " data = infrastructure.serialize(\"dict\")\n", + " yaml.dump(data, f, default_flow_style=False, indent=4)\n", + "\n", + "print(\"saved yaml to:\", os.path.join(FileFolderUtils.get_instance().OUTPUT_DIR,\"..\",\"htsim_clos_fabric_2tier.yaml\"))" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "name": "python", + "version": "3.11.0" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/client-scripts/notebooks/infragraph/htsim_clos_fabric_2tier.py b/client-scripts/notebooks/infragraph/htsim_clos_fabric_2tier.py deleted file mode 100644 index 4f05442..0000000 --- a/client-scripts/notebooks/infragraph/htsim_clos_fabric_2tier.py +++ /dev/null @@ -1,156 +0,0 @@ -# --- -# jupyter: -# jupytext: -# text_representation: -# extension: .py -# format_name: percent -# format_version: '1.3' -# jupytext_version: 1.19.1 -# kernelspec: -# display_name: Python 3 -# language: python -# name: python3 -# --- - -# %% [markdown] -# ##### Import the required modules and configure the system path to locate them - -# %% -import sys -sys.path.append("../../utils") -import networkx -import astra_sim_sdk.astra_sim_sdk as astra_sim_kit -from astra_sim import AstraSim, Collective, NetworkBackend -from infragraph.infragraph_service import InfraGraphService -from infragraph.blueprints.fabrics.clos_fat_tree_fabric import ClosFatTreeFabric -from infragraph.blueprints.devices.generic.server import Server -from infragraph.blueprints.devices.generic.generic_switch import Switch - -# %% [markdown] -# ##### Call the AstraSim client helper with the server endpoint and tag to connect to the ASTRA-sim gRPC server, initialize the SDK, and create a tagged folder for configs, results, and logs. - -# %% -astra = AstraSim(server_endpoint = "172.17.0.2:8989", tag = "htsim_clos_fabric_2tier") - -# %% [markdown] -# ##### Create a two-tier clos fabric using infragraph fabric blueprint - -# %% -server = Server() -switch = Switch(port_count=8) -infrastructure = ClosFatTreeFabric(switch, server, 2,[]) -astra.configuration.infragraph.infrastructure.deserialize(infrastructure.serialize()) -print(astra.configuration.infragraph.infrastructure) - -# %% [markdown] -# ##### Initialize the Infragraph service, display the fabric topology, and retrieve/set the total number of NPUs to generate the collective - -# %% -service = InfraGraphService() -service.set_graph(infrastructure) -g = service.get_networkx_graph() -print(networkx.write_network_text(g, vertical_chains=True)) -total_npus = 16 - -# %% [markdown] -# ##### Generate workload execution traces for each rank and set the required data size for AstraSim configuration - -# %% -astra.configuration.common_config.workload = astra.generate_collective(collective=Collective.ALLREDUCE, coll_size= 1 *1024*1024, npu_range=[0, total_npus]) - -# %% [markdown] -# ##### Configure ASTRA-sim system config - -# %% -astra.configuration.common_config.system.scheduling_policy = astra.configuration.common_config.system.LIFO -astra.configuration.common_config.system.endpoint_delay = 10 -astra.configuration.common_config.system.active_chunks_per_dimension = 1 -astra.configuration.common_config.system.preferred_dataset_splits = 4 -astra.configuration.common_config.system.all_gather_implementation = [astra.configuration.common_config.system.RING] -astra.configuration.common_config.system.all_to_all_implementation = [astra.configuration.common_config.system.DIRECT] -astra.configuration.common_config.system.all_reduce_implementation = [astra.configuration.common_config.system.RING] -astra.configuration.common_config.system.collective_optimization = astra.configuration.common_config.system.LOCALBWAWARE -astra.configuration.common_config.system.local_mem_bw = 1600 -astra.configuration.common_config.system.peak_perf = 900 -astra.configuration.common_config.system.roofline_enabled = 0 -print(astra.configuration.common_config.system) - - - -# %% [markdown] -# ##### Configure the remote memory configuration - -# %% -astra.configuration.common_config.remote_memory.memory_type = astra.configuration.common_config.remote_memory.NO_MEMORY_EXPANSION -print(astra.configuration.common_config.remote_memory) - -# %% [markdown] -# ##### Configure the selected network backend and the topology (infragraph or network_topology_configuration) - -# %% -astra.configuration.network_backend.choice = astra.configuration.network_backend.HTSIM -astra.configuration.network_backend.htsim.topology.choice = astra.configuration.network_backend.htsim.topology.INFRAGRAPH - - -# %% [markdown] -# ##### Select htsim protocol - -# %% -astra.configuration.network_backend.htsim.htsim_protocol.choice = astra.configuration.network_backend.htsim.htsim_protocol.TCP -print("Network backend set to", astra.configuration.network_backend.choice) -print("network topology choice set to:",astra.configuration.network_backend.htsim.topology.choice) -print("protocol set to", astra.configuration.network_backend.htsim.htsim_protocol) -astra.configuration.network_backend.htsim.htsim_protocol.tcp.nodes = str(total_npus) - -# %% [markdown] -# ##### Adding ASTRA-sim - Infragraph specific annotation - -# %% -host_device_spec = astra_sim_kit.AnnotationDeviceSpecifications() -host_device_spec.device_bandwidth_gbps = 1000 -host_device_spec.device_latency_ms = 0.005 -host_device_spec.device_name = "server" -host_device_spec.device_type = "host" -astra.configuration.infragraph.annotations.device_specifications.append(host_device_spec) - -switch_device_spec = astra_sim_kit.AnnotationDeviceSpecifications() -switch_device_spec.device_bandwidth_gbps = 1000 -switch_device_spec.device_latency_ms = 0.005 -switch_device_spec.device_name = "switch" -switch_device_spec.device_type = "switch" -astra.configuration.infragraph.annotations.device_specifications.append( - switch_device_spec -) - -# %% [markdown] -# ##### Configure ASTRA-sim cmd parameters - -# %% -astra.configuration.common_config.cmd_parameters.comm_scale = 1 -astra.configuration.common_config.cmd_parameters.injection_scale = 1 -astra.configuration.common_config.cmd_parameters.rendezvous_protocol = False - -# %% [markdown] -# #### Start the simulation by specifying the network backend - -# %% -astra.run_simulation(NetworkBackend.HTSIM) - -# %% [markdown] -# ##### Download all the configurations as a zip - -# %% -astra.download_configuration() - -# %% [markdown] -# ##### Save infragraph as a yaml - -# %% -import yaml -import os -from common import FileFolderUtils -with open(os.path.join(FileFolderUtils.get_instance().OUTPUT_DIR,"../infrastructure","htsim_clos_fabric_2tier.yaml"),"w") as f: - data = infrastructure.serialize("dict") - yaml.dump(data, f, default_flow_style=False, indent=4) - -print("saved yaml to:", os.path.join(FileFolderUtils.get_instance().OUTPUT_DIR,"..","htsim_clos_fabric_2tier.yaml")) diff --git a/client-scripts/notebooks/infragraph/htsim_clos_fabric_3tier.ipynb b/client-scripts/notebooks/infragraph/htsim_clos_fabric_3tier.ipynb new file mode 100644 index 0000000..de97c01 --- /dev/null +++ b/client-scripts/notebooks/infragraph/htsim_clos_fabric_3tier.ipynb @@ -0,0 +1,5750 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "63705c57", + "metadata": {}, + "source": [ + "##### Import the required modules and configure the system path to locate them" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "ff8f875a", + "metadata": {}, + "outputs": [], + "source": [ + "import sys\n", + "sys.path.append(\"../../utils\")\n", + "import networkx\n", + "import yaml\n", + "import os\n", + "import astra_sim_sdk.astra_sim_sdk as astra_sim_kit\n", + "from common import FileFolderUtils\n", + "from astra_sim import AstraSim, Collective, NetworkBackend\n", + "from infragraph.infragraph_service import InfraGraphService\n", + "from infragraph.blueprints.fabrics.clos_fat_tree_fabric import ClosFatTreeFabric\n", + "from infragraph.blueprints.devices.generic.server import Server\n", + "from infragraph.blueprints.devices.generic.generic_switch import Switch" + ] + }, + { + "cell_type": "markdown", + "id": "add4ea8b", + "metadata": {}, + "source": [ + "##### Call the AstraSim client helper with the server endpoint and tag to connect to the ASTRA-sim gRPC server, initialize the SDK, and create a tagged folder for configs, results, and logs" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "bdd78f3c", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Resetting test directory\n", + "Successfully connected to gRPC server at 172.17.0.2:8989\n" + ] + } + ], + "source": [ + "astra = AstraSim(server_endpoint = \"172.17.0.2:8989\", tag = \"htsim_clos_fabric_3tier\")" + ] + }, + { + "cell_type": "markdown", + "id": "07f4718b", + "metadata": {}, + "source": [ + "##### Create a three-tier clos fabric using infragraph fabric blueprint" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "f73252d5", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "description: Clos Fat Tree Fabric\n", + "devices:\n", + "- components:\n", + " - choice: cpu\n", + " count: 1\n", + " description: Generic CPU\n", + " name: cpu\n", + " - choice: xpu\n", + " count: 2\n", + " description: Generic GPU/XPU\n", + " name: xpu\n", + " - choice: switch\n", + " count: 1\n", + " description: NVLink Switch\n", + " name: nvlsw\n", + " - choice: switch\n", + " count: 1\n", + " description: PCI Express Switch Gen 4\n", + " name: pciesw\n", + " - choice: nic\n", + " count: 2\n", + " description: Generic Nic\n", + " name: nic\n", + " - choice: custom\n", + " count: 1\n", + " custom:\n", + " type: mgmt-nic\n", + " description: Mgmt Nic\n", + " name: mgmt\n", + " description: A generic server with npu_factor * 4 xpu(s)\n", + " edges:\n", + " - ep1:\n", + " component: mgmt\n", + " ep2:\n", + " component: cpu[0]\n", + " link: pcie\n", + " scheme: one2one\n", + " - ep1:\n", + " component: cpu\n", + " ep2:\n", + " component: cpu\n", + " link: fabric\n", + " scheme: many2many\n", + " - ep1:\n", + " component: xpu\n", + " ep2:\n", + " component: nvlsw\n", + " link: nvlink\n", + " scheme: many2many\n", + " - ep1:\n", + " component: cpu[0]\n", + " ep2:\n", + " component: pciesw[0]\n", + " link: pcie\n", + " scheme: many2many\n", + " - ep1:\n", + " component: xpu[0:2]\n", + " ep2:\n", + " component: pciesw[0]\n", + " link: pcie\n", + " scheme: many2many\n", + " - ep1:\n", + " component: nic[0:2]\n", + " ep2:\n", + " component: pciesw[0]\n", + " link: pcie\n", + " scheme: many2many\n", + " links:\n", + " - description: CPU Fabric\n", + " name: fabric\n", + " - name: nvlink\n", + " - name: pcie\n", + " name: server\n", + "- components:\n", + " - choice: cpu\n", + " count: 1\n", + " description: Generic ASIC\n", + " name: asic\n", + " - choice: port\n", + " count: 8\n", + " description: Generic port\n", + " name: port\n", + " description: A generic switch\n", + " edges:\n", + " - ep1:\n", + " component: asic\n", + " ep2:\n", + " component: port\n", + " link: ic\n", + " scheme: many2many\n", + " links:\n", + " - description: Generic integrated circuitry\n", + " name: ic\n", + " name: switch\n", + "edges:\n", + "- ep1:\n", + " component: nic[0]\n", + " instance: server[0]\n", + " ep2:\n", + " component: port[0]\n", + " instance: tier_0[0]\n", + " link: tier_0_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: nic[1]\n", + " instance: server[0]\n", + " ep2:\n", + " component: port[1]\n", + " instance: tier_0[0]\n", + " link: tier_0_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: nic[0]\n", + " instance: server[1]\n", + " ep2:\n", + " component: port[2]\n", + " instance: tier_0[0]\n", + " link: tier_0_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: nic[1]\n", + " instance: server[1]\n", + " ep2:\n", + " component: port[3]\n", + " instance: tier_0[0]\n", + " link: tier_0_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: nic[0]\n", + " instance: server[2]\n", + " ep2:\n", + " component: port[0]\n", + " instance: tier_0[1]\n", + " link: tier_0_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: nic[1]\n", + " instance: server[2]\n", + " ep2:\n", + " component: port[1]\n", + " instance: tier_0[1]\n", + " link: tier_0_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: nic[0]\n", + " instance: server[3]\n", + " ep2:\n", + " component: port[2]\n", + " instance: tier_0[1]\n", + " link: tier_0_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: nic[1]\n", + " instance: server[3]\n", + " ep2:\n", + " component: port[3]\n", + " instance: tier_0[1]\n", + " link: tier_0_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: nic[0]\n", + " instance: server[4]\n", + " ep2:\n", + " component: port[0]\n", + " instance: tier_0[2]\n", + " link: tier_0_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: nic[1]\n", + " instance: server[4]\n", + " ep2:\n", + " component: port[1]\n", + " instance: tier_0[2]\n", + " link: tier_0_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: nic[0]\n", + " instance: server[5]\n", + " ep2:\n", + " component: port[2]\n", + " instance: tier_0[2]\n", + " link: tier_0_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: nic[1]\n", + " instance: server[5]\n", + " ep2:\n", + " component: port[3]\n", + " instance: tier_0[2]\n", + " link: tier_0_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: nic[0]\n", + " instance: server[6]\n", + " ep2:\n", + " component: port[0]\n", + " instance: tier_0[3]\n", + " link: tier_0_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: nic[1]\n", + " instance: server[6]\n", + " ep2:\n", + " component: port[1]\n", + " instance: tier_0[3]\n", + " link: tier_0_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: nic[0]\n", + " instance: server[7]\n", + " ep2:\n", + " component: port[2]\n", + " instance: tier_0[3]\n", + " link: tier_0_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: nic[1]\n", + " instance: server[7]\n", + " ep2:\n", + " component: port[3]\n", + " instance: tier_0[3]\n", + " link: tier_0_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: nic[0]\n", + " instance: server[8]\n", + " ep2:\n", + " component: port[0]\n", + " instance: tier_0[4]\n", + " link: tier_0_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: nic[1]\n", + " instance: server[8]\n", + " ep2:\n", + " component: port[1]\n", + " instance: tier_0[4]\n", + " link: tier_0_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: nic[0]\n", + " instance: server[9]\n", + " ep2:\n", + " component: port[2]\n", + " instance: tier_0[4]\n", + " link: tier_0_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: nic[1]\n", + " instance: server[9]\n", + " ep2:\n", + " component: port[3]\n", + " instance: tier_0[4]\n", + " link: tier_0_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: nic[0]\n", + " instance: server[10]\n", + " ep2:\n", + " component: port[0]\n", + " instance: tier_0[5]\n", + " link: tier_0_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: nic[1]\n", + " instance: server[10]\n", + " ep2:\n", + " component: port[1]\n", + " instance: tier_0[5]\n", + " link: tier_0_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: nic[0]\n", + " instance: server[11]\n", + " ep2:\n", + " component: port[2]\n", + " instance: tier_0[5]\n", + " link: tier_0_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: nic[1]\n", + " instance: server[11]\n", + " ep2:\n", + " component: port[3]\n", + " instance: tier_0[5]\n", + " link: tier_0_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: nic[0]\n", + " instance: server[12]\n", + " ep2:\n", + " component: port[0]\n", + " instance: tier_0[6]\n", + " link: tier_0_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: nic[1]\n", + " instance: server[12]\n", + " ep2:\n", + " component: port[1]\n", + " instance: tier_0[6]\n", + " link: tier_0_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: nic[0]\n", + " instance: server[13]\n", + " ep2:\n", + " component: port[2]\n", + " instance: tier_0[6]\n", + " link: tier_0_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: nic[1]\n", + " instance: server[13]\n", + " ep2:\n", + " component: port[3]\n", + " instance: tier_0[6]\n", + " link: tier_0_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: nic[0]\n", + " instance: server[14]\n", + " ep2:\n", + " component: port[0]\n", + " instance: tier_0[7]\n", + " link: tier_0_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: nic[1]\n", + " instance: server[14]\n", + " ep2:\n", + " component: port[1]\n", + " instance: tier_0[7]\n", + " link: tier_0_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: nic[0]\n", + " instance: server[15]\n", + " ep2:\n", + " component: port[2]\n", + " instance: tier_0[7]\n", + " link: tier_0_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: nic[1]\n", + " instance: server[15]\n", + " ep2:\n", + " component: port[3]\n", + " instance: tier_0[7]\n", + " link: tier_0_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: nic[0]\n", + " instance: server[16]\n", + " ep2:\n", + " component: port[0]\n", + " instance: tier_0[8]\n", + " link: tier_0_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: nic[1]\n", + " instance: server[16]\n", + " ep2:\n", + " component: port[1]\n", + " instance: tier_0[8]\n", + " link: tier_0_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: nic[0]\n", + " instance: server[17]\n", + " ep2:\n", + " component: port[2]\n", + " instance: tier_0[8]\n", + " link: tier_0_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: nic[1]\n", + " instance: server[17]\n", + " ep2:\n", + " component: port[3]\n", + " instance: tier_0[8]\n", + " link: tier_0_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: nic[0]\n", + " instance: server[18]\n", + " ep2:\n", + " component: port[0]\n", + " instance: tier_0[9]\n", + " link: tier_0_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: nic[1]\n", + " instance: server[18]\n", + " ep2:\n", + " component: port[1]\n", + " instance: tier_0[9]\n", + " link: tier_0_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: nic[0]\n", + " instance: server[19]\n", + " ep2:\n", + " component: port[2]\n", + " instance: tier_0[9]\n", + " link: tier_0_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: nic[1]\n", + " instance: server[19]\n", + " ep2:\n", + " component: port[3]\n", + " instance: tier_0[9]\n", + " link: tier_0_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: nic[0]\n", + " instance: server[20]\n", + " ep2:\n", + " component: port[0]\n", + " instance: tier_0[10]\n", + " link: tier_0_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: nic[1]\n", + " instance: server[20]\n", + " ep2:\n", + " component: port[1]\n", + " instance: tier_0[10]\n", + " link: tier_0_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: nic[0]\n", + " instance: server[21]\n", + " ep2:\n", + " component: port[2]\n", + " instance: tier_0[10]\n", + " link: tier_0_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: nic[1]\n", + " instance: server[21]\n", + " ep2:\n", + " component: port[3]\n", + " instance: tier_0[10]\n", + " link: tier_0_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: nic[0]\n", + " instance: server[22]\n", + " ep2:\n", + " component: port[0]\n", + " instance: tier_0[11]\n", + " link: tier_0_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: nic[1]\n", + " instance: server[22]\n", + " ep2:\n", + " component: port[1]\n", + " instance: tier_0[11]\n", + " link: tier_0_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: nic[0]\n", + " instance: server[23]\n", + " ep2:\n", + " component: port[2]\n", + " instance: tier_0[11]\n", + " link: tier_0_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: nic[1]\n", + " instance: server[23]\n", + " ep2:\n", + " component: port[3]\n", + " instance: tier_0[11]\n", + " link: tier_0_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: nic[0]\n", + " instance: server[24]\n", + " ep2:\n", + " component: port[0]\n", + " instance: tier_0[12]\n", + " link: tier_0_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: nic[1]\n", + " instance: server[24]\n", + " ep2:\n", + " component: port[1]\n", + " instance: tier_0[12]\n", + " link: tier_0_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: nic[0]\n", + " instance: server[25]\n", + " ep2:\n", + " component: port[2]\n", + " instance: tier_0[12]\n", + " link: tier_0_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: nic[1]\n", + " instance: server[25]\n", + " ep2:\n", + " component: port[3]\n", + " instance: tier_0[12]\n", + " link: tier_0_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: nic[0]\n", + " instance: server[26]\n", + " ep2:\n", + " component: port[0]\n", + " instance: tier_0[13]\n", + " link: tier_0_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: nic[1]\n", + " instance: server[26]\n", + " ep2:\n", + " component: port[1]\n", + " instance: tier_0[13]\n", + " link: tier_0_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: nic[0]\n", + " instance: server[27]\n", + " ep2:\n", + " component: port[2]\n", + " instance: tier_0[13]\n", + " link: tier_0_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: nic[1]\n", + " instance: server[27]\n", + " ep2:\n", + " component: port[3]\n", + " instance: tier_0[13]\n", + " link: tier_0_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: nic[0]\n", + " instance: server[28]\n", + " ep2:\n", + " component: port[0]\n", + " instance: tier_0[14]\n", + " link: tier_0_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: nic[1]\n", + " instance: server[28]\n", + " ep2:\n", + " component: port[1]\n", + " instance: tier_0[14]\n", + " link: tier_0_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: nic[0]\n", + " instance: server[29]\n", + " ep2:\n", + " component: port[2]\n", + " instance: tier_0[14]\n", + " link: tier_0_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: nic[1]\n", + " instance: server[29]\n", + " ep2:\n", + " component: port[3]\n", + " instance: tier_0[14]\n", + " link: tier_0_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: nic[0]\n", + " instance: server[30]\n", + " ep2:\n", + " component: port[0]\n", + " instance: tier_0[15]\n", + " link: tier_0_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: nic[1]\n", + " instance: server[30]\n", + " ep2:\n", + " component: port[1]\n", + " instance: tier_0[15]\n", + " link: tier_0_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: nic[0]\n", + " instance: server[31]\n", + " ep2:\n", + " component: port[2]\n", + " instance: tier_0[15]\n", + " link: tier_0_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: nic[1]\n", + " instance: server[31]\n", + " ep2:\n", + " component: port[3]\n", + " instance: tier_0[15]\n", + " link: tier_0_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: nic[0]\n", + " instance: server[32]\n", + " ep2:\n", + " component: port[0]\n", + " instance: tier_0[16]\n", + " link: tier_0_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: nic[1]\n", + " instance: server[32]\n", + " ep2:\n", + " component: port[1]\n", + " instance: tier_0[16]\n", + " link: tier_0_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: nic[0]\n", + " instance: server[33]\n", + " ep2:\n", + " component: port[2]\n", + " instance: tier_0[16]\n", + " link: tier_0_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: nic[1]\n", + " instance: server[33]\n", + " ep2:\n", + " component: port[3]\n", + " instance: tier_0[16]\n", + " link: tier_0_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: nic[0]\n", + " instance: server[34]\n", + " ep2:\n", + " component: port[0]\n", + " instance: tier_0[17]\n", + " link: tier_0_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: nic[1]\n", + " instance: server[34]\n", + " ep2:\n", + " component: port[1]\n", + " instance: tier_0[17]\n", + " link: tier_0_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: nic[0]\n", + " instance: server[35]\n", + " ep2:\n", + " component: port[2]\n", + " instance: tier_0[17]\n", + " link: tier_0_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: nic[1]\n", + " instance: server[35]\n", + " ep2:\n", + " component: port[3]\n", + " instance: tier_0[17]\n", + " link: tier_0_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: nic[0]\n", + " instance: server[36]\n", + " ep2:\n", + " component: port[0]\n", + " instance: tier_0[18]\n", + " link: tier_0_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: nic[1]\n", + " instance: server[36]\n", + " ep2:\n", + " component: port[1]\n", + " instance: tier_0[18]\n", + " link: tier_0_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: nic[0]\n", + " instance: server[37]\n", + " ep2:\n", + " component: port[2]\n", + " instance: tier_0[18]\n", + " link: tier_0_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: nic[1]\n", + " instance: server[37]\n", + " ep2:\n", + " component: port[3]\n", + " instance: tier_0[18]\n", + " link: tier_0_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: nic[0]\n", + " instance: server[38]\n", + " ep2:\n", + " component: port[0]\n", + " instance: tier_0[19]\n", + " link: tier_0_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: nic[1]\n", + " instance: server[38]\n", + " ep2:\n", + " component: port[1]\n", + " instance: tier_0[19]\n", + " link: tier_0_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: nic[0]\n", + " instance: server[39]\n", + " ep2:\n", + " component: port[2]\n", + " instance: tier_0[19]\n", + " link: tier_0_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: nic[1]\n", + " instance: server[39]\n", + " ep2:\n", + " component: port[3]\n", + " instance: tier_0[19]\n", + " link: tier_0_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: nic[0]\n", + " instance: server[40]\n", + " ep2:\n", + " component: port[0]\n", + " instance: tier_0[20]\n", + " link: tier_0_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: nic[1]\n", + " instance: server[40]\n", + " ep2:\n", + " component: port[1]\n", + " instance: tier_0[20]\n", + " link: tier_0_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: nic[0]\n", + " instance: server[41]\n", + " ep2:\n", + " component: port[2]\n", + " instance: tier_0[20]\n", + " link: tier_0_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: nic[1]\n", + " instance: server[41]\n", + " ep2:\n", + " component: port[3]\n", + " instance: tier_0[20]\n", + " link: tier_0_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: nic[0]\n", + " instance: server[42]\n", + " ep2:\n", + " component: port[0]\n", + " instance: tier_0[21]\n", + " link: tier_0_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: nic[1]\n", + " instance: server[42]\n", + " ep2:\n", + " component: port[1]\n", + " instance: tier_0[21]\n", + " link: tier_0_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: nic[0]\n", + " instance: server[43]\n", + " ep2:\n", + " component: port[2]\n", + " instance: tier_0[21]\n", + " link: tier_0_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: nic[1]\n", + " instance: server[43]\n", + " ep2:\n", + " component: port[3]\n", + " instance: tier_0[21]\n", + " link: tier_0_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: nic[0]\n", + " instance: server[44]\n", + " ep2:\n", + " component: port[0]\n", + " instance: tier_0[22]\n", + " link: tier_0_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: nic[1]\n", + " instance: server[44]\n", + " ep2:\n", + " component: port[1]\n", + " instance: tier_0[22]\n", + " link: tier_0_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: nic[0]\n", + " instance: server[45]\n", + " ep2:\n", + " component: port[2]\n", + " instance: tier_0[22]\n", + " link: tier_0_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: nic[1]\n", + " instance: server[45]\n", + " ep2:\n", + " component: port[3]\n", + " instance: tier_0[22]\n", + " link: tier_0_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: nic[0]\n", + " instance: server[46]\n", + " ep2:\n", + " component: port[0]\n", + " instance: tier_0[23]\n", + " link: tier_0_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: nic[1]\n", + " instance: server[46]\n", + " ep2:\n", + " component: port[1]\n", + " instance: tier_0[23]\n", + " link: tier_0_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: nic[0]\n", + " instance: server[47]\n", + " ep2:\n", + " component: port[2]\n", + " instance: tier_0[23]\n", + " link: tier_0_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: nic[1]\n", + " instance: server[47]\n", + " ep2:\n", + " component: port[3]\n", + " instance: tier_0[23]\n", + " link: tier_0_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: nic[0]\n", + " instance: server[48]\n", + " ep2:\n", + " component: port[0]\n", + " instance: tier_0[24]\n", + " link: tier_0_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: nic[1]\n", + " instance: server[48]\n", + " ep2:\n", + " component: port[1]\n", + " instance: tier_0[24]\n", + " link: tier_0_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: nic[0]\n", + " instance: server[49]\n", + " ep2:\n", + " component: port[2]\n", + " instance: tier_0[24]\n", + " link: tier_0_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: nic[1]\n", + " instance: server[49]\n", + " ep2:\n", + " component: port[3]\n", + " instance: tier_0[24]\n", + " link: tier_0_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: nic[0]\n", + " instance: server[50]\n", + " ep2:\n", + " component: port[0]\n", + " instance: tier_0[25]\n", + " link: tier_0_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: nic[1]\n", + " instance: server[50]\n", + " ep2:\n", + " component: port[1]\n", + " instance: tier_0[25]\n", + " link: tier_0_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: nic[0]\n", + " instance: server[51]\n", + " ep2:\n", + " component: port[2]\n", + " instance: tier_0[25]\n", + " link: tier_0_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: nic[1]\n", + " instance: server[51]\n", + " ep2:\n", + " component: port[3]\n", + " instance: tier_0[25]\n", + " link: tier_0_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: nic[0]\n", + " instance: server[52]\n", + " ep2:\n", + " component: port[0]\n", + " instance: tier_0[26]\n", + " link: tier_0_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: nic[1]\n", + " instance: server[52]\n", + " ep2:\n", + " component: port[1]\n", + " instance: tier_0[26]\n", + " link: tier_0_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: nic[0]\n", + " instance: server[53]\n", + " ep2:\n", + " component: port[2]\n", + " instance: tier_0[26]\n", + " link: tier_0_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: nic[1]\n", + " instance: server[53]\n", + " ep2:\n", + " component: port[3]\n", + " instance: tier_0[26]\n", + " link: tier_0_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: nic[0]\n", + " instance: server[54]\n", + " ep2:\n", + " component: port[0]\n", + " instance: tier_0[27]\n", + " link: tier_0_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: nic[1]\n", + " instance: server[54]\n", + " ep2:\n", + " component: port[1]\n", + " instance: tier_0[27]\n", + " link: tier_0_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: nic[0]\n", + " instance: server[55]\n", + " ep2:\n", + " component: port[2]\n", + " instance: tier_0[27]\n", + " link: tier_0_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: nic[1]\n", + " instance: server[55]\n", + " ep2:\n", + " component: port[3]\n", + " instance: tier_0[27]\n", + " link: tier_0_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: nic[0]\n", + " instance: server[56]\n", + " ep2:\n", + " component: port[0]\n", + " instance: tier_0[28]\n", + " link: tier_0_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: nic[1]\n", + " instance: server[56]\n", + " ep2:\n", + " component: port[1]\n", + " instance: tier_0[28]\n", + " link: tier_0_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: nic[0]\n", + " instance: server[57]\n", + " ep2:\n", + " component: port[2]\n", + " instance: tier_0[28]\n", + " link: tier_0_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: nic[1]\n", + " instance: server[57]\n", + " ep2:\n", + " component: port[3]\n", + " instance: tier_0[28]\n", + " link: tier_0_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: nic[0]\n", + " instance: server[58]\n", + " ep2:\n", + " component: port[0]\n", + " instance: tier_0[29]\n", + " link: tier_0_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: nic[1]\n", + " instance: server[58]\n", + " ep2:\n", + " component: port[1]\n", + " instance: tier_0[29]\n", + " link: tier_0_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: nic[0]\n", + " instance: server[59]\n", + " ep2:\n", + " component: port[2]\n", + " instance: tier_0[29]\n", + " link: tier_0_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: nic[1]\n", + " instance: server[59]\n", + " ep2:\n", + " component: port[3]\n", + " instance: tier_0[29]\n", + " link: tier_0_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: nic[0]\n", + " instance: server[60]\n", + " ep2:\n", + " component: port[0]\n", + " instance: tier_0[30]\n", + " link: tier_0_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: nic[1]\n", + " instance: server[60]\n", + " ep2:\n", + " component: port[1]\n", + " instance: tier_0[30]\n", + " link: tier_0_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: nic[0]\n", + " instance: server[61]\n", + " ep2:\n", + " component: port[2]\n", + " instance: tier_0[30]\n", + " link: tier_0_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: nic[1]\n", + " instance: server[61]\n", + " ep2:\n", + " component: port[3]\n", + " instance: tier_0[30]\n", + " link: tier_0_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: nic[0]\n", + " instance: server[62]\n", + " ep2:\n", + " component: port[0]\n", + " instance: tier_0[31]\n", + " link: tier_0_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: nic[1]\n", + " instance: server[62]\n", + " ep2:\n", + " component: port[1]\n", + " instance: tier_0[31]\n", + " link: tier_0_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: nic[0]\n", + " instance: server[63]\n", + " ep2:\n", + " component: port[2]\n", + " instance: tier_0[31]\n", + " link: tier_0_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: nic[1]\n", + " instance: server[63]\n", + " ep2:\n", + " component: port[3]\n", + " instance: tier_0[31]\n", + " link: tier_0_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[0]\n", + " instance: tier_1[0]\n", + " ep2:\n", + " component: port[4]\n", + " instance: tier_0[0]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[1]\n", + " instance: tier_1[0]\n", + " ep2:\n", + " component: port[4]\n", + " instance: tier_0[1]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[2]\n", + " instance: tier_1[0]\n", + " ep2:\n", + " component: port[4]\n", + " instance: tier_0[2]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[3]\n", + " instance: tier_1[0]\n", + " ep2:\n", + " component: port[4]\n", + " instance: tier_0[3]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[0]\n", + " instance: tier_1[1]\n", + " ep2:\n", + " component: port[5]\n", + " instance: tier_0[0]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[1]\n", + " instance: tier_1[1]\n", + " ep2:\n", + " component: port[5]\n", + " instance: tier_0[1]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[2]\n", + " instance: tier_1[1]\n", + " ep2:\n", + " component: port[5]\n", + " instance: tier_0[2]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[3]\n", + " instance: tier_1[1]\n", + " ep2:\n", + " component: port[5]\n", + " instance: tier_0[3]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[0]\n", + " instance: tier_1[2]\n", + " ep2:\n", + " component: port[6]\n", + " instance: tier_0[0]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[1]\n", + " instance: tier_1[2]\n", + " ep2:\n", + " component: port[6]\n", + " instance: tier_0[1]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[2]\n", + " instance: tier_1[2]\n", + " ep2:\n", + " component: port[6]\n", + " instance: tier_0[2]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[3]\n", + " instance: tier_1[2]\n", + " ep2:\n", + " component: port[6]\n", + " instance: tier_0[3]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[0]\n", + " instance: tier_1[3]\n", + " ep2:\n", + " component: port[7]\n", + " instance: tier_0[0]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[1]\n", + " instance: tier_1[3]\n", + " ep2:\n", + " component: port[7]\n", + " instance: tier_0[1]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[2]\n", + " instance: tier_1[3]\n", + " ep2:\n", + " component: port[7]\n", + " instance: tier_0[2]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[3]\n", + " instance: tier_1[3]\n", + " ep2:\n", + " component: port[7]\n", + " instance: tier_0[3]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[0]\n", + " instance: tier_1[4]\n", + " ep2:\n", + " component: port[4]\n", + " instance: tier_0[4]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[1]\n", + " instance: tier_1[4]\n", + " ep2:\n", + " component: port[4]\n", + " instance: tier_0[5]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[2]\n", + " instance: tier_1[4]\n", + " ep2:\n", + " component: port[4]\n", + " instance: tier_0[6]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[3]\n", + " instance: tier_1[4]\n", + " ep2:\n", + " component: port[4]\n", + " instance: tier_0[7]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[0]\n", + " instance: tier_1[5]\n", + " ep2:\n", + " component: port[5]\n", + " instance: tier_0[4]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[1]\n", + " instance: tier_1[5]\n", + " ep2:\n", + " component: port[5]\n", + " instance: tier_0[5]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[2]\n", + " instance: tier_1[5]\n", + " ep2:\n", + " component: port[5]\n", + " instance: tier_0[6]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[3]\n", + " instance: tier_1[5]\n", + " ep2:\n", + " component: port[5]\n", + " instance: tier_0[7]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[0]\n", + " instance: tier_1[6]\n", + " ep2:\n", + " component: port[6]\n", + " instance: tier_0[4]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[1]\n", + " instance: tier_1[6]\n", + " ep2:\n", + " component: port[6]\n", + " instance: tier_0[5]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[2]\n", + " instance: tier_1[6]\n", + " ep2:\n", + " component: port[6]\n", + " instance: tier_0[6]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[3]\n", + " instance: tier_1[6]\n", + " ep2:\n", + " component: port[6]\n", + " instance: tier_0[7]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[0]\n", + " instance: tier_1[7]\n", + " ep2:\n", + " component: port[7]\n", + " instance: tier_0[4]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[1]\n", + " instance: tier_1[7]\n", + " ep2:\n", + " component: port[7]\n", + " instance: tier_0[5]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[2]\n", + " instance: tier_1[7]\n", + " ep2:\n", + " component: port[7]\n", + " instance: tier_0[6]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[3]\n", + " instance: tier_1[7]\n", + " ep2:\n", + " component: port[7]\n", + " instance: tier_0[7]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[0]\n", + " instance: tier_1[8]\n", + " ep2:\n", + " component: port[4]\n", + " instance: tier_0[8]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[1]\n", + " instance: tier_1[8]\n", + " ep2:\n", + " component: port[4]\n", + " instance: tier_0[9]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[2]\n", + " instance: tier_1[8]\n", + " ep2:\n", + " component: port[4]\n", + " instance: tier_0[10]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[3]\n", + " instance: tier_1[8]\n", + " ep2:\n", + " component: port[4]\n", + " instance: tier_0[11]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[0]\n", + " instance: tier_1[9]\n", + " ep2:\n", + " component: port[5]\n", + " instance: tier_0[8]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[1]\n", + " instance: tier_1[9]\n", + " ep2:\n", + " component: port[5]\n", + " instance: tier_0[9]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[2]\n", + " instance: tier_1[9]\n", + " ep2:\n", + " component: port[5]\n", + " instance: tier_0[10]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[3]\n", + " instance: tier_1[9]\n", + " ep2:\n", + " component: port[5]\n", + " instance: tier_0[11]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[0]\n", + " instance: tier_1[10]\n", + " ep2:\n", + " component: port[6]\n", + " instance: tier_0[8]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[1]\n", + " instance: tier_1[10]\n", + " ep2:\n", + " component: port[6]\n", + " instance: tier_0[9]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[2]\n", + " instance: tier_1[10]\n", + " ep2:\n", + " component: port[6]\n", + " instance: tier_0[10]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[3]\n", + " instance: tier_1[10]\n", + " ep2:\n", + " component: port[6]\n", + " instance: tier_0[11]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[0]\n", + " instance: tier_1[11]\n", + " ep2:\n", + " component: port[7]\n", + " instance: tier_0[8]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[1]\n", + " instance: tier_1[11]\n", + " ep2:\n", + " component: port[7]\n", + " instance: tier_0[9]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[2]\n", + " instance: tier_1[11]\n", + " ep2:\n", + " component: port[7]\n", + " instance: tier_0[10]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[3]\n", + " instance: tier_1[11]\n", + " ep2:\n", + " component: port[7]\n", + " instance: tier_0[11]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[0]\n", + " instance: tier_1[12]\n", + " ep2:\n", + " component: port[4]\n", + " instance: tier_0[12]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[1]\n", + " instance: tier_1[12]\n", + " ep2:\n", + " component: port[4]\n", + " instance: tier_0[13]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[2]\n", + " instance: tier_1[12]\n", + " ep2:\n", + " component: port[4]\n", + " instance: tier_0[14]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[3]\n", + " instance: tier_1[12]\n", + " ep2:\n", + " component: port[4]\n", + " instance: tier_0[15]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[0]\n", + " instance: tier_1[13]\n", + " ep2:\n", + " component: port[5]\n", + " instance: tier_0[12]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[1]\n", + " instance: tier_1[13]\n", + " ep2:\n", + " component: port[5]\n", + " instance: tier_0[13]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[2]\n", + " instance: tier_1[13]\n", + " ep2:\n", + " component: port[5]\n", + " instance: tier_0[14]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[3]\n", + " instance: tier_1[13]\n", + " ep2:\n", + " component: port[5]\n", + " instance: tier_0[15]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[0]\n", + " instance: tier_1[14]\n", + " ep2:\n", + " component: port[6]\n", + " instance: tier_0[12]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[1]\n", + " instance: tier_1[14]\n", + " ep2:\n", + " component: port[6]\n", + " instance: tier_0[13]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[2]\n", + " instance: tier_1[14]\n", + " ep2:\n", + " component: port[6]\n", + " instance: tier_0[14]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[3]\n", + " instance: tier_1[14]\n", + " ep2:\n", + " component: port[6]\n", + " instance: tier_0[15]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[0]\n", + " instance: tier_1[15]\n", + " ep2:\n", + " component: port[7]\n", + " instance: tier_0[12]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[1]\n", + " instance: tier_1[15]\n", + " ep2:\n", + " component: port[7]\n", + " instance: tier_0[13]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[2]\n", + " instance: tier_1[15]\n", + " ep2:\n", + " component: port[7]\n", + " instance: tier_0[14]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[3]\n", + " instance: tier_1[15]\n", + " ep2:\n", + " component: port[7]\n", + " instance: tier_0[15]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[0]\n", + " instance: tier_1[16]\n", + " ep2:\n", + " component: port[4]\n", + " instance: tier_0[16]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[1]\n", + " instance: tier_1[16]\n", + " ep2:\n", + " component: port[4]\n", + " instance: tier_0[17]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[2]\n", + " instance: tier_1[16]\n", + " ep2:\n", + " component: port[4]\n", + " instance: tier_0[18]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[3]\n", + " instance: tier_1[16]\n", + " ep2:\n", + " component: port[4]\n", + " instance: tier_0[19]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[0]\n", + " instance: tier_1[17]\n", + " ep2:\n", + " component: port[5]\n", + " instance: tier_0[16]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[1]\n", + " instance: tier_1[17]\n", + " ep2:\n", + " component: port[5]\n", + " instance: tier_0[17]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[2]\n", + " instance: tier_1[17]\n", + " ep2:\n", + " component: port[5]\n", + " instance: tier_0[18]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[3]\n", + " instance: tier_1[17]\n", + " ep2:\n", + " component: port[5]\n", + " instance: tier_0[19]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[0]\n", + " instance: tier_1[18]\n", + " ep2:\n", + " component: port[6]\n", + " instance: tier_0[16]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[1]\n", + " instance: tier_1[18]\n", + " ep2:\n", + " component: port[6]\n", + " instance: tier_0[17]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[2]\n", + " instance: tier_1[18]\n", + " ep2:\n", + " component: port[6]\n", + " instance: tier_0[18]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[3]\n", + " instance: tier_1[18]\n", + " ep2:\n", + " component: port[6]\n", + " instance: tier_0[19]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[0]\n", + " instance: tier_1[19]\n", + " ep2:\n", + " component: port[7]\n", + " instance: tier_0[16]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[1]\n", + " instance: tier_1[19]\n", + " ep2:\n", + " component: port[7]\n", + " instance: tier_0[17]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[2]\n", + " instance: tier_1[19]\n", + " ep2:\n", + " component: port[7]\n", + " instance: tier_0[18]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[3]\n", + " instance: tier_1[19]\n", + " ep2:\n", + " component: port[7]\n", + " instance: tier_0[19]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[0]\n", + " instance: tier_1[20]\n", + " ep2:\n", + " component: port[4]\n", + " instance: tier_0[20]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[1]\n", + " instance: tier_1[20]\n", + " ep2:\n", + " component: port[4]\n", + " instance: tier_0[21]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[2]\n", + " instance: tier_1[20]\n", + " ep2:\n", + " component: port[4]\n", + " instance: tier_0[22]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[3]\n", + " instance: tier_1[20]\n", + " ep2:\n", + " component: port[4]\n", + " instance: tier_0[23]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[0]\n", + " instance: tier_1[21]\n", + " ep2:\n", + " component: port[5]\n", + " instance: tier_0[20]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[1]\n", + " instance: tier_1[21]\n", + " ep2:\n", + " component: port[5]\n", + " instance: tier_0[21]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[2]\n", + " instance: tier_1[21]\n", + " ep2:\n", + " component: port[5]\n", + " instance: tier_0[22]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[3]\n", + " instance: tier_1[21]\n", + " ep2:\n", + " component: port[5]\n", + " instance: tier_0[23]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[0]\n", + " instance: tier_1[22]\n", + " ep2:\n", + " component: port[6]\n", + " instance: tier_0[20]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[1]\n", + " instance: tier_1[22]\n", + " ep2:\n", + " component: port[6]\n", + " instance: tier_0[21]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[2]\n", + " instance: tier_1[22]\n", + " ep2:\n", + " component: port[6]\n", + " instance: tier_0[22]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[3]\n", + " instance: tier_1[22]\n", + " ep2:\n", + " component: port[6]\n", + " instance: tier_0[23]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[0]\n", + " instance: tier_1[23]\n", + " ep2:\n", + " component: port[7]\n", + " instance: tier_0[20]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[1]\n", + " instance: tier_1[23]\n", + " ep2:\n", + " component: port[7]\n", + " instance: tier_0[21]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[2]\n", + " instance: tier_1[23]\n", + " ep2:\n", + " component: port[7]\n", + " instance: tier_0[22]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[3]\n", + " instance: tier_1[23]\n", + " ep2:\n", + " component: port[7]\n", + " instance: tier_0[23]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[0]\n", + " instance: tier_1[24]\n", + " ep2:\n", + " component: port[4]\n", + " instance: tier_0[24]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[1]\n", + " instance: tier_1[24]\n", + " ep2:\n", + " component: port[4]\n", + " instance: tier_0[25]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[2]\n", + " instance: tier_1[24]\n", + " ep2:\n", + " component: port[4]\n", + " instance: tier_0[26]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[3]\n", + " instance: tier_1[24]\n", + " ep2:\n", + " component: port[4]\n", + " instance: tier_0[27]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[0]\n", + " instance: tier_1[25]\n", + " ep2:\n", + " component: port[5]\n", + " instance: tier_0[24]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[1]\n", + " instance: tier_1[25]\n", + " ep2:\n", + " component: port[5]\n", + " instance: tier_0[25]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[2]\n", + " instance: tier_1[25]\n", + " ep2:\n", + " component: port[5]\n", + " instance: tier_0[26]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[3]\n", + " instance: tier_1[25]\n", + " ep2:\n", + " component: port[5]\n", + " instance: tier_0[27]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[0]\n", + " instance: tier_1[26]\n", + " ep2:\n", + " component: port[6]\n", + " instance: tier_0[24]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[1]\n", + " instance: tier_1[26]\n", + " ep2:\n", + " component: port[6]\n", + " instance: tier_0[25]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[2]\n", + " instance: tier_1[26]\n", + " ep2:\n", + " component: port[6]\n", + " instance: tier_0[26]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[3]\n", + " instance: tier_1[26]\n", + " ep2:\n", + " component: port[6]\n", + " instance: tier_0[27]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[0]\n", + " instance: tier_1[27]\n", + " ep2:\n", + " component: port[7]\n", + " instance: tier_0[24]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[1]\n", + " instance: tier_1[27]\n", + " ep2:\n", + " component: port[7]\n", + " instance: tier_0[25]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[2]\n", + " instance: tier_1[27]\n", + " ep2:\n", + " component: port[7]\n", + " instance: tier_0[26]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[3]\n", + " instance: tier_1[27]\n", + " ep2:\n", + " component: port[7]\n", + " instance: tier_0[27]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[0]\n", + " instance: tier_1[28]\n", + " ep2:\n", + " component: port[4]\n", + " instance: tier_0[28]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[1]\n", + " instance: tier_1[28]\n", + " ep2:\n", + " component: port[4]\n", + " instance: tier_0[29]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[2]\n", + " instance: tier_1[28]\n", + " ep2:\n", + " component: port[4]\n", + " instance: tier_0[30]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[3]\n", + " instance: tier_1[28]\n", + " ep2:\n", + " component: port[4]\n", + " instance: tier_0[31]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[0]\n", + " instance: tier_1[29]\n", + " ep2:\n", + " component: port[5]\n", + " instance: tier_0[28]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[1]\n", + " instance: tier_1[29]\n", + " ep2:\n", + " component: port[5]\n", + " instance: tier_0[29]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[2]\n", + " instance: tier_1[29]\n", + " ep2:\n", + " component: port[5]\n", + " instance: tier_0[30]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[3]\n", + " instance: tier_1[29]\n", + " ep2:\n", + " component: port[5]\n", + " instance: tier_0[31]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[0]\n", + " instance: tier_1[30]\n", + " ep2:\n", + " component: port[6]\n", + " instance: tier_0[28]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[1]\n", + " instance: tier_1[30]\n", + " ep2:\n", + " component: port[6]\n", + " instance: tier_0[29]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[2]\n", + " instance: tier_1[30]\n", + " ep2:\n", + " component: port[6]\n", + " instance: tier_0[30]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[3]\n", + " instance: tier_1[30]\n", + " ep2:\n", + " component: port[6]\n", + " instance: tier_0[31]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[0]\n", + " instance: tier_1[31]\n", + " ep2:\n", + " component: port[7]\n", + " instance: tier_0[28]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[1]\n", + " instance: tier_1[31]\n", + " ep2:\n", + " component: port[7]\n", + " instance: tier_0[29]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[2]\n", + " instance: tier_1[31]\n", + " ep2:\n", + " component: port[7]\n", + " instance: tier_0[30]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[3]\n", + " instance: tier_1[31]\n", + " ep2:\n", + " component: port[7]\n", + " instance: tier_0[31]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[0]\n", + " instance: tier_2[0]\n", + " ep2:\n", + " component: port[4]\n", + " instance: tier_1[0]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[1]\n", + " instance: tier_2[0]\n", + " ep2:\n", + " component: port[4]\n", + " instance: tier_1[4]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[2]\n", + " instance: tier_2[0]\n", + " ep2:\n", + " component: port[4]\n", + " instance: tier_1[8]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[3]\n", + " instance: tier_2[0]\n", + " ep2:\n", + " component: port[4]\n", + " instance: tier_1[12]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[4]\n", + " instance: tier_2[0]\n", + " ep2:\n", + " component: port[4]\n", + " instance: tier_1[16]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[5]\n", + " instance: tier_2[0]\n", + " ep2:\n", + " component: port[4]\n", + " instance: tier_1[20]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[6]\n", + " instance: tier_2[0]\n", + " ep2:\n", + " component: port[4]\n", + " instance: tier_1[24]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[7]\n", + " instance: tier_2[0]\n", + " ep2:\n", + " component: port[4]\n", + " instance: tier_1[28]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[0]\n", + " instance: tier_2[1]\n", + " ep2:\n", + " component: port[5]\n", + " instance: tier_1[0]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[1]\n", + " instance: tier_2[1]\n", + " ep2:\n", + " component: port[5]\n", + " instance: tier_1[4]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[2]\n", + " instance: tier_2[1]\n", + " ep2:\n", + " component: port[5]\n", + " instance: tier_1[8]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[3]\n", + " instance: tier_2[1]\n", + " ep2:\n", + " component: port[5]\n", + " instance: tier_1[12]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[4]\n", + " instance: tier_2[1]\n", + " ep2:\n", + " component: port[5]\n", + " instance: tier_1[16]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[5]\n", + " instance: tier_2[1]\n", + " ep2:\n", + " component: port[5]\n", + " instance: tier_1[20]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[6]\n", + " instance: tier_2[1]\n", + " ep2:\n", + " component: port[5]\n", + " instance: tier_1[24]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[7]\n", + " instance: tier_2[1]\n", + " ep2:\n", + " component: port[5]\n", + " instance: tier_1[28]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[0]\n", + " instance: tier_2[2]\n", + " ep2:\n", + " component: port[6]\n", + " instance: tier_1[0]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[1]\n", + " instance: tier_2[2]\n", + " ep2:\n", + " component: port[6]\n", + " instance: tier_1[4]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[2]\n", + " instance: tier_2[2]\n", + " ep2:\n", + " component: port[6]\n", + " instance: tier_1[8]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[3]\n", + " instance: tier_2[2]\n", + " ep2:\n", + " component: port[6]\n", + " instance: tier_1[12]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[4]\n", + " instance: tier_2[2]\n", + " ep2:\n", + " component: port[6]\n", + " instance: tier_1[16]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[5]\n", + " instance: tier_2[2]\n", + " ep2:\n", + " component: port[6]\n", + " instance: tier_1[20]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[6]\n", + " instance: tier_2[2]\n", + " ep2:\n", + " component: port[6]\n", + " instance: tier_1[24]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[7]\n", + " instance: tier_2[2]\n", + " ep2:\n", + " component: port[6]\n", + " instance: tier_1[28]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[0]\n", + " instance: tier_2[3]\n", + " ep2:\n", + " component: port[7]\n", + " instance: tier_1[0]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[1]\n", + " instance: tier_2[3]\n", + " ep2:\n", + " component: port[7]\n", + " instance: tier_1[4]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[2]\n", + " instance: tier_2[3]\n", + " ep2:\n", + " component: port[7]\n", + " instance: tier_1[8]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[3]\n", + " instance: tier_2[3]\n", + " ep2:\n", + " component: port[7]\n", + " instance: tier_1[12]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[4]\n", + " instance: tier_2[3]\n", + " ep2:\n", + " component: port[7]\n", + " instance: tier_1[16]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[5]\n", + " instance: tier_2[3]\n", + " ep2:\n", + " component: port[7]\n", + " instance: tier_1[20]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[6]\n", + " instance: tier_2[3]\n", + " ep2:\n", + " component: port[7]\n", + " instance: tier_1[24]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[7]\n", + " instance: tier_2[3]\n", + " ep2:\n", + " component: port[7]\n", + " instance: tier_1[28]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[0]\n", + " instance: tier_2[4]\n", + " ep2:\n", + " component: port[4]\n", + " instance: tier_1[1]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[1]\n", + " instance: tier_2[4]\n", + " ep2:\n", + " component: port[4]\n", + " instance: tier_1[5]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[2]\n", + " instance: tier_2[4]\n", + " ep2:\n", + " component: port[4]\n", + " instance: tier_1[9]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[3]\n", + " instance: tier_2[4]\n", + " ep2:\n", + " component: port[4]\n", + " instance: tier_1[13]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[4]\n", + " instance: tier_2[4]\n", + " ep2:\n", + " component: port[4]\n", + " instance: tier_1[17]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[5]\n", + " instance: tier_2[4]\n", + " ep2:\n", + " component: port[4]\n", + " instance: tier_1[21]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[6]\n", + " instance: tier_2[4]\n", + " ep2:\n", + " component: port[4]\n", + " instance: tier_1[25]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[7]\n", + " instance: tier_2[4]\n", + " ep2:\n", + " component: port[4]\n", + " instance: tier_1[29]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[0]\n", + " instance: tier_2[5]\n", + " ep2:\n", + " component: port[5]\n", + " instance: tier_1[1]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[1]\n", + " instance: tier_2[5]\n", + " ep2:\n", + " component: port[5]\n", + " instance: tier_1[5]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[2]\n", + " instance: tier_2[5]\n", + " ep2:\n", + " component: port[5]\n", + " instance: tier_1[9]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[3]\n", + " instance: tier_2[5]\n", + " ep2:\n", + " component: port[5]\n", + " instance: tier_1[13]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[4]\n", + " instance: tier_2[5]\n", + " ep2:\n", + " component: port[5]\n", + " instance: tier_1[17]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[5]\n", + " instance: tier_2[5]\n", + " ep2:\n", + " component: port[5]\n", + " instance: tier_1[21]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[6]\n", + " instance: tier_2[5]\n", + " ep2:\n", + " component: port[5]\n", + " instance: tier_1[25]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[7]\n", + " instance: tier_2[5]\n", + " ep2:\n", + " component: port[5]\n", + " instance: tier_1[29]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[0]\n", + " instance: tier_2[6]\n", + " ep2:\n", + " component: port[6]\n", + " instance: tier_1[1]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[1]\n", + " instance: tier_2[6]\n", + " ep2:\n", + " component: port[6]\n", + " instance: tier_1[5]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[2]\n", + " instance: tier_2[6]\n", + " ep2:\n", + " component: port[6]\n", + " instance: tier_1[9]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[3]\n", + " instance: tier_2[6]\n", + " ep2:\n", + " component: port[6]\n", + " instance: tier_1[13]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[4]\n", + " instance: tier_2[6]\n", + " ep2:\n", + " component: port[6]\n", + " instance: tier_1[17]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[5]\n", + " instance: tier_2[6]\n", + " ep2:\n", + " component: port[6]\n", + " instance: tier_1[21]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[6]\n", + " instance: tier_2[6]\n", + " ep2:\n", + " component: port[6]\n", + " instance: tier_1[25]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[7]\n", + " instance: tier_2[6]\n", + " ep2:\n", + " component: port[6]\n", + " instance: tier_1[29]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[0]\n", + " instance: tier_2[7]\n", + " ep2:\n", + " component: port[7]\n", + " instance: tier_1[1]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[1]\n", + " instance: tier_2[7]\n", + " ep2:\n", + " component: port[7]\n", + " instance: tier_1[5]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[2]\n", + " instance: tier_2[7]\n", + " ep2:\n", + " component: port[7]\n", + " instance: tier_1[9]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[3]\n", + " instance: tier_2[7]\n", + " ep2:\n", + " component: port[7]\n", + " instance: tier_1[13]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[4]\n", + " instance: tier_2[7]\n", + " ep2:\n", + " component: port[7]\n", + " instance: tier_1[17]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[5]\n", + " instance: tier_2[7]\n", + " ep2:\n", + " component: port[7]\n", + " instance: tier_1[21]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[6]\n", + " instance: tier_2[7]\n", + " ep2:\n", + " component: port[7]\n", + " instance: tier_1[25]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[7]\n", + " instance: tier_2[7]\n", + " ep2:\n", + " component: port[7]\n", + " instance: tier_1[29]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[0]\n", + " instance: tier_2[8]\n", + " ep2:\n", + " component: port[4]\n", + " instance: tier_1[2]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[1]\n", + " instance: tier_2[8]\n", + " ep2:\n", + " component: port[4]\n", + " instance: tier_1[6]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[2]\n", + " instance: tier_2[8]\n", + " ep2:\n", + " component: port[4]\n", + " instance: tier_1[10]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[3]\n", + " instance: tier_2[8]\n", + " ep2:\n", + " component: port[4]\n", + " instance: tier_1[14]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[4]\n", + " instance: tier_2[8]\n", + " ep2:\n", + " component: port[4]\n", + " instance: tier_1[18]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[5]\n", + " instance: tier_2[8]\n", + " ep2:\n", + " component: port[4]\n", + " instance: tier_1[22]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[6]\n", + " instance: tier_2[8]\n", + " ep2:\n", + " component: port[4]\n", + " instance: tier_1[26]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[7]\n", + " instance: tier_2[8]\n", + " ep2:\n", + " component: port[4]\n", + " instance: tier_1[30]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[0]\n", + " instance: tier_2[9]\n", + " ep2:\n", + " component: port[5]\n", + " instance: tier_1[2]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[1]\n", + " instance: tier_2[9]\n", + " ep2:\n", + " component: port[5]\n", + " instance: tier_1[6]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[2]\n", + " instance: tier_2[9]\n", + " ep2:\n", + " component: port[5]\n", + " instance: tier_1[10]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[3]\n", + " instance: tier_2[9]\n", + " ep2:\n", + " component: port[5]\n", + " instance: tier_1[14]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[4]\n", + " instance: tier_2[9]\n", + " ep2:\n", + " component: port[5]\n", + " instance: tier_1[18]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[5]\n", + " instance: tier_2[9]\n", + " ep2:\n", + " component: port[5]\n", + " instance: tier_1[22]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[6]\n", + " instance: tier_2[9]\n", + " ep2:\n", + " component: port[5]\n", + " instance: tier_1[26]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[7]\n", + " instance: tier_2[9]\n", + " ep2:\n", + " component: port[5]\n", + " instance: tier_1[30]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[0]\n", + " instance: tier_2[10]\n", + " ep2:\n", + " component: port[6]\n", + " instance: tier_1[2]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[1]\n", + " instance: tier_2[10]\n", + " ep2:\n", + " component: port[6]\n", + " instance: tier_1[6]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[2]\n", + " instance: tier_2[10]\n", + " ep2:\n", + " component: port[6]\n", + " instance: tier_1[10]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[3]\n", + " instance: tier_2[10]\n", + " ep2:\n", + " component: port[6]\n", + " instance: tier_1[14]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[4]\n", + " instance: tier_2[10]\n", + " ep2:\n", + " component: port[6]\n", + " instance: tier_1[18]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[5]\n", + " instance: tier_2[10]\n", + " ep2:\n", + " component: port[6]\n", + " instance: tier_1[22]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[6]\n", + " instance: tier_2[10]\n", + " ep2:\n", + " component: port[6]\n", + " instance: tier_1[26]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[7]\n", + " instance: tier_2[10]\n", + " ep2:\n", + " component: port[6]\n", + " instance: tier_1[30]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[0]\n", + " instance: tier_2[11]\n", + " ep2:\n", + " component: port[7]\n", + " instance: tier_1[2]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[1]\n", + " instance: tier_2[11]\n", + " ep2:\n", + " component: port[7]\n", + " instance: tier_1[6]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[2]\n", + " instance: tier_2[11]\n", + " ep2:\n", + " component: port[7]\n", + " instance: tier_1[10]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[3]\n", + " instance: tier_2[11]\n", + " ep2:\n", + " component: port[7]\n", + " instance: tier_1[14]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[4]\n", + " instance: tier_2[11]\n", + " ep2:\n", + " component: port[7]\n", + " instance: tier_1[18]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[5]\n", + " instance: tier_2[11]\n", + " ep2:\n", + " component: port[7]\n", + " instance: tier_1[22]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[6]\n", + " instance: tier_2[11]\n", + " ep2:\n", + " component: port[7]\n", + " instance: tier_1[26]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[7]\n", + " instance: tier_2[11]\n", + " ep2:\n", + " component: port[7]\n", + " instance: tier_1[30]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[0]\n", + " instance: tier_2[12]\n", + " ep2:\n", + " component: port[4]\n", + " instance: tier_1[3]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[1]\n", + " instance: tier_2[12]\n", + " ep2:\n", + " component: port[4]\n", + " instance: tier_1[7]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[2]\n", + " instance: tier_2[12]\n", + " ep2:\n", + " component: port[4]\n", + " instance: tier_1[11]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[3]\n", + " instance: tier_2[12]\n", + " ep2:\n", + " component: port[4]\n", + " instance: tier_1[15]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[4]\n", + " instance: tier_2[12]\n", + " ep2:\n", + " component: port[4]\n", + " instance: tier_1[19]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[5]\n", + " instance: tier_2[12]\n", + " ep2:\n", + " component: port[4]\n", + " instance: tier_1[23]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[6]\n", + " instance: tier_2[12]\n", + " ep2:\n", + " component: port[4]\n", + " instance: tier_1[27]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[7]\n", + " instance: tier_2[12]\n", + " ep2:\n", + " component: port[4]\n", + " instance: tier_1[31]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[0]\n", + " instance: tier_2[13]\n", + " ep2:\n", + " component: port[5]\n", + " instance: tier_1[3]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[1]\n", + " instance: tier_2[13]\n", + " ep2:\n", + " component: port[5]\n", + " instance: tier_1[7]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[2]\n", + " instance: tier_2[13]\n", + " ep2:\n", + " component: port[5]\n", + " instance: tier_1[11]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[3]\n", + " instance: tier_2[13]\n", + " ep2:\n", + " component: port[5]\n", + " instance: tier_1[15]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[4]\n", + " instance: tier_2[13]\n", + " ep2:\n", + " component: port[5]\n", + " instance: tier_1[19]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[5]\n", + " instance: tier_2[13]\n", + " ep2:\n", + " component: port[5]\n", + " instance: tier_1[23]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[6]\n", + " instance: tier_2[13]\n", + " ep2:\n", + " component: port[5]\n", + " instance: tier_1[27]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[7]\n", + " instance: tier_2[13]\n", + " ep2:\n", + " component: port[5]\n", + " instance: tier_1[31]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[0]\n", + " instance: tier_2[14]\n", + " ep2:\n", + " component: port[6]\n", + " instance: tier_1[3]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[1]\n", + " instance: tier_2[14]\n", + " ep2:\n", + " component: port[6]\n", + " instance: tier_1[7]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[2]\n", + " instance: tier_2[14]\n", + " ep2:\n", + " component: port[6]\n", + " instance: tier_1[11]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[3]\n", + " instance: tier_2[14]\n", + " ep2:\n", + " component: port[6]\n", + " instance: tier_1[15]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[4]\n", + " instance: tier_2[14]\n", + " ep2:\n", + " component: port[6]\n", + " instance: tier_1[19]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[5]\n", + " instance: tier_2[14]\n", + " ep2:\n", + " component: port[6]\n", + " instance: tier_1[23]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[6]\n", + " instance: tier_2[14]\n", + " ep2:\n", + " component: port[6]\n", + " instance: tier_1[27]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[7]\n", + " instance: tier_2[14]\n", + " ep2:\n", + " component: port[6]\n", + " instance: tier_1[31]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[0]\n", + " instance: tier_2[15]\n", + " ep2:\n", + " component: port[7]\n", + " instance: tier_1[3]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[1]\n", + " instance: tier_2[15]\n", + " ep2:\n", + " component: port[7]\n", + " instance: tier_1[7]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[2]\n", + " instance: tier_2[15]\n", + " ep2:\n", + " component: port[7]\n", + " instance: tier_1[11]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[3]\n", + " instance: tier_2[15]\n", + " ep2:\n", + " component: port[7]\n", + " instance: tier_1[15]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[4]\n", + " instance: tier_2[15]\n", + " ep2:\n", + " component: port[7]\n", + " instance: tier_1[19]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[5]\n", + " instance: tier_2[15]\n", + " ep2:\n", + " component: port[7]\n", + " instance: tier_1[23]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[6]\n", + " instance: tier_2[15]\n", + " ep2:\n", + " component: port[7]\n", + " instance: tier_1[27]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "- ep1:\n", + " component: port[7]\n", + " instance: tier_2[15]\n", + " ep2:\n", + " component: port[7]\n", + " instance: tier_1[31]\n", + " link: tier_1_link\n", + " scheme: one2one\n", + "instances:\n", + "- count: 64\n", + " device: server\n", + " name: server\n", + "- count: 32\n", + " device: switch\n", + " name: tier_0\n", + "- count: 32\n", + " device: switch\n", + " name: tier_1\n", + "- count: 16\n", + " device: switch\n", + " name: tier_2\n", + "links:\n", + "- description: Link characteristics for connectivity between host and tier 0 switches\n", + " name: tier_0_link\n", + " physical:\n", + " bandwidth:\n", + " choice: gigabits_per_second\n", + " gigabits_per_second: 100\n", + "- description: Link characteristics for connectivity between tier 0 and tier 1 switches\n", + " name: tier_1_link\n", + " physical:\n", + " bandwidth:\n", + " choice: gigabits_per_second\n", + " gigabits_per_second: 200\n", + "- description: Link characteristics for connectivity between tier 1 and tier 2 switches\n", + " name: tier_2_link\n", + " physical:\n", + " bandwidth:\n", + " choice: gigabits_per_second\n", + " gigabits_per_second: 400\n", + "name: clos-fat-tree-fabric\n", + "\n" + ] + } + ], + "source": [ + "server = Server()\n", + "switch = Switch(port_count=8)\n", + "infrastructure = ClosFatTreeFabric(switch, server, 3,[])\n", + "astra.configuration.infragraph.infrastructure.deserialize(infrastructure.serialize())\n", + "print(astra.configuration.infragraph.infrastructure)" + ] + }, + { + "cell_type": "markdown", + "id": "4b090b75", + "metadata": {}, + "source": [ + "##### Initialize the Infragraph service, display the fabric topology, and retrieve/set the total number of NPUs to generate the collective" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "d0db31e7", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "╙── server.16.mgmt.0\n", + " │\n", + " server.16.cpu.0\n", + " │\n", + " server.16.pciesw.0\n", + " ├── server.16.xpu.0\n", + " │ │\n", + " │ server.16.nvlsw.0\n", + " │ │\n", + " │ server.16.xpu.1 ─ server.16.pciesw.0\n", + " ├── server.16.nic.0\n", + " │ │\n", + " │ tier_0.8.port.0\n", + " │ │\n", + " │ tier_0.8.asic.0\n", + " │ ├── tier_0.8.port.1\n", + " │ │ │\n", + " │ │ server.16.nic.1 ─ server.16.pciesw.0\n", + " │ ├── tier_0.8.port.2\n", + " │ │ │\n", + " │ │ server.17.nic.0\n", + " │ │ │\n", + " │ │ server.17.pciesw.0\n", + " │ │ ├── server.17.xpu.0\n", + " │ │ │ │\n", + " │ │ │ server.17.nvlsw.0\n", + " │ │ │ │\n", + " │ │ │ server.17.xpu.1 ─ server.17.pciesw.0\n", + " │ │ ├── server.17.cpu.0\n", + " │ │ │ │\n", + " │ │ │ server.17.mgmt.0\n", + " │ │ ├── server.17.nic.1\n", + " │ │ │ │\n", + " │ │ │ tier_0.8.port.3 ─ tier_0.8.asic.0\n", + " │ │ └── ...\n", + " │ ├── tier_0.8.port.4\n", + " │ │ │\n", + " │ │ tier_1.8.port.0\n", + " │ │ │\n", + " │ │ tier_1.8.asic.0\n", + " │ │ ├── tier_1.8.port.1\n", + " │ │ │ │\n", + " │ │ │ tier_0.9.port.4\n", + " │ │ │ │\n", + " │ │ │ tier_0.9.asic.0\n", + " │ │ │ ├── tier_0.9.port.0\n", + " │ │ │ │ │\n", + " │ │ │ │ server.18.nic.0\n", + " │ │ │ │ │\n", + " │ │ │ │ server.18.pciesw.0\n", + " │ │ │ │ ├── server.18.xpu.0\n", + " │ │ │ │ │ │\n", + " │ │ │ │ │ server.18.nvlsw.0\n", + " │ │ │ │ │ │\n", + " │ │ │ │ │ server.18.xpu.1 ─ server.18.pciesw.0\n", + " │ │ │ │ ├── server.18.cpu.0\n", + " │ │ │ │ │ │\n", + " │ │ │ │ │ server.18.mgmt.0\n", + " │ │ │ │ ├── server.18.nic.1\n", + " │ │ │ │ │ │\n", + " │ │ │ │ │ tier_0.9.port.1 ─ tier_0.9.asic.0\n", + " │ │ │ │ └── ...\n", + " │ │ │ ├── tier_0.9.port.2\n", + " │ │ │ │ │\n", + " │ │ │ │ server.19.nic.0\n", + " │ │ │ │ │\n", + " │ │ │ │ server.19.pciesw.0\n", + " │ │ │ │ ├── server.19.xpu.0\n", + " │ │ │ │ │ │\n", + " │ │ │ │ │ server.19.nvlsw.0\n", + " │ │ │ │ │ │\n", + " │ │ │ │ │ server.19.xpu.1 ─ server.19.pciesw.0\n", + " │ │ │ │ ├── server.19.cpu.0\n", + " │ │ │ │ │ │\n", + " │ │ │ │ │ server.19.mgmt.0\n", + " │ │ │ │ ├── server.19.nic.1\n", + " │ │ │ │ │ │\n", + " │ │ │ │ │ tier_0.9.port.3 ─ tier_0.9.asic.0\n", + " │ │ │ │ └── ...\n", + " │ │ │ ├── tier_0.9.port.5\n", + " │ │ │ │ │\n", + " │ │ │ │ tier_1.9.port.1\n", + " │ │ │ │ │\n", + " │ │ │ │ tier_1.9.asic.0\n", + " │ │ │ │ ├── tier_1.9.port.0\n", + " │ │ │ │ │ │\n", + " │ │ │ │ │ tier_0.8.port.5 ─ tier_0.8.asic.0\n", + " │ │ │ │ ├── tier_1.9.port.2\n", + " │ │ │ │ │ │\n", + " │ │ │ │ │ tier_0.10.port.5\n", + " │ │ │ │ │ │\n", + " │ │ │ │ │ tier_0.10.asic.0\n", + " │ │ │ │ │ ├── tier_0.10.port.0\n", + " │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ server.20.nic.0\n", + " │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ server.20.pciesw.0\n", + " │ │ │ │ │ │ ├── server.20.xpu.0\n", + " │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ server.20.nvlsw.0\n", + " │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ server.20.xpu.1 ─ server.20.pciesw.0\n", + " │ │ │ │ │ │ ├── server.20.cpu.0\n", + " │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ server.20.mgmt.0\n", + " │ │ │ │ │ │ ├── server.20.nic.1\n", + " │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ tier_0.10.port.1 ─ tier_0.10.asic.0\n", + " │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ ├── tier_0.10.port.2\n", + " │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ server.21.nic.0\n", + " │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ server.21.pciesw.0\n", + " │ │ │ │ │ │ ├── server.21.xpu.0\n", + " │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ server.21.nvlsw.0\n", + " │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ server.21.xpu.1 ─ server.21.pciesw.0\n", + " │ │ │ │ │ │ ├── server.21.cpu.0\n", + " │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ server.21.mgmt.0\n", + " │ │ │ │ │ │ ├── server.21.nic.1\n", + " │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ tier_0.10.port.3 ─ tier_0.10.asic.0\n", + " │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ ├── tier_0.10.port.4\n", + " │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ tier_1.8.port.2 ─ tier_1.8.asic.0\n", + " │ │ │ │ │ ├── tier_0.10.port.6\n", + " │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ tier_1.10.port.2\n", + " │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ tier_1.10.asic.0\n", + " │ │ │ │ │ │ ├── tier_1.10.port.0\n", + " │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ tier_0.8.port.6 ─ tier_0.8.asic.0\n", + " │ │ │ │ │ │ ├── tier_1.10.port.1\n", + " │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ tier_0.9.port.6 ─ tier_0.9.asic.0\n", + " │ │ │ │ │ │ ├── tier_1.10.port.3\n", + " │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ tier_0.11.port.6\n", + " │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ tier_0.11.asic.0\n", + " │ │ │ │ │ │ │ ├── tier_0.11.port.0\n", + " │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ server.22.nic.0\n", + " │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ server.22.pciesw.0\n", + " │ │ │ │ │ │ │ │ ├── server.22.xpu.0\n", + " │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ server.22.nvlsw.0\n", + " │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ server.22.xpu.1 ─ server.22.pciesw.0\n", + " │ │ │ │ │ │ │ │ ├── server.22.cpu.0\n", + " │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ server.22.mgmt.0\n", + " │ │ │ │ │ │ │ │ ├── server.22.nic.1\n", + " │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ tier_0.11.port.1 ─ tier_0.11.asic.0\n", + " │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ ├── tier_0.11.port.2\n", + " │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ server.23.nic.0\n", + " │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ server.23.pciesw.0\n", + " │ │ │ │ │ │ │ │ ├── server.23.xpu.0\n", + " │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ server.23.nvlsw.0\n", + " │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ server.23.xpu.1 ─ server.23.pciesw.0\n", + " │ │ │ │ │ │ │ │ ├── server.23.cpu.0\n", + " │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ server.23.mgmt.0\n", + " │ │ │ │ │ │ │ │ ├── server.23.nic.1\n", + " │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ tier_0.11.port.3 ─ tier_0.11.asic.0\n", + " │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ ├── tier_0.11.port.4\n", + " │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ tier_1.8.port.3 ─ tier_1.8.asic.0\n", + " │ │ │ │ │ │ │ ├── tier_0.11.port.5\n", + " │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ tier_1.9.port.3 ─ tier_1.9.asic.0\n", + " │ │ │ │ │ │ │ ├── tier_0.11.port.7\n", + " │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ tier_1.11.port.3\n", + " │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ tier_1.11.asic.0\n", + " │ │ │ │ │ │ │ │ ├── tier_1.11.port.0\n", + " │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ tier_0.8.port.7 ─ tier_0.8.asic.0\n", + " │ │ │ │ │ │ │ │ ├── tier_1.11.port.1\n", + " │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ tier_0.9.port.7 ─ tier_0.9.asic.0\n", + " │ │ │ │ │ │ │ │ ├── tier_1.11.port.2\n", + " │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ tier_0.10.port.7 ─ tier_0.10.asic.0\n", + " │ │ │ │ │ │ │ │ ├── tier_1.11.port.4\n", + " │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ tier_2.12.port.2\n", + " │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ tier_2.12.asic.0\n", + " │ │ │ │ │ │ │ │ │ ├── tier_2.12.port.0\n", + " │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ tier_1.3.port.4\n", + " │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ tier_1.3.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ ├── tier_1.3.port.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ tier_0.0.port.7\n", + " │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ tier_0.0.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.0.port.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ server.0.nic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ server.0.pciesw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ ├── server.0.xpu.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ server.0.nvlsw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ server.0.xpu.1 ─ server.0.pciesw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ ├── server.0.cpu.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ server.0.mgmt.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ ├── server.0.nic.1\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.0.port.1 ─ tier_0.0.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.0.port.2\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ server.1.nic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ server.1.pciesw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ ├── server.1.xpu.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ server.1.nvlsw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ server.1.xpu.1 ─ server.1.pciesw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ ├── server.1.cpu.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ server.1.mgmt.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ ├── server.1.nic.1\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.0.port.3 ─ tier_0.0.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.0.port.4\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ tier_1.0.port.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ tier_1.0.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.0.port.1\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.1.port.4\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.1.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.1.port.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.2.nic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.2.pciesw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.2.xpu.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.2.nvlsw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.2.xpu.1 ─ server.2.pciesw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.2.cpu.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.2.mgmt.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.2.nic.1\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.1.port.1 ─ tier_0.1.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.1.port.2\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.3.nic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.3.pciesw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.3.xpu.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.3.nvlsw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.3.xpu.1 ─ server.3.pciesw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.3.cpu.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.3.mgmt.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.3.nic.1\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.1.port.3 ─ tier_0.1.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.1.port.5\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.1.port.1\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.1.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.1.port.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.0.port.5 ─ tier_0.0.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.1.port.2\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.2.port.5\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.2.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.2.port.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.4.nic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.4.pciesw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.4.xpu.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.4.nvlsw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.4.xpu.1 ─ server.4.pciesw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.4.cpu.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.4.mgmt.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.4.nic.1\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.2.port.1 ─ tier_0.2.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.2.port.2\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.5.nic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.5.pciesw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.5.xpu.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.5.nvlsw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.5.xpu.1 ─ server.5.pciesw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.5.cpu.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.5.mgmt.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.5.nic.1\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.2.port.3 ─ tier_0.2.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.2.port.4\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.0.port.2 ─ tier_1.0.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.2.port.6\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.2.port.2\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.2.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.2.port.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.0.port.6 ─ tier_0.0.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.2.port.1\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.1.port.6 ─ tier_0.1.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.2.port.3\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.3.port.6\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.3.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.3.port.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.6.nic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.6.pciesw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.6.xpu.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.6.nvlsw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.6.xpu.1 ─ server.6.pciesw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.6.cpu.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.6.mgmt.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.6.nic.1\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.3.port.1 ─ tier_0.3.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.3.port.2\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.7.nic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.7.pciesw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.7.xpu.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.7.nvlsw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.7.xpu.1 ─ server.7.pciesw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.7.cpu.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.7.mgmt.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.7.nic.1\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.3.port.3 ─ tier_0.3.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.3.port.4\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.0.port.3 ─ tier_1.0.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.3.port.5\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.1.port.3 ─ tier_1.1.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.3.port.7\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.3.port.3 ─ tier_1.3.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.2.port.4\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_2.8.port.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_2.8.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.8.port.1\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.6.port.4\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.6.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.6.port.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.4.port.6\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.4.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.4.port.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.8.nic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.8.pciesw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.8.xpu.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.8.nvlsw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.8.xpu.1 ─ server.8.pciesw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.8.cpu.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.8.mgmt.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.8.nic.1\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.4.port.1 ─ tier_0.4.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.4.port.2\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.9.nic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.9.pciesw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.9.xpu.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.9.nvlsw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.9.xpu.1 ─ server.9.pciesw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.9.cpu.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.9.mgmt.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.9.nic.1\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.4.port.3 ─ tier_0.4.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.4.port.4\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.4.port.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.4.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.4.port.1\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.5.port.4\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.5.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.5.port.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.10.nic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.10.pciesw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.10.xpu.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.10.nvlsw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.10.xpu.1 ─ server.10.pciesw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.10.cpu.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.10.mgmt.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.10.nic.1\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.5.port.1 ─ tier_0.5.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.5.port.2\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.11.nic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.11.pciesw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.11.xpu.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.11.nvlsw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.11.xpu.1 ─ server.11.pciesw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.11.cpu.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.11.mgmt.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.11.nic.1\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.5.port.3 ─ tier_0.5.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.5.port.5\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.5.port.1\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.5.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.5.port.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.4.port.5 ─ tier_0.4.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.5.port.2\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.6.port.5\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.6.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.6.port.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.12.nic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.12.pciesw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.12.xpu.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.12.nvlsw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.12.xpu.1 ─ server.12.pciesw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.12.cpu.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.12.mgmt.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.12.nic.1\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.6.port.1 ─ tier_0.6.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.6.port.2\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.13.nic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.13.pciesw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.13.xpu.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.13.nvlsw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.13.xpu.1 ─ server.13.pciesw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.13.cpu.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.13.mgmt.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.13.nic.1\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.6.port.3 ─ tier_0.6.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.6.port.4\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.4.port.2 ─ tier_1.4.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.6.port.6\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.6.port.2 ─ tier_1.6.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.6.port.7\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.7.port.2\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.7.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.7.port.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.4.port.7 ─ tier_0.4.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.7.port.1\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.5.port.7 ─ tier_0.5.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.7.port.3\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.7.port.7\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.7.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.7.port.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.14.nic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.14.pciesw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.14.xpu.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.14.nvlsw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.14.xpu.1 ─ server.14.pciesw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.14.cpu.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.14.mgmt.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.14.nic.1\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.7.port.1 ─ tier_0.7.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.7.port.2\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.15.nic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.15.pciesw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.15.xpu.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.15.nvlsw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.15.xpu.1 ─ server.15.pciesw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.15.cpu.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.15.mgmt.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.15.nic.1\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.7.port.3 ─ tier_0.7.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.7.port.4\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.4.port.3 ─ tier_1.4.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.7.port.5\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.5.port.3 ─ tier_1.5.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.7.port.6\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.6.port.3 ─ tier_1.6.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.7.port.4\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_2.12.port.1 ─ tier_2.12.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.7.port.5\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_2.13.port.1\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_2.13.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.13.port.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.3.port.5 ─ tier_1.3.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.13.port.2\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.11.port.5 ─ tier_1.11.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.13.port.3\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.15.port.5\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.15.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.15.port.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.12.port.7\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.12.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.12.port.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.24.nic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.24.pciesw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.24.xpu.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.24.nvlsw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.24.xpu.1 ─ server.24.pciesw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.24.cpu.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.24.mgmt.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.24.nic.1\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.12.port.1 ─ tier_0.12.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.12.port.2\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.25.nic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.25.pciesw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.25.xpu.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.25.nvlsw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.25.xpu.1 ─ server.25.pciesw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.25.cpu.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.25.mgmt.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.25.nic.1\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.12.port.3 ─ tier_0.12.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.12.port.4\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.12.port.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.12.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.12.port.1\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.13.port.4\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.13.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.13.port.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.26.nic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.26.pciesw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.26.xpu.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.26.nvlsw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.26.xpu.1 ─ server.26.pciesw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.26.cpu.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.26.mgmt.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.26.nic.1\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.13.port.1 ─ tier_0.13.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.13.port.2\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.27.nic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.27.pciesw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.27.xpu.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.27.nvlsw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.27.xpu.1 ─ server.27.pciesw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.27.cpu.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.27.mgmt.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.27.nic.1\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.13.port.3 ─ tier_0.13.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.13.port.5\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.13.port.1\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.13.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.13.port.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.12.port.5 ─ tier_0.12.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.13.port.2\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.14.port.5\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.14.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.14.port.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.28.nic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.28.pciesw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.28.xpu.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.28.nvlsw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.28.xpu.1 ─ server.28.pciesw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.28.cpu.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.28.mgmt.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.28.nic.1\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.14.port.1 ─ tier_0.14.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.14.port.2\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.29.nic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.29.pciesw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.29.xpu.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.29.nvlsw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.29.xpu.1 ─ server.29.pciesw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.29.cpu.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.29.mgmt.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.29.nic.1\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.14.port.3 ─ tier_0.14.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.14.port.4\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.12.port.2 ─ tier_1.12.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.14.port.6\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.14.port.2\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.14.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.14.port.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.12.port.6 ─ tier_0.12.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.14.port.1\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.13.port.6 ─ tier_0.13.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.14.port.3\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.15.port.6\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.15.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.15.port.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.30.nic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.30.pciesw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.30.xpu.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.30.nvlsw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.30.xpu.1 ─ server.30.pciesw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.30.cpu.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.30.mgmt.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.30.nic.1\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.15.port.1 ─ tier_0.15.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.15.port.2\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.31.nic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.31.pciesw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.31.xpu.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.31.nvlsw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.31.xpu.1 ─ server.31.pciesw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.31.cpu.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.31.mgmt.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.31.nic.1\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.15.port.3 ─ tier_0.15.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.15.port.4\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.12.port.3 ─ tier_1.12.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.15.port.5\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.13.port.3 ─ tier_1.13.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.15.port.7\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.15.port.3 ─ tier_1.15.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.14.port.4\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_2.8.port.3 ─ tier_2.8.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.14.port.5\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_2.9.port.3\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_2.9.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.9.port.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.2.port.5 ─ tier_1.2.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.9.port.1\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.6.port.5 ─ tier_1.6.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.9.port.2\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.10.port.5 ─ tier_1.10.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.9.port.4\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.18.port.5\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.18.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.18.port.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.16.port.6\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.16.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.16.port.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.32.nic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.32.pciesw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.32.xpu.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.32.nvlsw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.32.xpu.1 ─ server.32.pciesw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.32.cpu.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.32.mgmt.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.32.nic.1\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.16.port.1 ─ tier_0.16.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.16.port.2\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.33.nic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.33.pciesw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.33.xpu.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.33.nvlsw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.33.xpu.1 ─ server.33.pciesw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.33.cpu.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.33.mgmt.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.33.nic.1\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.16.port.3 ─ tier_0.16.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.16.port.4\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.16.port.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.16.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.16.port.1\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.17.port.4\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.17.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.17.port.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.34.nic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.34.pciesw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.34.xpu.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.34.nvlsw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.34.xpu.1 ─ server.34.pciesw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.34.cpu.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.34.mgmt.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.34.nic.1\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.17.port.1 ─ tier_0.17.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.17.port.2\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.35.nic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.35.pciesw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.35.xpu.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.35.nvlsw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.35.xpu.1 ─ server.35.pciesw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.35.cpu.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.35.mgmt.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.35.nic.1\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.17.port.3 ─ tier_0.17.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.17.port.5\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.17.port.1\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.17.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.17.port.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.16.port.5 ─ tier_0.16.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.17.port.2\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.18.port.5\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.18.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.18.port.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.36.nic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.36.pciesw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.36.xpu.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.36.nvlsw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.36.xpu.1 ─ server.36.pciesw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.36.cpu.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.36.mgmt.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.36.nic.1\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.18.port.1 ─ tier_0.18.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.18.port.2\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.37.nic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.37.pciesw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.37.xpu.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.37.nvlsw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.37.xpu.1 ─ server.37.pciesw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.37.cpu.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.37.mgmt.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.37.nic.1\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.18.port.3 ─ tier_0.18.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.18.port.4\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.16.port.2 ─ tier_1.16.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.18.port.6\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.18.port.2 ─ tier_1.18.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.18.port.7\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.19.port.2\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.19.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.19.port.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.16.port.7 ─ tier_0.16.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.19.port.1\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.17.port.7 ─ tier_0.17.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.19.port.3\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.19.port.7\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.19.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.19.port.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.38.nic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.38.pciesw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.38.xpu.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.38.nvlsw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.38.xpu.1 ─ server.38.pciesw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.38.cpu.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.38.mgmt.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.38.nic.1\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.19.port.1 ─ tier_0.19.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.19.port.2\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.39.nic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.39.pciesw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.39.xpu.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.39.nvlsw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.39.xpu.1 ─ server.39.pciesw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.39.cpu.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.39.mgmt.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.39.nic.1\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.19.port.3 ─ tier_0.19.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.19.port.4\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.16.port.3 ─ tier_1.16.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.19.port.5\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.17.port.3 ─ tier_1.17.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.19.port.6\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.18.port.3 ─ tier_1.18.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.19.port.4\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_2.12.port.4 ─ tier_2.12.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.19.port.5\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_2.13.port.4 ─ tier_2.13.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.19.port.6\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_2.14.port.4\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_2.14.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.14.port.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.3.port.6 ─ tier_1.3.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.14.port.1\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.7.port.6 ─ tier_1.7.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.14.port.2\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.11.port.6 ─ tier_1.11.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.14.port.3\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.15.port.6 ─ tier_1.15.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.14.port.5\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.23.port.6\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.23.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.23.port.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.20.port.7\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.20.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.20.port.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.40.nic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.40.pciesw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.40.xpu.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.40.nvlsw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.40.xpu.1 ─ server.40.pciesw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.40.cpu.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.40.mgmt.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.40.nic.1\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.20.port.1 ─ tier_0.20.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.20.port.2\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.41.nic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.41.pciesw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.41.xpu.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.41.nvlsw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.41.xpu.1 ─ server.41.pciesw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.41.cpu.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.41.mgmt.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.41.nic.1\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.20.port.3 ─ tier_0.20.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.20.port.4\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.20.port.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.20.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.20.port.1\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.21.port.4\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.21.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.21.port.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.42.nic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.42.pciesw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.42.xpu.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.42.nvlsw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.42.xpu.1 ─ server.42.pciesw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.42.cpu.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.42.mgmt.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.42.nic.1\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.21.port.1 ─ tier_0.21.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.21.port.2\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.43.nic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.43.pciesw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.43.xpu.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.43.nvlsw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.43.xpu.1 ─ server.43.pciesw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.43.cpu.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.43.mgmt.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.43.nic.1\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.21.port.3 ─ tier_0.21.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.21.port.5\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.21.port.1\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.21.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.21.port.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.20.port.5 ─ tier_0.20.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.21.port.2\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.22.port.5\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.22.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.22.port.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.44.nic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.44.pciesw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.44.xpu.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.44.nvlsw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.44.xpu.1 ─ server.44.pciesw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.44.cpu.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.44.mgmt.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.44.nic.1\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.22.port.1 ─ tier_0.22.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.22.port.2\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.45.nic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.45.pciesw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.45.xpu.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.45.nvlsw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.45.xpu.1 ─ server.45.pciesw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.45.cpu.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.45.mgmt.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.45.nic.1\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.22.port.3 ─ tier_0.22.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.22.port.4\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.20.port.2 ─ tier_1.20.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.22.port.6\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.22.port.2\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.22.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.22.port.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.20.port.6 ─ tier_0.20.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.22.port.1\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.21.port.6 ─ tier_0.21.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.22.port.3\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.23.port.6\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.23.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.23.port.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.46.nic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.46.pciesw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.46.xpu.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.46.nvlsw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.46.xpu.1 ─ server.46.pciesw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.46.cpu.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.46.mgmt.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.46.nic.1\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.23.port.1 ─ tier_0.23.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.23.port.2\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.47.nic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.47.pciesw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.47.xpu.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.47.nvlsw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.47.xpu.1 ─ server.47.pciesw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.47.cpu.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.47.mgmt.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.47.nic.1\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.23.port.3 ─ tier_0.23.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.23.port.4\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.20.port.3 ─ tier_1.20.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.23.port.5\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.21.port.3 ─ tier_1.21.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.23.port.7\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.23.port.3 ─ tier_1.23.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.22.port.4\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_2.8.port.5 ─ tier_2.8.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.22.port.5\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_2.9.port.5 ─ tier_2.9.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.22.port.6\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_2.10.port.5\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_2.10.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.10.port.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.2.port.6 ─ tier_1.2.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.10.port.1\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.6.port.6 ─ tier_1.6.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.10.port.2\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.10.port.6 ─ tier_1.10.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.10.port.3\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.14.port.6 ─ tier_1.14.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.10.port.4\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.18.port.6 ─ tier_1.18.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.10.port.6\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.26.port.6\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.26.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.26.port.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.24.port.6\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.24.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.24.port.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.48.nic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.48.pciesw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.48.xpu.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.48.nvlsw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.48.xpu.1 ─ server.48.pciesw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.48.cpu.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.48.mgmt.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.48.nic.1\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.24.port.1 ─ tier_0.24.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.24.port.2\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.49.nic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.49.pciesw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.49.xpu.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.49.nvlsw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.49.xpu.1 ─ server.49.pciesw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.49.cpu.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.49.mgmt.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.49.nic.1\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.24.port.3 ─ tier_0.24.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.24.port.4\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.24.port.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.24.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.24.port.1\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.25.port.4\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.25.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.25.port.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.50.nic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.50.pciesw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.50.xpu.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.50.nvlsw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.50.xpu.1 ─ server.50.pciesw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.50.cpu.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.50.mgmt.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.50.nic.1\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.25.port.1 ─ tier_0.25.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.25.port.2\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.51.nic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.51.pciesw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.51.xpu.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.51.nvlsw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.51.xpu.1 ─ server.51.pciesw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.51.cpu.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.51.mgmt.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.51.nic.1\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.25.port.3 ─ tier_0.25.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.25.port.5\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.25.port.1\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.25.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.25.port.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.24.port.5 ─ tier_0.24.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.25.port.2\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.26.port.5\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.26.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.26.port.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.52.nic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.52.pciesw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.52.xpu.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.52.nvlsw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.52.xpu.1 ─ server.52.pciesw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.52.cpu.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.52.mgmt.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.52.nic.1\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.26.port.1 ─ tier_0.26.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.26.port.2\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.53.nic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.53.pciesw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.53.xpu.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.53.nvlsw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.53.xpu.1 ─ server.53.pciesw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.53.cpu.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.53.mgmt.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.53.nic.1\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.26.port.3 ─ tier_0.26.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.26.port.4\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.24.port.2 ─ tier_1.24.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.26.port.6\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.26.port.2 ─ tier_1.26.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.26.port.7\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.27.port.2\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.27.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.27.port.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.24.port.7 ─ tier_0.24.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.27.port.1\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.25.port.7 ─ tier_0.25.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.27.port.3\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.27.port.7\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.27.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.27.port.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.54.nic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.54.pciesw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.54.xpu.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.54.nvlsw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.54.xpu.1 ─ server.54.pciesw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.54.cpu.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.54.mgmt.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.54.nic.1\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.27.port.1 ─ tier_0.27.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.27.port.2\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.55.nic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.55.pciesw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.55.xpu.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.55.nvlsw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.55.xpu.1 ─ server.55.pciesw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.55.cpu.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.55.mgmt.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.55.nic.1\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.27.port.3 ─ tier_0.27.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.27.port.4\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.24.port.3 ─ tier_1.24.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.27.port.5\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.25.port.3 ─ tier_1.25.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.27.port.6\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.26.port.3 ─ tier_1.26.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.27.port.4\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_2.12.port.6 ─ tier_2.12.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.27.port.5\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_2.13.port.6 ─ tier_2.13.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.27.port.6\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_2.14.port.6 ─ tier_2.14.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── tier_1.27.port.7\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_2.15.port.6\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_2.15.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.15.port.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.3.port.7 ─ tier_1.3.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.15.port.1\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.7.port.7 ─ tier_1.7.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.15.port.2\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.11.port.7 ─ tier_1.11.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.15.port.3\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.15.port.7 ─ tier_1.15.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.15.port.4\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.19.port.7 ─ tier_1.19.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.15.port.5\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.23.port.7 ─ tier_1.23.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── tier_2.15.port.7\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.31.port.7\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.31.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.31.port.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.28.port.7\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.28.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.28.port.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.56.nic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.56.pciesw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.56.xpu.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.56.nvlsw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.56.xpu.1 ─ server.56.pciesw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.56.cpu.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.56.mgmt.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.56.nic.1\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.28.port.1 ─ tier_0.28.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.28.port.2\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.57.nic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.57.pciesw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.57.xpu.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.57.nvlsw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.57.xpu.1 ─ server.57.pciesw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.57.cpu.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.57.mgmt.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.57.nic.1\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.28.port.3 ─ tier_0.28.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.28.port.4\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.28.port.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.28.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.28.port.1\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.29.port.4\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.29.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.29.port.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.58.nic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.58.pciesw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.58.xpu.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.58.nvlsw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.58.xpu.1 ─ server.58.pciesw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.58.cpu.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.58.mgmt.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.58.nic.1\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.29.port.1 ─ tier_0.29.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.29.port.2\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.59.nic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.59.pciesw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.59.xpu.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.59.nvlsw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.59.xpu.1 ─ server.59.pciesw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.59.cpu.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.59.mgmt.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.59.nic.1\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.29.port.3 ─ tier_0.29.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.29.port.5\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.29.port.1\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.29.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.29.port.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.28.port.5 ─ tier_0.28.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.29.port.2\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.30.port.5\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.30.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.30.port.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.60.nic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.60.pciesw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.60.xpu.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.60.nvlsw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.60.xpu.1 ─ server.60.pciesw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.60.cpu.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.60.mgmt.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.60.nic.1\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.30.port.1 ─ tier_0.30.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.30.port.2\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.61.nic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.61.pciesw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.61.xpu.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.61.nvlsw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.61.xpu.1 ─ server.61.pciesw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.61.cpu.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.61.mgmt.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.61.nic.1\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.30.port.3 ─ tier_0.30.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.30.port.4\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.28.port.2 ─ tier_1.28.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.30.port.6\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.30.port.2\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.30.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.30.port.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.28.port.6 ─ tier_0.28.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.30.port.1\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.29.port.6 ─ tier_0.29.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.30.port.3\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.31.port.6\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.31.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.31.port.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.62.nic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.62.pciesw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.62.xpu.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.62.nvlsw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.62.xpu.1 ─ server.62.pciesw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.62.cpu.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.62.mgmt.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.62.nic.1\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.31.port.1 ─ tier_0.31.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.31.port.2\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.63.nic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.63.pciesw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.63.xpu.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.63.nvlsw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.63.xpu.1 ─ server.63.pciesw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.63.cpu.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.63.mgmt.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.63.nic.1\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.31.port.3 ─ tier_0.31.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.31.port.4\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.28.port.3 ─ tier_1.28.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.31.port.5\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.29.port.3 ─ tier_1.29.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.31.port.7\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.31.port.3 ─ tier_1.31.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.30.port.4\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_2.8.port.7 ─ tier_2.8.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.30.port.5\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_2.9.port.7 ─ tier_2.9.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.30.port.6\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_2.10.port.7 ─ tier_2.10.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── tier_1.30.port.7\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_2.11.port.7\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_2.11.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.11.port.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.2.port.7 ─ tier_1.2.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.11.port.1\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.6.port.7 ─ tier_1.6.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.11.port.2\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.10.port.7 ─ tier_1.10.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.11.port.3\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.14.port.7 ─ tier_1.14.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.11.port.4\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.18.port.7 ─ tier_1.18.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.11.port.5\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.22.port.7 ─ tier_1.22.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── tier_2.11.port.6\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.26.port.7 ─ tier_1.26.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.30.port.7\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.31.port.2 ─ tier_1.31.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.29.port.4\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_2.4.port.7\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_2.4.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.4.port.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.1.port.4 ─ tier_1.1.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.4.port.1\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.5.port.4 ─ tier_1.5.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.4.port.2\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.9.port.4 ─ tier_1.9.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.4.port.3\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.13.port.4 ─ tier_1.13.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.4.port.4\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.17.port.4 ─ tier_1.17.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.4.port.5\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.21.port.4 ─ tier_1.21.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── tier_2.4.port.6\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.25.port.4 ─ tier_1.25.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.29.port.5\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_2.5.port.7\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_2.5.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.5.port.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.1.port.5 ─ tier_1.1.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.5.port.1\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.5.port.5 ─ tier_1.5.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.5.port.2\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.9.port.5 ─ tier_1.9.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.5.port.3\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.13.port.5 ─ tier_1.13.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.5.port.4\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.17.port.5 ─ tier_1.17.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.5.port.5\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.21.port.5 ─ tier_1.21.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── tier_2.5.port.6\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.25.port.5 ─ tier_1.25.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.29.port.6\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_2.6.port.7\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_2.6.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.6.port.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.1.port.6 ─ tier_1.1.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.6.port.1\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.5.port.6 ─ tier_1.5.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.6.port.2\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.9.port.6 ─ tier_1.9.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.6.port.3\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.13.port.6 ─ tier_1.13.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.6.port.4\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.17.port.6 ─ tier_1.17.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.6.port.5\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.21.port.6 ─ tier_1.21.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── tier_2.6.port.6\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.25.port.6 ─ tier_1.25.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.29.port.7\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_2.7.port.7\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_2.7.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.7.port.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.1.port.7 ─ tier_1.1.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.7.port.1\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.5.port.7 ─ tier_1.5.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.7.port.2\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.9.port.7 ─ tier_1.9.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.7.port.3\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.13.port.7 ─ tier_1.13.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.7.port.4\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.17.port.7 ─ tier_1.17.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.7.port.5\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.21.port.7 ─ tier_1.21.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── tier_2.7.port.6\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.25.port.7 ─ tier_1.25.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.29.port.7\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.31.port.1 ─ tier_1.31.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.28.port.4\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_2.0.port.7\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_2.0.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.0.port.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.0.port.4 ─ tier_1.0.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.0.port.1\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.4.port.4 ─ tier_1.4.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.0.port.2\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.8.port.4 ─ tier_1.8.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.0.port.3\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.12.port.4 ─ tier_1.12.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.0.port.4\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.16.port.4 ─ tier_1.16.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.0.port.5\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.20.port.4 ─ tier_1.20.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── tier_2.0.port.6\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.24.port.4 ─ tier_1.24.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.28.port.5\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_2.1.port.7\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_2.1.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.1.port.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.0.port.5 ─ tier_1.0.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.1.port.1\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.4.port.5 ─ tier_1.4.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.1.port.2\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.8.port.5 ─ tier_1.8.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.1.port.3\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.12.port.5 ─ tier_1.12.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.1.port.4\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.16.port.5 ─ tier_1.16.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.1.port.5\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.20.port.5 ─ tier_1.20.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── tier_2.1.port.6\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.24.port.5 ─ tier_1.24.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.28.port.6\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_2.2.port.7\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_2.2.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.2.port.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.0.port.6 ─ tier_1.0.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.2.port.1\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.4.port.6 ─ tier_1.4.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.2.port.2\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.8.port.6 ─ tier_1.8.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.2.port.3\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.12.port.6 ─ tier_1.12.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.2.port.4\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.16.port.6 ─ tier_1.16.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.2.port.5\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.20.port.6 ─ tier_1.20.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── tier_2.2.port.6\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.24.port.6 ─ tier_1.24.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.28.port.7\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_2.3.port.7\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_2.3.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.3.port.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.0.port.7 ─ tier_1.0.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.3.port.1\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.4.port.7 ─ tier_1.4.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.3.port.2\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.8.port.7 ─ tier_1.8.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.3.port.3\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.12.port.7 ─ tier_1.12.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.3.port.4\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.16.port.7 ─ tier_1.16.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.3.port.5\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.20.port.7 ─ tier_1.20.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── tier_2.3.port.6\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.24.port.7 ─ tier_1.24.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.31.port.4\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_2.12.port.7 ─ tier_2.12.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.31.port.5\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_2.13.port.7 ─ tier_2.13.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.31.port.6\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_2.14.port.7 ─ tier_2.14.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.25.port.6\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.26.port.1 ─ tier_1.26.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.26.port.4\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_2.8.port.6 ─ tier_2.8.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.26.port.5\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_2.9.port.6 ─ tier_2.9.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.22.port.7\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.23.port.2 ─ tier_1.23.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.21.port.7\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.23.port.1 ─ tier_1.23.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.23.port.4\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_2.12.port.5 ─ tier_2.12.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.23.port.5\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_2.13.port.5 ─ tier_2.13.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.17.port.6\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.18.port.1 ─ tier_1.18.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.18.port.4\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_2.8.port.4 ─ tier_2.8.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.14.port.7\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.15.port.2 ─ tier_1.15.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.13.port.7\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.15.port.1 ─ tier_1.15.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.15.port.4\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_2.12.port.3 ─ tier_2.12.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.5.port.6\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.6.port.1 ─ tier_1.6.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.8.port.2\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.10.port.4 ─ tier_1.10.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.2.port.7\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.3.port.2 ─ tier_1.3.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.1.port.7\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.3.port.1 ─ tier_1.3.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ └── ...\n", + " │ │ │ │ └── ...\n", + " │ │ │ └── ...\n", + " │ │ └── ...\n", + " │ └── ...\n", + " └── ...\n", + "None\n" + ] + } + ], + "source": [ + "service = InfraGraphService()\n", + "service.set_graph(infrastructure)\n", + "g = service.get_networkx_graph()\n", + "print(networkx.write_network_text(g, vertical_chains=True))\n", + "total_npus = 64" + ] + }, + { + "cell_type": "markdown", + "id": "7415f64c", + "metadata": {}, + "source": [ + "##### Generate workload execution traces for each rank and set the required data size for AstraSim configuration" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "510b7454", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Generated 64 et in /workspaces/astra_sim_service/client-scripts/utils/../trial/htsim_clos_fabric_3tier/configuration/workload\n" + ] + } + ], + "source": [ + "astra.configuration.common_config.workload = astra.generate_collective(collective=Collective.ALLREDUCE, coll_size= 1 *1024*1024, npu_range=[0, total_npus])" + ] + }, + { + "cell_type": "markdown", + "id": "b3177578", + "metadata": {}, + "source": [ + "##### Configure ASTRA-sim system config" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "3d4d9c0f", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "active_chunks_per_dimension: 1\n", + "all_gather_implementation:\n", + "- ring\n", + "all_reduce_implementation:\n", + "- ring\n", + "all_to_all_implementation:\n", + "- direct\n", + "collective_optimization: localBWAware\n", + "endpoint_delay: 10\n", + "local_mem_bw: 1600\n", + "local_reduction_delay: 0\n", + "peak_perf: 900\n", + "preferred_dataset_splits: 4\n", + "reduce_scatter_implementation:\n", + "- ring\n", + "roofline_enabled: 0\n", + "scheduling_policy: LIFO\n", + "trace_enabled: 0\n", + "\n" + ] + } + ], + "source": [ + "astra.configuration.common_config.system.scheduling_policy = astra.configuration.common_config.system.LIFO\n", + "astra.configuration.common_config.system.endpoint_delay = 10\n", + "astra.configuration.common_config.system.active_chunks_per_dimension = 1\n", + "astra.configuration.common_config.system.preferred_dataset_splits = 4\n", + "astra.configuration.common_config.system.all_gather_implementation = [astra.configuration.common_config.system.RING]\n", + "astra.configuration.common_config.system.all_to_all_implementation = [astra.configuration.common_config.system.DIRECT]\n", + "astra.configuration.common_config.system.all_reduce_implementation = [astra.configuration.common_config.system.RING]\n", + "astra.configuration.common_config.system.collective_optimization = astra.configuration.common_config.system.LOCALBWAWARE\n", + "astra.configuration.common_config.system.local_mem_bw = 1600\n", + "astra.configuration.common_config.system.peak_perf = 900\n", + "astra.configuration.common_config.system.roofline_enabled = 0\n", + "print(astra.configuration.common_config.system)\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "id": "cb6fb5b5", + "metadata": {}, + "source": [ + "##### Configure ASTRA-sim remote memory configuration" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "db186db1", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "memory_type: NO_MEMORY_EXPANSION\n", + "remote_mem_bw: 0\n", + "remote_mem_latency: 0\n", + "\n" + ] + } + ], + "source": [ + "astra.configuration.common_config.remote_memory.memory_type = astra.configuration.common_config.remote_memory.NO_MEMORY_EXPANSION\n", + "print(astra.configuration.common_config.remote_memory)" + ] + }, + { + "cell_type": "markdown", + "id": "dbefce6f", + "metadata": {}, + "source": [ + "##### Configure the selected network backend and the topology (infragraph or network_topology_configuration)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "88c0c6eb", + "metadata": {}, + "outputs": [], + "source": [ + "astra.configuration.network_backend.choice = astra.configuration.network_backend.HTSIM\n", + "astra.configuration.network_backend.htsim.topology.choice = astra.configuration.network_backend.htsim.topology.INFRAGRAPH" + ] + }, + { + "cell_type": "markdown", + "id": "4949d933", + "metadata": {}, + "source": [ + "##### Select htsim protocol" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "647d1b0b", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Network backend set to htsim\n", + "network topology choice set to: infragraph\n", + "protocol set to choice: tcp\n", + "\n" + ] + } + ], + "source": [ + "astra.configuration.network_backend.htsim.htsim_protocol.choice = astra.configuration.network_backend.htsim.htsim_protocol.TCP\n", + "print(\"Network backend set to\", astra.configuration.network_backend.choice)\n", + "print(\"network topology choice set to:\",astra.configuration.network_backend.htsim.topology.choice)\n", + "print(\"protocol set to\", astra.configuration.network_backend.htsim.htsim_protocol)\n", + "astra.configuration.network_backend.htsim.htsim_protocol.tcp.nodes = str(total_npus)" + ] + }, + { + "cell_type": "markdown", + "id": "83470713", + "metadata": {}, + "source": [ + "##### Adding ASTRA-sim - Infragraph specific annotation" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "9f81ecac", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "host_device_spec = astra_sim_kit.AnnotationDeviceSpecifications()\n", + "host_device_spec.device_bandwidth_gbps = 1000\n", + "host_device_spec.device_latency_ms = 0.005\n", + "host_device_spec.device_name = \"server\"\n", + "host_device_spec.device_type = \"host\"\n", + "astra.configuration.infragraph.annotations.device_specifications.append(host_device_spec)\n", + "\n", + "switch_device_spec = astra_sim_kit.AnnotationDeviceSpecifications()\n", + "switch_device_spec.device_bandwidth_gbps = 1000\n", + "switch_device_spec.device_latency_ms = 0.005\n", + "switch_device_spec.device_name = \"switch\"\n", + "switch_device_spec.device_type = \"switch\"\n", + "astra.configuration.infragraph.annotations.device_specifications.append(\n", + " switch_device_spec\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "f7a3ad17", + "metadata": {}, + "source": [ + "##### Configure ASTRA-sim cmd parameters" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "96c2d8df", + "metadata": {}, + "outputs": [], + "source": [ + "astra.configuration.common_config.cmd_parameters.comm_scale = 1\n", + "astra.configuration.common_config.cmd_parameters.injection_scale = 1\n", + "astra.configuration.common_config.cmd_parameters.rendezvous_protocol = False" + ] + }, + { + "cell_type": "markdown", + "id": "63b6acae", + "metadata": {}, + "source": [ + "#### Start the simulation by specifying the network backend" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "6a0e647f", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Generating Configuration ZIP now\n", + "output_path: /workspaces/astra_sim_service/client-scripts/utils/../trial/htsim_clos_fabric_3tier/config.zip\n", + "folder_path: /workspaces/astra_sim_service/client-scripts/utils/../trial/htsim_clos_fabric_3tier/configuration/workload/..\n", + "pack_zip complete\n", + "message: 'Configuration applied successfully. warnings: Unable to generate communicator\n", + " group message from schema - communicator group configuration empty'\n", + "\n", + "message: Simulation started successfully\n", + "\n", + "astra-sim server Status: running\n", + "astra-sim server Status: running\n", + "astra-sim server Status: running\n", + "Downloading Output files....\n", + "Transferring Files from ASTRA-sim server\n", + "Downloading file: simulation.log\n", + "All files downloaded Successfully\n", + "Simulation completed\n" + ] + } + ], + "source": [ + "astra.run_simulation(NetworkBackend.HTSIM)" + ] + }, + { + "cell_type": "markdown", + "id": "62b6b049", + "metadata": {}, + "source": [ + "##### Download all the configurations as a zip" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "a4094f6c", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Downloaded all configuration in /workspaces/astra_sim_service/client-scripts/utils/../trial/htsim_clos_fabric_3tier/server_configuration.zip\n" + ] + } + ], + "source": [ + "astra.download_configuration()" + ] + }, + { + "cell_type": "markdown", + "id": "687b82e0", + "metadata": {}, + "source": [ + "##### Save infragraph as a yaml" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "b17164cb", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "saved yaml to: /workspaces/astra_sim_service/client-scripts/utils/../trial/htsim_clos_fabric_3tier/output/../htsim_clos_fabric_3tier.yaml\n" + ] + } + ], + "source": [ + "with open(os.path.join(FileFolderUtils.get_instance().OUTPUT_DIR,\"../infrastructure\",\"htsim_clos_fabric_3tier.yaml\"),\"w\") as f:\n", + " data = infrastructure.serialize(\"dict\")\n", + " yaml.dump(data, f, default_flow_style=False, indent=4)\n", + "\n", + "print(\"saved yaml to:\", os.path.join(FileFolderUtils.get_instance().OUTPUT_DIR,\"..\",\"htsim_clos_fabric_3tier.yaml\"))" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.0rc1" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/client-scripts/notebooks/infragraph/htsim_clos_fabric_3tier.py b/client-scripts/notebooks/infragraph/htsim_clos_fabric_3tier.py deleted file mode 100644 index 6832a61..0000000 --- a/client-scripts/notebooks/infragraph/htsim_clos_fabric_3tier.py +++ /dev/null @@ -1,155 +0,0 @@ -# --- -# jupyter: -# jupytext: -# text_representation: -# extension: .py -# format_name: percent -# format_version: '1.3' -# jupytext_version: 1.19.1 -# kernelspec: -# display_name: Python 3 -# language: python -# name: python3 -# --- - -# %% [markdown] -# ##### Import the required modules and configure the system path to locate them - -# %% -import sys -sys.path.append("../../utils") -import networkx -import astra_sim_sdk.astra_sim_sdk as astra_sim_kit -from astra_sim import AstraSim, Collective, NetworkBackend -from infragraph.infragraph_service import InfraGraphService -from infragraph.blueprints.fabrics.clos_fat_tree_fabric import ClosFatTreeFabric -from infragraph.blueprints.devices.generic.server import Server -from infragraph.blueprints.devices.generic.generic_switch import Switch - -# %% [markdown] -# ##### Call the AstraSim client helper with the server endpoint and tag to connect to the ASTRA-sim gRPC server, initialize the SDK, and create a tagged folder for configs, results, and logs - -# %% -astra = AstraSim(server_endpoint = "172.17.0.2:8989", tag = "htsim_clos_fabric_3tier") - -# %% [markdown] -# ##### Create a three-tier clos fabric using infragraph fabric blueprint - -# %% -server = Server() -switch = Switch(port_count=8) -infrastructure = ClosFatTreeFabric(switch, server, 3,[]) -astra.configuration.infragraph.infrastructure.deserialize(infrastructure.serialize()) -print(astra.configuration.infragraph.infrastructure) - -# %% [markdown] -# ##### Initialize the Infragraph service, display the fabric topology, and retrieve/set the total number of NPUs to generate the collective - -# %% -service = InfraGraphService() -service.set_graph(infrastructure) -g = service.get_networkx_graph() -print(networkx.write_network_text(g, vertical_chains=True)) -total_npus = 64 - -# %% [markdown] -# ##### Generate workload execution traces for each rank and set the required data size for AstraSim configuration - -# %% -astra.configuration.common_config.workload = astra.generate_collective(collective=Collective.ALLREDUCE, coll_size= 1 *1024*1024, npu_range=[0, total_npus]) - -# %% [markdown] -# ##### Configure ASTRA-sim system config - -# %% -astra.configuration.common_config.system.scheduling_policy = astra.configuration.common_config.system.LIFO -astra.configuration.common_config.system.endpoint_delay = 10 -astra.configuration.common_config.system.active_chunks_per_dimension = 1 -astra.configuration.common_config.system.preferred_dataset_splits = 4 -astra.configuration.common_config.system.all_gather_implementation = [astra.configuration.common_config.system.RING] -astra.configuration.common_config.system.all_to_all_implementation = [astra.configuration.common_config.system.DIRECT] -astra.configuration.common_config.system.all_reduce_implementation = [astra.configuration.common_config.system.RING] -astra.configuration.common_config.system.collective_optimization = astra.configuration.common_config.system.LOCALBWAWARE -astra.configuration.common_config.system.local_mem_bw = 1600 -astra.configuration.common_config.system.peak_perf = 900 -astra.configuration.common_config.system.roofline_enabled = 0 -print(astra.configuration.common_config.system) - - - -# %% [markdown] -# ##### Configure ASTRA-sim remote memory configuration - -# %% -astra.configuration.common_config.remote_memory.memory_type = astra.configuration.common_config.remote_memory.NO_MEMORY_EXPANSION -print(astra.configuration.common_config.remote_memory) - -# %% [markdown] -# ##### Configure the selected network backend and the topology (infragraph or network_topology_configuration) - -# %% -astra.configuration.network_backend.choice = astra.configuration.network_backend.HTSIM -astra.configuration.network_backend.htsim.topology.choice = astra.configuration.network_backend.htsim.topology.INFRAGRAPH - -# %% [markdown] -# ##### Select htsim protocol - -# %% -astra.configuration.network_backend.htsim.htsim_protocol.choice = astra.configuration.network_backend.htsim.htsim_protocol.TCP -print("Network backend set to", astra.configuration.network_backend.choice) -print("network topology choice set to:",astra.configuration.network_backend.htsim.topology.choice) -print("protocol set to", astra.configuration.network_backend.htsim.htsim_protocol) -astra.configuration.network_backend.htsim.htsim_protocol.tcp.nodes = str(total_npus) - -# %% [markdown] -# ##### Adding ASTRA-sim - Infragraph specific annotation - -# %% -host_device_spec = astra_sim_kit.AnnotationDeviceSpecifications() -host_device_spec.device_bandwidth_gbps = 1000 -host_device_spec.device_latency_ms = 0.005 -host_device_spec.device_name = "server" -host_device_spec.device_type = "host" -astra.configuration.infragraph.annotations.device_specifications.append(host_device_spec) - -switch_device_spec = astra_sim_kit.AnnotationDeviceSpecifications() -switch_device_spec.device_bandwidth_gbps = 1000 -switch_device_spec.device_latency_ms = 0.005 -switch_device_spec.device_name = "switch" -switch_device_spec.device_type = "switch" -astra.configuration.infragraph.annotations.device_specifications.append( - switch_device_spec -) - -# %% [markdown] -# ##### Configure ASTRA-sim cmd parameters - -# %% -astra.configuration.common_config.cmd_parameters.comm_scale = 1 -astra.configuration.common_config.cmd_parameters.injection_scale = 1 -astra.configuration.common_config.cmd_parameters.rendezvous_protocol = False - -# %% [markdown] -# #### Start the simulation by specifying the network backend - -# %% -astra.run_simulation(NetworkBackend.HTSIM) - -# %% [markdown] -# ##### Download all the configurations as a zip - -# %% -astra.download_configuration() - -# %% [markdown] -# ##### Save infragraph as a yaml - -# %% -import yaml -import os -from common import FileFolderUtils -with open(os.path.join(FileFolderUtils.get_instance().OUTPUT_DIR,"../infrastructure","htsim_clos_fabric_3tier.yaml"),"w") as f: - data = infrastructure.serialize("dict") - yaml.dump(data, f, default_flow_style=False, indent=4) - -print("saved yaml to:", os.path.join(FileFolderUtils.get_instance().OUTPUT_DIR,"..","htsim_clos_fabric_3tier.yaml")) diff --git a/client-scripts/notebooks/infragraph/ns3_clos_fabric_2tier.ipynb b/client-scripts/notebooks/infragraph/ns3_clos_fabric_2tier.ipynb new file mode 100644 index 0000000..a2ae3cf --- /dev/null +++ b/client-scripts/notebooks/infragraph/ns3_clos_fabric_2tier.ipynb @@ -0,0 +1,362 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "ec7a40b8", + "metadata": {}, + "source": [ + "##### Import the required modules and configure the system path to locate them" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "959a81cb", + "metadata": {}, + "outputs": [], + "source": [ + "import sys\n", + "sys.path.append(\"../../utils\")\n", + "import networkx\n", + "import yaml\n", + "import os\n", + "import pandas as pd\n", + "import astra_sim_sdk.astra_sim_sdk as astra_sim_kit\n", + "from astra_sim import AstraSim, Collective, NetworkBackend\n", + "from common import FileFolderUtils\n", + "from infragraph.infragraph_service import InfraGraphService\n", + "from infragraph.blueprints.fabrics.clos_fat_tree_fabric import ClosFatTreeFabric\n", + "from infragraph.blueprints.devices.generic.server import Server\n", + "from infragraph.blueprints.devices.generic.generic_switch import Switch" + ] + }, + { + "cell_type": "markdown", + "id": "9006ee5d", + "metadata": {}, + "source": [ + "##### Call the AstraSim client helper with the server endpoint and tag to connect to the ASTRA-sim gRPC server, initialize the SDK, and create a tagged folder for configs, results, and logs" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "68b9ec39", + "metadata": {}, + "outputs": [], + "source": [ + "astra = AstraSim(server_endpoint = \"172.17.0.2:8989\", tag = \"ns3_clos_fabric_2tier\")" + ] + }, + { + "cell_type": "markdown", + "id": "4122cb3d", + "metadata": {}, + "source": [ + "##### Create a two-tier clos fabric using infragraph fabric blueprint" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "fcc45b74", + "metadata": {}, + "outputs": [], + "source": [ + "server = Server()\n", + "switch = Switch(port_count=8)\n", + "infrastructure = ClosFatTreeFabric(switch, server, 2,[])\n", + "astra.configuration.infragraph.infrastructure.deserialize(infrastructure.serialize())\n", + "print(astra.configuration.infragraph.infrastructure)" + ] + }, + { + "cell_type": "markdown", + "id": "40964f88", + "metadata": {}, + "source": [ + "##### Initialize the Infragraph service, display the fabric topology, and retrieve/set the total number of NPUs to generate the collective" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "15473e5b", + "metadata": {}, + "outputs": [], + "source": [ + "service = InfraGraphService()\n", + "service.set_graph(infrastructure)\n", + "g = service.get_networkx_graph()\n", + "print(networkx.write_network_text(g, vertical_chains=True))\n", + "total_npus = 32" + ] + }, + { + "cell_type": "markdown", + "id": "e147483d", + "metadata": {}, + "source": [ + "##### Generate workload execution traces for each rank and set the required data size for AstraSim configuration" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "a6927185", + "metadata": {}, + "outputs": [], + "source": [ + "astra.configuration.common_config.workload = astra.generate_collective(collective=Collective.ALLREDUCE, coll_size= 8 *1024*1024, npu_range=[0, total_npus])" + ] + }, + { + "cell_type": "markdown", + "id": "745eafea", + "metadata": {}, + "source": [ + "##### Configure ASTRA-sim system config" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "d5889f7c", + "metadata": {}, + "outputs": [], + "source": [ + "astra.configuration.common_config.system.scheduling_policy = astra.configuration.common_config.system.LIFO\n", + "astra.configuration.common_config.system.endpoint_delay = 10\n", + "astra.configuration.common_config.system.active_chunks_per_dimension = 1\n", + "astra.configuration.common_config.system.all_gather_implementation = [astra.configuration.common_config.system.RING]\n", + "astra.configuration.common_config.system.all_to_all_implementation = [astra.configuration.common_config.system.DIRECT]\n", + "astra.configuration.common_config.system.all_reduce_implementation = [astra.configuration.common_config.system.ONERING]\n", + "astra.configuration.common_config.system.collective_optimization = astra.configuration.common_config.system.LOCALBWAWARE\n", + "astra.configuration.common_config.system.local_mem_bw = 1600" + ] + }, + { + "cell_type": "markdown", + "id": "dba2ad39", + "metadata": {}, + "source": [ + "##### Configure ASTRA-sim remote memory configuration" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "8a821017", + "metadata": {}, + "outputs": [], + "source": [ + "astra.configuration.common_config.remote_memory.memory_type = astra.configuration.common_config.remote_memory.NO_MEMORY_EXPANSION\n", + "print(astra.configuration.common_config.remote_memory)" + ] + }, + { + "cell_type": "markdown", + "id": "9467f70e", + "metadata": {}, + "source": [ + "##### Configure the selected network backend and the topology (infragraph or nc_topology)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "9d7a2e89", + "metadata": { + "lines_to_next_cell": 2 + }, + "outputs": [], + "source": [ + "astra.configuration.network_backend.choice = astra.configuration.network_backend.NS3\n", + "astra.configuration.network_backend.ns3.topology.choice = astra.configuration.network_backend.ns3.topology.INFRAGRAPH\n", + "astra.configuration.network_backend.ns3.network.packet_payload_size = int(8192)" + ] + }, + { + "cell_type": "markdown", + "id": "42b279ab", + "metadata": {}, + "source": [ + "##### Adding ns3 trace and logical dimension " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "1b72624a", + "metadata": {}, + "outputs": [], + "source": [ + "astra.configuration.network_backend.ns3.logical_topology.logical_dimensions = [total_npus]\n", + "astra.configuration.network_backend.ns3.trace.trace_ids = []\n", + "for i in range(0, total_npus):\n", + " astra.configuration.network_backend.ns3.trace.trace_ids.append(i)" + ] + }, + { + "cell_type": "markdown", + "id": "80dd7153", + "metadata": {}, + "source": [ + "##### Adding ASTRA-sim - Infragraph specific annotation" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "133aa87c", + "metadata": {}, + "outputs": [], + "source": [ + "host_device_spec = astra_sim_kit.AnnotationDeviceSpecifications()\n", + "host_device_spec.device_bandwidth_gbps = 100\n", + "host_device_spec.device_latency_ms = 0.05\n", + "host_device_spec.device_name = \"server\"\n", + "host_device_spec.device_type = \"host\"\n", + "astra.configuration.infragraph.annotations.device_specifications.append(host_device_spec)\n", + "\n", + "switch_device_spec = astra_sim_kit.AnnotationDeviceSpecifications()\n", + "switch_device_spec.device_bandwidth_gbps = 100\n", + "switch_device_spec.device_latency_ms = 0.05\n", + "switch_device_spec.device_name = \"switch\"\n", + "switch_device_spec.device_type = \"switch\"\n", + "astra.configuration.infragraph.annotations.device_specifications.append(\n", + " switch_device_spec\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "526c9236", + "metadata": {}, + "source": [ + "##### Configure ASTRA-sim cmd parameters" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "eca0f534", + "metadata": {}, + "outputs": [], + "source": [ + "astra.configuration.common_config.cmd_parameters.comm_scale = 1\n", + "astra.configuration.common_config.cmd_parameters.injection_scale = 1\n", + "astra.configuration.common_config.cmd_parameters.rendezvous_protocol = False" + ] + }, + { + "cell_type": "markdown", + "id": "3532aab7", + "metadata": {}, + "source": [ + "#### Start the simulation by specifying the network backend" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "84ba0157", + "metadata": {}, + "outputs": [], + "source": [ + "astra.run_simulation(NetworkBackend.NS3)" + ] + }, + { + "cell_type": "markdown", + "id": "210a5874", + "metadata": {}, + "source": [ + "##### Download all the configurations as a zip" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "6b577e24", + "metadata": {}, + "outputs": [], + "source": [ + "astra.download_configuration()" + ] + }, + { + "cell_type": "markdown", + "id": "2cc12528", + "metadata": {}, + "source": [ + "##### Read output files" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "d82d053a", + "metadata": {}, + "outputs": [], + "source": [ + "df = pd.read_csv(os.path.join(FileFolderUtils.get_instance().OUTPUT_DIR, \"fct.csv\"))\n", + "df.head()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "5132f8c2", + "metadata": {}, + "outputs": [], + "source": [ + "df = pd.read_csv(os.path.join(FileFolderUtils.get_instance().OUTPUT_DIR, \"flow_stats.csv\"))\n", + "df.head()" + ] + }, + { + "cell_type": "markdown", + "id": "9006963d", + "metadata": {}, + "source": [ + "##### Save infragraph as a yaml" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "fe7e05bb", + "metadata": {}, + "outputs": [], + "source": [ + "with open(os.path.join(FileFolderUtils.get_instance().OUTPUT_DIR,\"../infrastructure\",\"ns3_clos_fabric_2tier.yaml\"),\"w\") as f:\n", + " data = infrastructure.serialize(\"dict\")\n", + " yaml.dump(data, f, default_flow_style=False, indent=4)\n", + "\n", + "print(\"saved yaml to:\", os.path.join(FileFolderUtils.get_instance().OUTPUT_DIR,\"..\",\"ns3_clos_fabric_2tier.yaml\"))" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.0rc1" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/client-scripts/notebooks/infragraph/ns3_clos_fabric_2tier.py b/client-scripts/notebooks/infragraph/ns3_clos_fabric_2tier.py deleted file mode 100644 index dec494a..0000000 --- a/client-scripts/notebooks/infragraph/ns3_clos_fabric_2tier.py +++ /dev/null @@ -1,164 +0,0 @@ -# --- -# jupyter: -# jupytext: -# text_representation: -# extension: .py -# format_name: percent -# format_version: '1.3' -# jupytext_version: 1.19.1 -# kernelspec: -# display_name: Python 3 -# language: python -# name: python3 -# --- - -# %% [markdown] -# ##### Import the required modules and configure the system path to locate them - -# %% -import sys -sys.path.append("../../utils") -import networkx -import astra_sim_sdk.astra_sim_sdk as astra_sim_kit -from astra_sim import AstraSim, Collective, NetworkBackend -from infragraph.infragraph_service import InfraGraphService -from infragraph.blueprints.fabrics.clos_fat_tree_fabric import ClosFatTreeFabric -from infragraph.blueprints.devices.generic.server import Server -from infragraph.blueprints.devices.generic.generic_switch import Switch - -# %% [markdown] -# ##### Call the AstraSim client helper with the server endpoint and tag to connect to the ASTRA-sim gRPC server, initialize the SDK, and create a tagged folder for configs, results, and logs - -# %% -astra = AstraSim(server_endpoint = "172.17.0.2:8989", tag = "ns3_clos_fabric_2tier") - -# %% [markdown] -# ##### Create a two-tier clos fabric using infragraph fabric blueprint - -# %% -server = Server() -switch = Switch(port_count=8) -infrastructure = ClosFatTreeFabric(switch, server, 2,[]) -astra.configuration.infragraph.infrastructure.deserialize(infrastructure.serialize()) -print(astra.configuration.infragraph.infrastructure) - -# %% [markdown] -# ##### Initialize the Infragraph service, display the fabric topology, and retrieve/set the total number of NPUs to generate the collective - -# %% -service = InfraGraphService() -service.set_graph(infrastructure) -g = service.get_networkx_graph() -print(networkx.write_network_text(g, vertical_chains=True)) -total_npus = 32 - -# %% [markdown] -# ##### Generate workload execution traces for each rank and set the required data size for AstraSim configuration - -# %% -astra.configuration.common_config.workload = astra.generate_collective(collective=Collective.ALLREDUCE, coll_size= 8 *1024*1024, npu_range=[0, total_npus]) - -# %% [markdown] -# ##### Configure ASTRA-sim system config - -# %% -astra.configuration.common_config.system.scheduling_policy = astra.configuration.common_config.system.LIFO -astra.configuration.common_config.system.endpoint_delay = 10 -astra.configuration.common_config.system.active_chunks_per_dimension = 1 -astra.configuration.common_config.system.all_gather_implementation = [astra.configuration.common_config.system.RING] -astra.configuration.common_config.system.all_to_all_implementation = [astra.configuration.common_config.system.DIRECT] -astra.configuration.common_config.system.all_reduce_implementation = [astra.configuration.common_config.system.ONERING] -astra.configuration.common_config.system.collective_optimization = astra.configuration.common_config.system.LOCALBWAWARE -astra.configuration.common_config.system.local_mem_bw = 1600 - -# %% [markdown] -# ##### Configure ASTRA-sim remote memory configuration - -# %% -astra.configuration.common_config.remote_memory.memory_type = astra.configuration.common_config.remote_memory.NO_MEMORY_EXPANSION -print(astra.configuration.common_config.remote_memory) - -# %% [markdown] -# ##### Configure the selected network backend and the topology (infragraph or nc_topology) - -# %% -astra.configuration.network_backend.choice = astra.configuration.network_backend.NS3 -astra.configuration.network_backend.ns3.topology.choice = astra.configuration.network_backend.ns3.topology.INFRAGRAPH -astra.configuration.network_backend.ns3.network.packet_payload_size = int(8192) - - -# %% [markdown] -# ##### Adding ns3 trace and logical dimension - -# %% -astra.configuration.network_backend.ns3.logical_topology.logical_dimensions = [total_npus] -astra.configuration.network_backend.ns3.trace.trace_ids = [] -for i in range(0, total_npus): - astra.configuration.network_backend.ns3.trace.trace_ids.append(i) - -# %% [markdown] -# ##### Adding ASTRA-sim - Infragraph specific annotation - -# %% -host_device_spec = astra_sim_kit.AnnotationDeviceSpecifications() -host_device_spec.device_bandwidth_gbps = 100 -host_device_spec.device_latency_ms = 0.05 -host_device_spec.device_name = "server" -host_device_spec.device_type = "host" -astra.configuration.infragraph.annotations.device_specifications.append(host_device_spec) - -switch_device_spec = astra_sim_kit.AnnotationDeviceSpecifications() -switch_device_spec.device_bandwidth_gbps = 100 -switch_device_spec.device_latency_ms = 0.05 -switch_device_spec.device_name = "switch" -switch_device_spec.device_type = "switch" -astra.configuration.infragraph.annotations.device_specifications.append( - switch_device_spec -) - -# %% [markdown] -# ##### Configure ASTRA-sim cmd parameters - -# %% -astra.configuration.common_config.cmd_parameters.comm_scale = 1 -astra.configuration.common_config.cmd_parameters.injection_scale = 1 -astra.configuration.common_config.cmd_parameters.rendezvous_protocol = False - -# %% [markdown] -# #### Start the simulation by specifying the network backend - -# %% -astra.run_simulation(NetworkBackend.NS3) - -# %% [markdown] -# ##### Download all the configurations as a zip - -# %% -astra.download_configuration() - -# %% [markdown] -# ##### Read output files - -# %% -import pandas as pd -import os -from common import FileFolderUtils -df = pd.read_csv(os.path.join(FileFolderUtils.get_instance().OUTPUT_DIR, "fct.csv")) -df.head() - -# %% -df = pd.read_csv(os.path.join(FileFolderUtils.get_instance().OUTPUT_DIR, "flow_stats.csv")) -df.head() - -# %% [markdown] -# ##### Save infragraph as a yaml - -# %% -import yaml -import os -from common import FileFolderUtils -with open(os.path.join(FileFolderUtils.get_instance().OUTPUT_DIR,"../infrastructure","ns3_clos_fabric_2tier.yaml"),"w") as f: - data = infrastructure.serialize("dict") - yaml.dump(data, f, default_flow_style=False, indent=4) - -print("saved yaml to:", os.path.join(FileFolderUtils.get_instance().OUTPUT_DIR,"..","ns3_clos_fabric_2tier.yaml")) diff --git a/client-scripts/notebooks/infragraph/ns3_clos_fabric_3tier.ipynb b/client-scripts/notebooks/infragraph/ns3_clos_fabric_3tier.ipynb new file mode 100644 index 0000000..471b3a6 --- /dev/null +++ b/client-scripts/notebooks/infragraph/ns3_clos_fabric_3tier.ipynb @@ -0,0 +1,343 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "8bf1e79b", + "metadata": {}, + "source": [ + "##### Import the required modules and configure the system path to locate them" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "19cb437c", + "metadata": {}, + "outputs": [], + "source": [ + "import sys\n", + "sys.path.append(\"../../utils\")\n", + "import networkx\n", + "import yaml\n", + "import os\n", + "import pandas as pd\n", + "import astra_sim_sdk.astra_sim_sdk as astra_sim_kit\n", + "from common import FileFolderUtils\n", + "from astra_sim import AstraSim, Collective, NetworkBackend\n", + "from infragraph.infragraph_service import InfraGraphService\n", + "from infragraph.blueprints.fabrics.clos_fat_tree_fabric import ClosFatTreeFabric\n", + "from infragraph.blueprints.devices.generic.server import Server\n", + "from infragraph.blueprints.devices.generic.generic_switch import Switch" + ] + }, + { + "cell_type": "markdown", + "id": "e5d24eab", + "metadata": {}, + "source": [ + "##### Call the AstraSim client helper with the server endpoint and tag to connect to the ASTRA-sim gRPC server, initialize the SDK, and create a tagged folder for configs, results, and logs" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "a7854a50", + "metadata": {}, + "outputs": [], + "source": [ + "astra = AstraSim(server_endpoint = \"172.17.0.2:8989\", tag = \"ns3_clos_fabric_3tier\")" + ] + }, + { + "cell_type": "markdown", + "id": "e344f8f2", + "metadata": {}, + "source": [ + "##### Create a three-tier clos fabric using infragraph fabric blueprint" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "963f0ddc", + "metadata": {}, + "outputs": [], + "source": [ + "server = Server()\n", + "switch = Switch(port_count=4)\n", + "infrastructure = ClosFatTreeFabric(switch, server, 3,[])\n", + "astra.configuration.infragraph.infrastructure.deserialize(infrastructure.serialize())\n", + "print(astra.configuration.infragraph.infrastructure)" + ] + }, + { + "cell_type": "markdown", + "id": "46c37a6d", + "metadata": {}, + "source": [ + "##### Initialize the Infragraph service, display the fabric topology, and retrieve/set the total number of NPUs to generate the collective" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "8d212803", + "metadata": {}, + "outputs": [], + "source": [ + "service = InfraGraphService()\n", + "service.set_graph(infrastructure)\n", + "g = service.get_networkx_graph()\n", + "print(networkx.write_network_text(g, vertical_chains=True))\n", + "total_npus = 16" + ] + }, + { + "cell_type": "markdown", + "id": "0e2bc6cc", + "metadata": {}, + "source": [ + "##### Generate workload execution traces for each rank and set the required data size for AstraSim configuration" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "2629ebf2", + "metadata": {}, + "outputs": [], + "source": [ + "astra.configuration.common_config.workload = astra.generate_collective(collective=Collective.ALLREDUCE, coll_size= 1 *1024*1024, npu_range=[0, total_npus])" + ] + }, + { + "cell_type": "markdown", + "id": "319ad188", + "metadata": {}, + "source": [ + "##### Configure ASTRA-sim system config" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "79f4934e", + "metadata": {}, + "outputs": [], + "source": [ + "astra.configuration.common_config.system.scheduling_policy = astra.configuration.common_config.system.LIFO\n", + "astra.configuration.common_config.system.endpoint_delay = 10\n", + "astra.configuration.common_config.system.active_chunks_per_dimension = 1\n", + "astra.configuration.common_config.system.all_gather_implementation = [astra.configuration.common_config.system.RING]\n", + "astra.configuration.common_config.system.all_to_all_implementation = [astra.configuration.common_config.system.DIRECT]\n", + "astra.configuration.common_config.system.all_reduce_implementation = [astra.configuration.common_config.system.ONERING]\n", + "astra.configuration.common_config.system.collective_optimization = astra.configuration.common_config.system.LOCALBWAWARE\n", + "astra.configuration.common_config.system.local_mem_bw = 1600" + ] + }, + { + "cell_type": "markdown", + "id": "b5841017", + "metadata": {}, + "source": [ + "##### Configure ASTRA-sim remote memory configuration" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "59c66bcb", + "metadata": {}, + "outputs": [], + "source": [ + "astra.configuration.common_config.remote_memory.memory_type = astra.configuration.common_config.remote_memory.NO_MEMORY_EXPANSION\n", + "print(astra.configuration.common_config.remote_memory)" + ] + }, + { + "cell_type": "markdown", + "id": "a4528f6f", + "metadata": {}, + "source": [ + "##### Configure the selected network backend and the topology (infragraph or nc_topology)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "928b1ca5", + "metadata": { + "lines_to_next_cell": 2 + }, + "outputs": [], + "source": [ + "astra.configuration.network_backend.choice = astra.configuration.network_backend.NS3\n", + "astra.configuration.network_backend.ns3.topology.choice = astra.configuration.network_backend.ns3.topology.INFRAGRAPH\n", + "astra.configuration.network_backend.ns3.network.packet_payload_size = int(8192)" + ] + }, + { + "cell_type": "markdown", + "id": "dd4d69e3", + "metadata": {}, + "source": [ + "##### Adding ns3 trace and logical dimension " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "8d3ebad7", + "metadata": {}, + "outputs": [], + "source": [ + "astra.configuration.network_backend.ns3.logical_topology.logical_dimensions = [total_npus]\n", + "astra.configuration.network_backend.ns3.trace.trace_ids = []\n", + "for i in range(0, total_npus):\n", + " astra.configuration.network_backend.ns3.trace.trace_ids.append(i)" + ] + }, + { + "cell_type": "markdown", + "id": "1bde2431", + "metadata": {}, + "source": [ + "##### Adding ASTRA-sim - Infragraph specific annotation" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "66b36271", + "metadata": {}, + "outputs": [], + "source": [ + "host_device_spec = astra_sim_kit.AnnotationDeviceSpecifications()\n", + "host_device_spec.device_bandwidth_gbps = 100\n", + "host_device_spec.device_latency_ms = 0.05\n", + "host_device_spec.device_name = \"server\"\n", + "host_device_spec.device_type = \"host\"\n", + "astra.configuration.infragraph.annotations.device_specifications.append(host_device_spec)\n", + "\n", + "switch_device_spec = astra_sim_kit.AnnotationDeviceSpecifications()\n", + "switch_device_spec.device_bandwidth_gbps = 100\n", + "switch_device_spec.device_latency_ms = 0.05\n", + "switch_device_spec.device_name = \"switch\"\n", + "switch_device_spec.device_type = \"switch\"\n", + "astra.configuration.infragraph.annotations.device_specifications.append(\n", + " switch_device_spec\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "c08df70c", + "metadata": {}, + "source": [ + "##### Configure ASTRA-sim cmd parameters" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f903e215", + "metadata": {}, + "outputs": [], + "source": [ + "astra.configuration.common_config.cmd_parameters.comm_scale = 1\n", + "astra.configuration.common_config.cmd_parameters.injection_scale = 1\n", + "astra.configuration.common_config.cmd_parameters.rendezvous_protocol = False" + ] + }, + { + "cell_type": "markdown", + "id": "b9a8de4f", + "metadata": {}, + "source": [ + "#### Start the simulation by specifying the network backend" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "72675b9d", + "metadata": {}, + "outputs": [], + "source": [ + "astra.run_simulation(NetworkBackend.NS3)" + ] + }, + { + "cell_type": "markdown", + "id": "96bcc2bc", + "metadata": {}, + "source": [ + "##### Download all the configurations as a zip" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "6548eff5", + "metadata": {}, + "outputs": [], + "source": [ + "astra.download_configuration()" + ] + }, + { + "cell_type": "markdown", + "id": "bf6b5659", + "metadata": {}, + "source": [ + "##### Read output files" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "6b418f9c", + "metadata": {}, + "outputs": [], + "source": [ + "df = pd.read_csv(os.path.join(FileFolderUtils.get_instance().OUTPUT_DIR, \"fct.csv\"))\n", + "df.head()" + ] + }, + { + "cell_type": "markdown", + "id": "2721c97b", + "metadata": {}, + "source": [ + "##### Save infragraph as a yaml" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "d1907b64", + "metadata": {}, + "outputs": [], + "source": [ + "with open(os.path.join(FileFolderUtils.get_instance().OUTPUT_DIR,\"../infrastructure\",\"ns3_clos_fabric_3tier.yaml\"),\"w\") as f:\n", + " data = infrastructure.serialize(\"dict\")\n", + " yaml.dump(data, f, default_flow_style=False, indent=4)\n", + "\n", + "print(\"saved yaml to:\", os.path.join(FileFolderUtils.get_instance().OUTPUT_DIR,\"..\",\"ns3_clos_fabric_3tier.yaml\"))" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "name": "python", + "version": "3.11.0" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/client-scripts/notebooks/infragraph/ns3_clos_fabric_3tier.py b/client-scripts/notebooks/infragraph/ns3_clos_fabric_3tier.py deleted file mode 100644 index 2a63ece..0000000 --- a/client-scripts/notebooks/infragraph/ns3_clos_fabric_3tier.py +++ /dev/null @@ -1,160 +0,0 @@ -# --- -# jupyter: -# jupytext: -# text_representation: -# extension: .py -# format_name: percent -# format_version: '1.3' -# jupytext_version: 1.19.1 -# kernelspec: -# display_name: Python 3 -# language: python -# name: python3 -# --- - -# %% [markdown] -# ##### Import the required modules and configure the system path to locate them - -# %% -import sys -sys.path.append("../../utils") -import networkx -import astra_sim_sdk.astra_sim_sdk as astra_sim_kit -from astra_sim import AstraSim, Collective, NetworkBackend -from infragraph.infragraph_service import InfraGraphService -from infragraph.blueprints.fabrics.clos_fat_tree_fabric import ClosFatTreeFabric -from infragraph.blueprints.devices.generic.server import Server -from infragraph.blueprints.devices.generic.generic_switch import Switch - -# %% [markdown] -# ##### Call the AstraSim client helper with the server endpoint and tag to connect to the ASTRA-sim gRPC server, initialize the SDK, and create a tagged folder for configs, results, and logs - -# %% -astra = AstraSim(server_endpoint = "172.17.0.2:8989", tag = "ns3_clos_fabric_3tier") - -# %% [markdown] -# ##### Create a three-tier clos fabric using infragraph fabric blueprint - -# %% -server = Server() -switch = Switch(port_count=4) -infrastructure = ClosFatTreeFabric(switch, server, 3,[]) -astra.configuration.infragraph.infrastructure.deserialize(infrastructure.serialize()) -print(astra.configuration.infragraph.infrastructure) - -# %% [markdown] -# ##### Initialize the Infragraph service, display the fabric topology, and retrieve/set the total number of NPUs to generate the collective - -# %% -service = InfraGraphService() -service.set_graph(infrastructure) -g = service.get_networkx_graph() -print(networkx.write_network_text(g, vertical_chains=True)) -total_npus = 16 - -# %% [markdown] -# ##### Generate workload execution traces for each rank and set the required data size for AstraSim configuration - -# %% -astra.configuration.common_config.workload = astra.generate_collective(collective=Collective.ALLREDUCE, coll_size= 1 *1024*1024, npu_range=[0, total_npus]) - -# %% [markdown] -# ##### Configure ASTRA-sim system config - -# %% -astra.configuration.common_config.system.scheduling_policy = astra.configuration.common_config.system.LIFO -astra.configuration.common_config.system.endpoint_delay = 10 -astra.configuration.common_config.system.active_chunks_per_dimension = 1 -astra.configuration.common_config.system.all_gather_implementation = [astra.configuration.common_config.system.RING] -astra.configuration.common_config.system.all_to_all_implementation = [astra.configuration.common_config.system.DIRECT] -astra.configuration.common_config.system.all_reduce_implementation = [astra.configuration.common_config.system.ONERING] -astra.configuration.common_config.system.collective_optimization = astra.configuration.common_config.system.LOCALBWAWARE -astra.configuration.common_config.system.local_mem_bw = 1600 - -# %% [markdown] -# ##### Configure ASTRA-sim remote memory configuration - -# %% -astra.configuration.common_config.remote_memory.memory_type = astra.configuration.common_config.remote_memory.NO_MEMORY_EXPANSION -print(astra.configuration.common_config.remote_memory) - -# %% [markdown] -# ##### Configure the selected network backend and the topology (infragraph or nc_topology) - -# %% -astra.configuration.network_backend.choice = astra.configuration.network_backend.NS3 -astra.configuration.network_backend.ns3.topology.choice = astra.configuration.network_backend.ns3.topology.INFRAGRAPH -astra.configuration.network_backend.ns3.network.packet_payload_size = int(8192) - - -# %% [markdown] -# ##### Adding ns3 trace and logical dimension - -# %% -astra.configuration.network_backend.ns3.logical_topology.logical_dimensions = [total_npus] -astra.configuration.network_backend.ns3.trace.trace_ids = [] -for i in range(0, total_npus): - astra.configuration.network_backend.ns3.trace.trace_ids.append(i) - -# %% [markdown] -# ##### Adding ASTRA-sim - Infragraph specific annotation - -# %% -host_device_spec = astra_sim_kit.AnnotationDeviceSpecifications() -host_device_spec.device_bandwidth_gbps = 100 -host_device_spec.device_latency_ms = 0.05 -host_device_spec.device_name = "server" -host_device_spec.device_type = "host" -astra.configuration.infragraph.annotations.device_specifications.append(host_device_spec) - -switch_device_spec = astra_sim_kit.AnnotationDeviceSpecifications() -switch_device_spec.device_bandwidth_gbps = 100 -switch_device_spec.device_latency_ms = 0.05 -switch_device_spec.device_name = "switch" -switch_device_spec.device_type = "switch" -astra.configuration.infragraph.annotations.device_specifications.append( - switch_device_spec -) - -# %% [markdown] -# ##### Configure ASTRA-sim cmd parameters - -# %% -astra.configuration.common_config.cmd_parameters.comm_scale = 1 -astra.configuration.common_config.cmd_parameters.injection_scale = 1 -astra.configuration.common_config.cmd_parameters.rendezvous_protocol = False - -# %% [markdown] -# #### Start the simulation by specifying the network backend - -# %% -astra.run_simulation(NetworkBackend.NS3) - -# %% [markdown] -# ##### Download all the configurations as a zip - -# %% -astra.download_configuration() - -# %% [markdown] -# ##### Read output files - -# %% -import pandas as pd -import os -from common import FileFolderUtils -df = pd.read_csv(os.path.join(FileFolderUtils.get_instance().OUTPUT_DIR, "fct.csv")) -df.head() - -# %% [markdown] -# ##### Save infragraph as a yaml - -# %% -import yaml -import os -from common import FileFolderUtils -with open(os.path.join(FileFolderUtils.get_instance().OUTPUT_DIR,"../infrastructure","ns3_clos_fabric_3tier"),"w") as f: - data = infrastructure.serialize("dict") - yaml.dump(data, f, default_flow_style=False, indent=4) - -print("saved yaml to:", os.path.join(FileFolderUtils.get_instance().OUTPUT_DIR,"..","ns3_clos_fabric_3tier.yaml")) diff --git a/client-scripts/notebooks/infragraph/ns3_single_dgx_device.ipynb b/client-scripts/notebooks/infragraph/ns3_single_dgx_device.ipynb new file mode 100644 index 0000000..145c60c --- /dev/null +++ b/client-scripts/notebooks/infragraph/ns3_single_dgx_device.ipynb @@ -0,0 +1,838 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "af1898cf", + "metadata": {}, + "source": [ + "##### Import the required modules and configure the system path to locate them" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "6c70c622", + "metadata": {}, + "outputs": [], + "source": [ + "import sys\n", + "sys.path.append(\"../../utils\")\n", + "import networkx\n", + "import yaml\n", + "import os\n", + "import pandas as pd\n", + "import astra_sim_sdk.astra_sim_sdk as astra_sim_kit\n", + "from common import FileFolderUtils\n", + "from astra_sim import AstraSim, Collective, NetworkBackend\n", + "from infragraph.infragraph_service import InfraGraphService\n", + "from infragraph.blueprints.devices.nvidia.dgx import NvidiaDGX, DgxProfile\n", + "from infragraph import Infrastructure" + ] + }, + { + "cell_type": "markdown", + "id": "f5e5fc47", + "metadata": {}, + "source": [ + "##### Call the AstraSim client helper with the server endpoint and tag to connect to the ASTRA-sim gRPC server, initialize the SDK, and create a tagged folder for configs, results, and logs" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "80ea543f", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Successfully connected to gRPC server at 172.17.0.2:8989\n" + ] + } + ], + "source": [ + "astra = AstraSim(server_endpoint = \"172.17.0.2:8989\", tag = \"ns3_single_dgx\")" + ] + }, + { + "cell_type": "markdown", + "id": "2dd5d3db", + "metadata": {}, + "source": [ + "##### Get all available DGX variants" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "437af895", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "('dgx1', 'dgx2', 'dgx_a100', 'dgx_h100', 'dgx_gb200')\n" + ] + } + ], + "source": [ + "from typing import get_args\n", + "print(get_args(DgxProfile))" + ] + }, + { + "cell_type": "markdown", + "id": "2eef31b1", + "metadata": {}, + "source": [ + "##### Create a Nvidia DGX device fabric using infragraph device blueprint" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "f6cda575", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "devices:\n", + "- components:\n", + " - choice: cpu\n", + " count: 2\n", + " description: AMD EPYC 9654 (Genoa)\n", + " name: cpu\n", + " - choice: xpu\n", + " count: 8\n", + " description: NVIDIA H100 / H200 SXM5\n", + " name: xpu\n", + " - choice: switch\n", + " count: 4\n", + " description: NVIDIA NVSwitch\n", + " name: nvsw\n", + " - choice: switch\n", + " count: 3\n", + " description: Broadcom PCIe Gen5 Switch\n", + " name: pciesw\n", + " - choice: custom\n", + " count: 8\n", + " custom:\n", + " type: pcie_slot\n", + " description: PCIe Gen5 x16 slots (ConnectX / BlueField)\n", + " name: pciesl\n", + " - choice: nic\n", + " count: 8\n", + " description: NVIDIA ConnectX / BlueField\n", + " name: cx7\n", + " description: NVIDIA DGX System\n", + " edges:\n", + " - ep1:\n", + " component: cpu\n", + " ep2:\n", + " component: cpu\n", + " link: cpu_fabric\n", + " scheme: many2many\n", + " - ep1:\n", + " component: cpu[0]\n", + " ep2:\n", + " component: pciesl[0:3]\n", + " link: pcie\n", + " scheme: many2many\n", + " - ep1:\n", + " component: cpu[1]\n", + " ep2:\n", + " component: pciesl[4:7]\n", + " link: pcie\n", + " scheme: many2many\n", + " - ep1:\n", + " component: cpu[0]\n", + " ep2:\n", + " component: pciesw[0]\n", + " link: pcie\n", + " scheme: one2one\n", + " - ep1:\n", + " component: cpu[1]\n", + " ep2:\n", + " component: pciesw[1]\n", + " link: pcie\n", + " scheme: one2one\n", + " - ep1:\n", + " component: pciesl[0]\n", + " ep2:\n", + " component: xpu[0]\n", + " link: pcie\n", + " scheme: one2one\n", + " - ep1:\n", + " component: pciesl[1]\n", + " ep2:\n", + " component: xpu[1]\n", + " link: pcie\n", + " scheme: one2one\n", + " - ep1:\n", + " component: pciesl[2]\n", + " ep2:\n", + " component: xpu[2]\n", + " link: pcie\n", + " scheme: one2one\n", + " - ep1:\n", + " component: pciesl[3]\n", + " ep2:\n", + " component: xpu[3]\n", + " link: pcie\n", + " scheme: one2one\n", + " - ep1:\n", + " component: pciesl[4]\n", + " ep2:\n", + " component: xpu[4]\n", + " link: pcie\n", + " scheme: one2one\n", + " - ep1:\n", + " component: pciesl[5]\n", + " ep2:\n", + " component: xpu[5]\n", + " link: pcie\n", + " scheme: one2one\n", + " - ep1:\n", + " component: pciesl[6]\n", + " ep2:\n", + " component: xpu[6]\n", + " link: pcie\n", + " scheme: one2one\n", + " - ep1:\n", + " component: pciesl[7]\n", + " ep2:\n", + " component: xpu[7]\n", + " link: pcie\n", + " scheme: one2one\n", + " - ep1:\n", + " component: nvsw[0:4]\n", + " ep2:\n", + " component: pciesw[2]\n", + " link: pcie\n", + " scheme: many2many\n", + " - ep1:\n", + " component: cpu[0]\n", + " ep2:\n", + " component: pciesw[2]\n", + " link: pcie\n", + " scheme: one2one\n", + " - ep1:\n", + " component: nvsw[0:4]\n", + " ep2:\n", + " component: xpu[0:8]\n", + " link: xpu_fabric\n", + " scheme: many2many\n", + " - ep1:\n", + " component: pciesl[0]\n", + " ep2:\n", + " component: cx7[0]\n", + " link: pcie\n", + " scheme: one2one\n", + " - ep1:\n", + " component: pciesl[1]\n", + " ep2:\n", + " component: cx7[1]\n", + " link: pcie\n", + " scheme: one2one\n", + " - ep1:\n", + " component: pciesl[2]\n", + " ep2:\n", + " component: cx7[2]\n", + " link: pcie\n", + " scheme: one2one\n", + " - ep1:\n", + " component: pciesl[3]\n", + " ep2:\n", + " component: cx7[3]\n", + " link: pcie\n", + " scheme: one2one\n", + " - ep1:\n", + " component: pciesl[4]\n", + " ep2:\n", + " component: cx7[4]\n", + " link: pcie\n", + " scheme: one2one\n", + " - ep1:\n", + " component: pciesl[5]\n", + " ep2:\n", + " component: cx7[5]\n", + " link: pcie\n", + " scheme: one2one\n", + " - ep1:\n", + " component: pciesl[6]\n", + " ep2:\n", + " component: cx7[6]\n", + " link: pcie\n", + " scheme: one2one\n", + " - ep1:\n", + " component: pciesl[7]\n", + " ep2:\n", + " component: cx7[7]\n", + " link: pcie\n", + " scheme: one2one\n", + " links:\n", + " - description: infinity_fabric\n", + " name: cpu_fabric\n", + " - description: nvlink_4\n", + " name: xpu_fabric\n", + " - description: PCI Express PCIE_GEN5 x16\n", + " name: pcie\n", + " name: dgx_h100\n", + "instances:\n", + "- count: 1\n", + " device: dgx_h100\n", + " name: dgx_h100\n", + "\n" + ] + } + ], + "source": [ + "server = NvidiaDGX(\"dgx_h100\")\n", + "infrastructure = Infrastructure()\n", + "infrastructure.devices.append(server)\n", + "infrastructure.instances.add(name=server.name, device=server.name, count=1)\n", + "astra.configuration.infragraph.infrastructure.deserialize(infrastructure.serialize())\n", + "print(astra.configuration.infragraph.infrastructure)" + ] + }, + { + "cell_type": "markdown", + "id": "0a79a343", + "metadata": {}, + "source": [ + "##### Initialize the Infragraph service, display the fabric topology, and retrieve/set the total number of NPUs to generate the collective" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "id": "39479cbb", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "╙── dgx_h100.0.cx7.5\n", + " │\n", + " dgx_h100.0.pciesl.5\n", + " ├── dgx_h100.0.cpu.1\n", + " │ ├── dgx_h100.0.cpu.0\n", + " │ │ ├── dgx_h100.0.pciesl.0\n", + " │ │ │ ├── dgx_h100.0.xpu.0\n", + " │ │ │ │ ├── dgx_h100.0.nvsw.0\n", + " │ │ │ │ │ ├── dgx_h100.0.pciesw.2 ─ dgx_h100.0.cpu.0\n", + " │ │ │ │ │ │ ├── dgx_h100.0.nvsw.1 ─ dgx_h100.0.xpu.0\n", + " │ │ │ │ │ │ │ ├── dgx_h100.0.xpu.1 ─ dgx_h100.0.nvsw.0\n", + " │ │ │ │ │ │ │ │ ├── dgx_h100.0.pciesl.1 ─ dgx_h100.0.cpu.0\n", + " │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ dgx_h100.0.cx7.1\n", + " │ │ │ │ │ │ │ │ ├── dgx_h100.0.nvsw.2 ─ dgx_h100.0.pciesw.2, dgx_h100.0.xpu.0\n", + " │ │ │ │ │ │ │ │ │ ├── dgx_h100.0.xpu.2 ─ dgx_h100.0.nvsw.0, dgx_h100.0.nvsw.1\n", + " │ │ │ │ │ │ │ │ │ │ ├── dgx_h100.0.pciesl.2 ─ dgx_h100.0.cpu.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ dgx_h100.0.cx7.2\n", + " │ │ │ │ │ │ │ │ │ │ └── dgx_h100.0.nvsw.3 ─ dgx_h100.0.pciesw.2, dgx_h100.0.xpu.0, dgx_h100.0.xpu.1\n", + " │ │ │ │ │ │ │ │ │ │ ├── dgx_h100.0.xpu.3 ─ dgx_h100.0.nvsw.0, dgx_h100.0.nvsw.1, dgx_h100.0.nvsw.2\n", + " │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ dgx_h100.0.pciesl.3\n", + " │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ dgx_h100.0.cx7.3\n", + " │ │ │ │ │ │ │ │ │ │ ├── dgx_h100.0.xpu.4 ─ dgx_h100.0.nvsw.0, dgx_h100.0.nvsw.1, dgx_h100.0.nvsw.2\n", + " │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ dgx_h100.0.pciesl.4 ─ dgx_h100.0.cpu.1\n", + " │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ dgx_h100.0.cx7.4\n", + " │ │ │ │ │ │ │ │ │ │ ├── dgx_h100.0.xpu.5 ─ dgx_h100.0.pciesl.5, dgx_h100.0.nvsw.0, dgx_h100.0.nvsw.1, dgx_h100.0.nvsw.2\n", + " │ │ │ │ │ │ │ │ │ │ ├── dgx_h100.0.xpu.6 ─ dgx_h100.0.nvsw.0, dgx_h100.0.nvsw.1, dgx_h100.0.nvsw.2\n", + " │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ dgx_h100.0.pciesl.6 ─ dgx_h100.0.cpu.1\n", + " │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ dgx_h100.0.cx7.6\n", + " │ │ │ │ │ │ │ │ │ │ └── dgx_h100.0.xpu.7 ─ dgx_h100.0.nvsw.0, dgx_h100.0.nvsw.1, dgx_h100.0.nvsw.2\n", + " │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ dgx_h100.0.pciesl.7\n", + " │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ dgx_h100.0.cx7.7\n", + " │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ └── ...\n", + " │ │ │ │ └── ...\n", + " │ │ │ └── dgx_h100.0.cx7.0\n", + " │ │ ├── dgx_h100.0.pciesw.0\n", + " │ │ └── ...\n", + " │ ├── dgx_h100.0.pciesw.1\n", + " │ └── ...\n", + " └── ...\n", + "None\n" + ] + } + ], + "source": [ + "service = InfraGraphService()\n", + "service.set_graph(infrastructure)\n", + "total_npus = service.get_component(device=server, type=\"xpu\").count\n", + "g = service.get_networkx_graph()\n", + "print(networkx.write_network_text(g, vertical_chains=True))" + ] + }, + { + "cell_type": "markdown", + "id": "f6db5a71", + "metadata": {}, + "source": [ + "##### Generate workload execution traces for each rank and set the required data size for AstraSim configuration" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "id": "fe69674a", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "All contents of the folder /workspaces/astra_sim_service/client-scripts/utils/../trial/ns3_single_dgx/configuration/workload have been deleted.\n", + "Generated 8 et in /workspaces/astra_sim_service/client-scripts/utils/../trial/ns3_single_dgx/configuration/workload\n" + ] + } + ], + "source": [ + "astra.configuration.common_config.workload = astra.generate_collective(collective=Collective.ALLREDUCE, coll_size= 1 *1024*1024, npu_range=[0, total_npus])" + ] + }, + { + "cell_type": "markdown", + "id": "5111b9ad", + "metadata": {}, + "source": [ + "##### Configure ASTRA-sim system config" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "id": "aae1858b", + "metadata": {}, + "outputs": [], + "source": [ + "astra.configuration.common_config.system.scheduling_policy = astra.configuration.common_config.system.LIFO\n", + "astra.configuration.common_config.system.endpoint_delay = 10\n", + "astra.configuration.common_config.system.active_chunks_per_dimension = 1\n", + "astra.configuration.common_config.system.all_gather_implementation = [astra.configuration.common_config.system.RING]\n", + "astra.configuration.common_config.system.all_to_all_implementation = [astra.configuration.common_config.system.DIRECT]\n", + "astra.configuration.common_config.system.all_reduce_implementation = [astra.configuration.common_config.system.ONERING]\n", + "astra.configuration.common_config.system.collective_optimization = astra.configuration.common_config.system.LOCALBWAWARE\n", + "astra.configuration.common_config.system.local_mem_bw = 1600" + ] + }, + { + "cell_type": "markdown", + "id": "90fd7a36", + "metadata": {}, + "source": [ + "##### Configure ASTRA-sim remote memory configuration" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "id": "cd0b8270", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "memory_type: NO_MEMORY_EXPANSION\n", + "remote_mem_bw: 0\n", + "remote_mem_latency: 0\n", + "\n" + ] + } + ], + "source": [ + "astra.configuration.common_config.remote_memory.memory_type = astra.configuration.common_config.remote_memory.NO_MEMORY_EXPANSION\n", + "print(astra.configuration.common_config.remote_memory)" + ] + }, + { + "cell_type": "markdown", + "id": "ddec6271", + "metadata": {}, + "source": [ + "##### Configure the selected network backend and the topology (infragraph or nc_topology)" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "id": "be5bbf10", + "metadata": { + "lines_to_next_cell": 2 + }, + "outputs": [], + "source": [ + "astra.configuration.network_backend.choice = astra.configuration.network_backend.NS3\n", + "astra.configuration.network_backend.ns3.topology.choice = astra.configuration.network_backend.ns3.topology.INFRAGRAPH\n", + "astra.configuration.network_backend.ns3.network.packet_payload_size = int(8192)" + ] + }, + { + "cell_type": "markdown", + "id": "2cdf8df4", + "metadata": {}, + "source": [ + "##### Adding ns3 trace and logical dimension " + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "id": "0299501f", + "metadata": {}, + "outputs": [], + "source": [ + "astra.configuration.network_backend.ns3.logical_topology.logical_dimensions = [total_npus]\n", + "astra.configuration.network_backend.ns3.trace.trace_ids = []\n", + "for i in range(0, total_npus):\n", + " astra.configuration.network_backend.ns3.trace.trace_ids.append(i)" + ] + }, + { + "cell_type": "markdown", + "id": "33487d2f", + "metadata": {}, + "source": [ + "##### Adding ASTRA-sim - Infragraph specific annotation for Nvidia DGX" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "id": "84e218f9", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 27, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "host_device_spec = astra_sim_kit.AnnotationDeviceSpecifications()\n", + "host_device_spec.device_bandwidth_gbps = 100\n", + "host_device_spec.device_latency_ms = 0.05\n", + "host_device_spec.device_name = server.name\n", + "host_device_spec.device_type = \"host\"\n", + "astra.configuration.infragraph.annotations.device_specifications.append(host_device_spec)" + ] + }, + { + "cell_type": "markdown", + "id": "ecebaf71", + "metadata": {}, + "source": [ + "##### Configure ASTRA-sim cmd parameters" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "id": "e0229cf9", + "metadata": {}, + "outputs": [], + "source": [ + "astra.configuration.common_config.cmd_parameters.comm_scale = 1\n", + "astra.configuration.common_config.cmd_parameters.injection_scale = 1\n", + "astra.configuration.common_config.cmd_parameters.rendezvous_protocol = False" + ] + }, + { + "cell_type": "markdown", + "id": "95f727ad", + "metadata": {}, + "source": [ + "#### Start the simulation by specifying the network backend" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "id": "f69375f6", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Generating Configuration ZIP now\n", + "output_path: /workspaces/astra_sim_service/client-scripts/utils/../trial/ns3_single_dgx/config.zip\n", + "folder_path: /workspaces/astra_sim_service/client-scripts/utils/../trial/ns3_single_dgx/configuration/workload/..\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "pack_zip complete\n", + "message: 'Configuration applied successfully. warnings: Unable to generate communicator\n", + " group message from schema - communicator group configuration empty'\n", + "\n", + "message: Simulation started successfully\n", + "\n", + "astra-sim server Status: running\n", + "Downloading Output files....\n", + "Transferring Files from ASTRA-sim server\n", + "Downloading file: fct.txt\n", + "Downloading file: flow.txt\n", + "Downloading file: pfc.txt\n", + "Downloading file: qlen.txt\n", + "Downloading file: simulation.log\n", + "Downloading file: trace_out.tr\n", + "All files downloaded Successfully\n", + "Translating Metrics...\n", + "Generated fct.csv at: /workspaces/astra_sim_service/client-scripts/utils/../trial/ns3_single_dgx/output/fct.csv\n", + "Generated: flow_stats.csv at: /workspaces/astra_sim_service/client-scripts/utils/../trial/ns3_single_dgx/output/flow_stats.csv\n", + "All metrics translated successfully\n", + "Simulation completed\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/workspaces/astra_sim_service/client-scripts/notebooks/infragraph/../../utils/common.py:274: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\\s+'`` instead\n", + " df = pd.read_csv(\n", + "/workspaces/astra_sim_service/client-scripts/notebooks/infragraph/../../utils/common.py:237: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\\s+'`` instead\n", + " df = pd.read_csv(\n" + ] + } + ], + "source": [ + "astra.run_simulation(NetworkBackend.NS3)" + ] + }, + { + "cell_type": "markdown", + "id": "bbc76926", + "metadata": {}, + "source": [ + "##### Download all the configurations as a zip" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "id": "4848847e", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Downloaded all configuration in /workspaces/astra_sim_service/client-scripts/utils/../trial/ns3_single_dgx/server_configuration.zip\n" + ] + } + ], + "source": [ + "astra.download_configuration()" + ] + }, + { + "cell_type": "markdown", + "id": "10f938aa", + "metadata": {}, + "source": [ + "##### Read output files" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "id": "490c6acb", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Source Hex ipDestination Hex ipSource PortDestination PortData size (B)Start TimeFCTStandalone FCT
00b0000010b00010110000100131072101125011857
10b0001010b00020110000100131072101125011857
20b0002010b00030110000100131072101125011857
30b0005010b00060110000100131072101125011857
40b0006010b00070110000100131072101125011857
\n", + "
" + ], + "text/plain": [ + " Source Hex ip Destination Hex ip Source Port Destination Port \\\n", + "0 0b000001 0b000101 10000 100 \n", + "1 0b000101 0b000201 10000 100 \n", + "2 0b000201 0b000301 10000 100 \n", + "3 0b000501 0b000601 10000 100 \n", + "4 0b000601 0b000701 10000 100 \n", + "\n", + " Data size (B) Start Time FCT Standalone FCT \n", + "0 131072 10 11250 11857 \n", + "1 131072 10 11250 11857 \n", + "2 131072 10 11250 11857 \n", + "3 131072 10 11250 11857 \n", + "4 131072 10 11250 11857 " + ] + }, + "execution_count": 31, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df = pd.read_csv(os.path.join(FileFolderUtils.get_instance().OUTPUT_DIR, \"fct.csv\"))\n", + "df.head()" + ] + }, + { + "cell_type": "markdown", + "id": "62095f7c", + "metadata": {}, + "source": [ + "##### Save infragraph as a yaml" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "id": "b684d824", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "saved yaml to: /workspaces/astra_sim_service/client-scripts/utils/../trial/ns3_single_dgx/output/../ns3_single_dgx.yaml\n" + ] + } + ], + "source": [ + "with open(os.path.join(FileFolderUtils.get_instance().OUTPUT_DIR,\"../infrastructure\",\"ns3_single_dgx.yaml\"),\"w\") as f:\n", + " data = infrastructure.serialize(\"dict\")\n", + " yaml.dump(data, f, default_flow_style=False, indent=4)\n", + "\n", + "print(\"saved yaml to:\", os.path.join(FileFolderUtils.get_instance().OUTPUT_DIR,\"..\",\"ns3_single_dgx.yaml\"))" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.0rc1" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/client-scripts/notebooks/infragraph/ns3_single_dgx_device.py b/client-scripts/notebooks/infragraph/ns3_single_dgx_device.py deleted file mode 100644 index 794f63a..0000000 --- a/client-scripts/notebooks/infragraph/ns3_single_dgx_device.py +++ /dev/null @@ -1,158 +0,0 @@ -# --- -# jupyter: -# jupytext: -# text_representation: -# extension: .py -# format_name: percent -# format_version: '1.3' -# jupytext_version: 1.19.1 -# kernelspec: -# display_name: Python 3 -# language: python -# name: python3 -# --- - -# %% [markdown] -# ##### Import the required modules and configure the system path to locate them - -# %% -import sys -sys.path.append("../../utils") -import networkx -import astra_sim_sdk.astra_sim_sdk as astra_sim_kit -from astra_sim import AstraSim, Collective, NetworkBackend -from infragraph.infragraph_service import InfraGraphService -from infragraph.blueprints.devices.nvidia.dgx import NvidiaDGX, DgxProfile -from infragraph import Infrastructure - -# %% [markdown] -# ##### Call the AstraSim client helper with the server endpoint and tag to connect to the ASTRA-sim gRPC server, initialize the SDK, and create a tagged folder for configs, results, and logs - -# %% -astra = AstraSim(server_endpoint = "172.17.0.2:8989", tag = "ns3_single_dgx") - -# %% [markdown] -# ##### Get all available DGX variants - -# %% -from typing import get_args -print(get_args(DgxProfile)) - -# %% [markdown] -# ##### Create a Nvidia DGX device fabric using infragraph device blueprint - -# %% -server = NvidiaDGX("dgx_h100") -infrastructure = Infrastructure() -infrastructure.devices.append(server) -infrastructure.instances.add(name=server.name, device=server.name, count=1) -astra.configuration.infragraph.infrastructure.deserialize(infrastructure.serialize()) -print(astra.configuration.infragraph.infrastructure) - -# %% [markdown] -# ##### Initialize the Infragraph service, display the fabric topology, and retrieve/set the total number of NPUs to generate the collective - -# %% -service = InfraGraphService() -service.set_graph(infrastructure) -total_npus = service.get_component(device=server, type="xpu").count -g = service.get_networkx_graph() -print(networkx.write_network_text(g, vertical_chains=True)) - -# %% [markdown] -# ##### Generate workload execution traces for each rank and set the required data size for AstraSim configuration - -# %% -astra.configuration.common_config.workload = astra.generate_collective(collective=Collective.ALLREDUCE, coll_size= 1 *1024*1024, npu_range=[0, total_npus]) - -# %% [markdown] -# ##### Configure ASTRA-sim system config - -# %% -astra.configuration.common_config.system.scheduling_policy = astra.configuration.common_config.system.LIFO -astra.configuration.common_config.system.endpoint_delay = 10 -astra.configuration.common_config.system.active_chunks_per_dimension = 1 -astra.configuration.common_config.system.all_gather_implementation = [astra.configuration.common_config.system.RING] -astra.configuration.common_config.system.all_to_all_implementation = [astra.configuration.common_config.system.DIRECT] -astra.configuration.common_config.system.all_reduce_implementation = [astra.configuration.common_config.system.ONERING] -astra.configuration.common_config.system.collective_optimization = astra.configuration.common_config.system.LOCALBWAWARE -astra.configuration.common_config.system.local_mem_bw = 1600 - -# %% [markdown] -# ##### Configure ASTRA-sim remote memory configuration - -# %% -astra.configuration.common_config.remote_memory.memory_type = astra.configuration.common_config.remote_memory.NO_MEMORY_EXPANSION -print(astra.configuration.common_config.remote_memory) - -# %% [markdown] -# ##### Configure the selected network backend and the topology (infragraph or nc_topology) - -# %% -astra.configuration.network_backend.choice = astra.configuration.network_backend.NS3 -astra.configuration.network_backend.ns3.topology.choice = astra.configuration.network_backend.ns3.topology.INFRAGRAPH -astra.configuration.network_backend.ns3.network.packet_payload_size = int(8192) - - -# %% [markdown] -# ##### Adding ns3 trace and logical dimension - -# %% -astra.configuration.network_backend.ns3.logical_topology.logical_dimensions = [total_npus] -astra.configuration.network_backend.ns3.trace.trace_ids = [] -for i in range(0, total_npus): - astra.configuration.network_backend.ns3.trace.trace_ids.append(i) - -# %% [markdown] -# ##### Adding ASTRA-sim - Infragraph specific annotation for Nvidia DGX - -# %% -host_device_spec = astra_sim_kit.AnnotationDeviceSpecifications() -host_device_spec.device_bandwidth_gbps = 100 -host_device_spec.device_latency_ms = 0.05 -host_device_spec.device_name = server.name -host_device_spec.device_type = "host" -astra.configuration.infragraph.annotations.device_specifications.append(host_device_spec) - -# %% [markdown] -# ##### Configure ASTRA-sim cmd parameters - -# %% -astra.configuration.common_config.cmd_parameters.comm_scale = 1 -astra.configuration.common_config.cmd_parameters.injection_scale = 1 -astra.configuration.common_config.cmd_parameters.rendezvous_protocol = False - -# %% [markdown] -# #### Start the simulation by specifying the network backend - -# %% -astra.run_simulation(NetworkBackend.NS3) - -# %% [markdown] -# ##### Download all the configurations as a zip - -# %% -astra.download_configuration() - -# %% [markdown] -# ##### Read output files - -# %% -import pandas as pd -import os -from common import FileFolderUtils -df = pd.read_csv(os.path.join(FileFolderUtils.get_instance().OUTPUT_DIR, "fct.csv")) -df.head() - -# %% [markdown] -# ##### Save infragraph as a yaml - -# %% -import yaml -import os -from common import FileFolderUtils -with open(os.path.join(FileFolderUtils.get_instance().OUTPUT_DIR,"../infrastructure","ns3_single_dgx"),"w") as f: - data = infrastructure.serialize("dict") - yaml.dump(data, f, default_flow_style=False, indent=4) - -print("saved yaml to:", os.path.join(FileFolderUtils.get_instance().OUTPUT_DIR,"..","ns3_single_dgx.yaml")) diff --git a/client-scripts/notebooks/infragraph/ns3_single_ironwood_device.ipynb b/client-scripts/notebooks/infragraph/ns3_single_ironwood_device.ipynb new file mode 100644 index 0000000..5d96e58 --- /dev/null +++ b/client-scripts/notebooks/infragraph/ns3_single_ironwood_device.ipynb @@ -0,0 +1,2553 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "c24f2ab6", + "metadata": {}, + "source": [ + "##### Import the required modules and configure the system path to locate them" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "a0928b9a", + "metadata": {}, + "outputs": [], + "source": [ + "import sys\n", + "sys.path.append(\"../../utils\")\n", + "import networkx\n", + "import yaml\n", + "import os\n", + "import pandas as pd\n", + "import astra_sim_sdk.astra_sim_sdk as astra_sim_kit\n", + "from common import FileFolderUtils\n", + "from astra_sim import AstraSim, Collective, NetworkBackend\n", + "from infragraph.infragraph_service import InfraGraphService\n", + "from infragraph.blueprints.devices.ironwood_rack import IronwoodRack\n", + "from infragraph import Infrastructure" + ] + }, + { + "cell_type": "markdown", + "id": "0d02f54c", + "metadata": {}, + "source": [ + "##### Call the AstraSim client helper with the server endpoint and tag to connect to the ASTRA-sim gRPC server, initialize the SDK, and create a tagged folder for configs, results, and logs" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "3228a246", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Resetting test directory\n", + "All contents of the folder /workspaces/astra_sim_service/client-scripts/utils/../trial/ns3_single_ironwood have been deleted.\n", + "Successfully connected to gRPC server at 172.17.0.2:8989\n" + ] + } + ], + "source": [ + "astra = AstraSim(server_endpoint = \"172.17.0.2:8989\", tag = \"ns3_single_ironwood\")" + ] + }, + { + "cell_type": "markdown", + "id": "36b53490", + "metadata": {}, + "source": [ + "##### Create a ironwood rack device fabric using infragraph device blueprint" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "975c511f", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "devices:\n", + "- components:\n", + " - choice: xpu\n", + " count: 64\n", + " description: Ironwood TPU\n", + " name: IRONWOOD\n", + " - choice: cpu\n", + " count: 32\n", + " description: AMD EPYC CPU\n", + " name: AMD_TURIN_ZEN5_EPYC\n", + " - choice: nic\n", + " count: 32\n", + " description: Network Interface Card\n", + " name: nic200\n", + " description: Rack with 64 XPUs in 4x4x4 Torus, 32 CPUs, and 32 NICs\n", + " edges:\n", + " - ep1:\n", + " component: IRONWOOD[0]\n", + " ep2:\n", + " component: IRONWOOD[1]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[0]\n", + " ep2:\n", + " component: IRONWOOD[4]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[0]\n", + " ep2:\n", + " component: IRONWOOD[16]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[1]\n", + " ep2:\n", + " component: IRONWOOD[2]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[1]\n", + " ep2:\n", + " component: IRONWOOD[5]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[1]\n", + " ep2:\n", + " component: IRONWOOD[17]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[2]\n", + " ep2:\n", + " component: IRONWOOD[3]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[2]\n", + " ep2:\n", + " component: IRONWOOD[6]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[2]\n", + " ep2:\n", + " component: IRONWOOD[18]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[3]\n", + " ep2:\n", + " component: IRONWOOD[0]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[3]\n", + " ep2:\n", + " component: IRONWOOD[7]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[3]\n", + " ep2:\n", + " component: IRONWOOD[19]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[4]\n", + " ep2:\n", + " component: IRONWOOD[5]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[4]\n", + " ep2:\n", + " component: IRONWOOD[8]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[4]\n", + " ep2:\n", + " component: IRONWOOD[20]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[5]\n", + " ep2:\n", + " component: IRONWOOD[6]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[5]\n", + " ep2:\n", + " component: IRONWOOD[9]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[5]\n", + " ep2:\n", + " component: IRONWOOD[21]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[6]\n", + " ep2:\n", + " component: IRONWOOD[7]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[6]\n", + " ep2:\n", + " component: IRONWOOD[10]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[6]\n", + " ep2:\n", + " component: IRONWOOD[22]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[7]\n", + " ep2:\n", + " component: IRONWOOD[4]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[7]\n", + " ep2:\n", + " component: IRONWOOD[11]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[7]\n", + " ep2:\n", + " component: IRONWOOD[23]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[8]\n", + " ep2:\n", + " component: IRONWOOD[9]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[8]\n", + " ep2:\n", + " component: IRONWOOD[12]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[8]\n", + " ep2:\n", + " component: IRONWOOD[24]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[9]\n", + " ep2:\n", + " component: IRONWOOD[10]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[9]\n", + " ep2:\n", + " component: IRONWOOD[13]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[9]\n", + " ep2:\n", + " component: IRONWOOD[25]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[10]\n", + " ep2:\n", + " component: IRONWOOD[11]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[10]\n", + " ep2:\n", + " component: IRONWOOD[14]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[10]\n", + " ep2:\n", + " component: IRONWOOD[26]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[11]\n", + " ep2:\n", + " component: IRONWOOD[8]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[11]\n", + " ep2:\n", + " component: IRONWOOD[15]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[11]\n", + " ep2:\n", + " component: IRONWOOD[27]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[12]\n", + " ep2:\n", + " component: IRONWOOD[13]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[12]\n", + " ep2:\n", + " component: IRONWOOD[0]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[12]\n", + " ep2:\n", + " component: IRONWOOD[28]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[13]\n", + " ep2:\n", + " component: IRONWOOD[14]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[13]\n", + " ep2:\n", + " component: IRONWOOD[1]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[13]\n", + " ep2:\n", + " component: IRONWOOD[29]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[14]\n", + " ep2:\n", + " component: IRONWOOD[15]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[14]\n", + " ep2:\n", + " component: IRONWOOD[2]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[14]\n", + " ep2:\n", + " component: IRONWOOD[30]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[15]\n", + " ep2:\n", + " component: IRONWOOD[12]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[15]\n", + " ep2:\n", + " component: IRONWOOD[3]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[15]\n", + " ep2:\n", + " component: IRONWOOD[31]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[16]\n", + " ep2:\n", + " component: IRONWOOD[17]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[16]\n", + " ep2:\n", + " component: IRONWOOD[20]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[16]\n", + " ep2:\n", + " component: IRONWOOD[32]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[17]\n", + " ep2:\n", + " component: IRONWOOD[18]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[17]\n", + " ep2:\n", + " component: IRONWOOD[21]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[17]\n", + " ep2:\n", + " component: IRONWOOD[33]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[18]\n", + " ep2:\n", + " component: IRONWOOD[19]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[18]\n", + " ep2:\n", + " component: IRONWOOD[22]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[18]\n", + " ep2:\n", + " component: IRONWOOD[34]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[19]\n", + " ep2:\n", + " component: IRONWOOD[16]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[19]\n", + " ep2:\n", + " component: IRONWOOD[23]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[19]\n", + " ep2:\n", + " component: IRONWOOD[35]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[20]\n", + " ep2:\n", + " component: IRONWOOD[21]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[20]\n", + " ep2:\n", + " component: IRONWOOD[24]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[20]\n", + " ep2:\n", + " component: IRONWOOD[36]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[21]\n", + " ep2:\n", + " component: IRONWOOD[22]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[21]\n", + " ep2:\n", + " component: IRONWOOD[25]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[21]\n", + " ep2:\n", + " component: IRONWOOD[37]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[22]\n", + " ep2:\n", + " component: IRONWOOD[23]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[22]\n", + " ep2:\n", + " component: IRONWOOD[26]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[22]\n", + " ep2:\n", + " component: IRONWOOD[38]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[23]\n", + " ep2:\n", + " component: IRONWOOD[20]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[23]\n", + " ep2:\n", + " component: IRONWOOD[27]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[23]\n", + " ep2:\n", + " component: IRONWOOD[39]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[24]\n", + " ep2:\n", + " component: IRONWOOD[25]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[24]\n", + " ep2:\n", + " component: IRONWOOD[28]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[24]\n", + " ep2:\n", + " component: IRONWOOD[40]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[25]\n", + " ep2:\n", + " component: IRONWOOD[26]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[25]\n", + " ep2:\n", + " component: IRONWOOD[29]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[25]\n", + " ep2:\n", + " component: IRONWOOD[41]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[26]\n", + " ep2:\n", + " component: IRONWOOD[27]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[26]\n", + " ep2:\n", + " component: IRONWOOD[30]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[26]\n", + " ep2:\n", + " component: IRONWOOD[42]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[27]\n", + " ep2:\n", + " component: IRONWOOD[24]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[27]\n", + " ep2:\n", + " component: IRONWOOD[31]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[27]\n", + " ep2:\n", + " component: IRONWOOD[43]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[28]\n", + " ep2:\n", + " component: IRONWOOD[29]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[28]\n", + " ep2:\n", + " component: IRONWOOD[16]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[28]\n", + " ep2:\n", + " component: IRONWOOD[44]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[29]\n", + " ep2:\n", + " component: IRONWOOD[30]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[29]\n", + " ep2:\n", + " component: IRONWOOD[17]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[29]\n", + " ep2:\n", + " component: IRONWOOD[45]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[30]\n", + " ep2:\n", + " component: IRONWOOD[31]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[30]\n", + " ep2:\n", + " component: IRONWOOD[18]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[30]\n", + " ep2:\n", + " component: IRONWOOD[46]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[31]\n", + " ep2:\n", + " component: IRONWOOD[28]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[31]\n", + " ep2:\n", + " component: IRONWOOD[19]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[31]\n", + " ep2:\n", + " component: IRONWOOD[47]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[32]\n", + " ep2:\n", + " component: IRONWOOD[33]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[32]\n", + " ep2:\n", + " component: IRONWOOD[36]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[32]\n", + " ep2:\n", + " component: IRONWOOD[48]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[33]\n", + " ep2:\n", + " component: IRONWOOD[34]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[33]\n", + " ep2:\n", + " component: IRONWOOD[37]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[33]\n", + " ep2:\n", + " component: IRONWOOD[49]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[34]\n", + " ep2:\n", + " component: IRONWOOD[35]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[34]\n", + " ep2:\n", + " component: IRONWOOD[38]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[34]\n", + " ep2:\n", + " component: IRONWOOD[50]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[35]\n", + " ep2:\n", + " component: IRONWOOD[32]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[35]\n", + " ep2:\n", + " component: IRONWOOD[39]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[35]\n", + " ep2:\n", + " component: IRONWOOD[51]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[36]\n", + " ep2:\n", + " component: IRONWOOD[37]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[36]\n", + " ep2:\n", + " component: IRONWOOD[40]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[36]\n", + " ep2:\n", + " component: IRONWOOD[52]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[37]\n", + " ep2:\n", + " component: IRONWOOD[38]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[37]\n", + " ep2:\n", + " component: IRONWOOD[41]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[37]\n", + " ep2:\n", + " component: IRONWOOD[53]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[38]\n", + " ep2:\n", + " component: IRONWOOD[39]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[38]\n", + " ep2:\n", + " component: IRONWOOD[42]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[38]\n", + " ep2:\n", + " component: IRONWOOD[54]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[39]\n", + " ep2:\n", + " component: IRONWOOD[36]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[39]\n", + " ep2:\n", + " component: IRONWOOD[43]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[39]\n", + " ep2:\n", + " component: IRONWOOD[55]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[40]\n", + " ep2:\n", + " component: IRONWOOD[41]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[40]\n", + " ep2:\n", + " component: IRONWOOD[44]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[40]\n", + " ep2:\n", + " component: IRONWOOD[56]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[41]\n", + " ep2:\n", + " component: IRONWOOD[42]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[41]\n", + " ep2:\n", + " component: IRONWOOD[45]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[41]\n", + " ep2:\n", + " component: IRONWOOD[57]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[42]\n", + " ep2:\n", + " component: IRONWOOD[43]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[42]\n", + " ep2:\n", + " component: IRONWOOD[46]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[42]\n", + " ep2:\n", + " component: IRONWOOD[58]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[43]\n", + " ep2:\n", + " component: IRONWOOD[40]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[43]\n", + " ep2:\n", + " component: IRONWOOD[47]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[43]\n", + " ep2:\n", + " component: IRONWOOD[59]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[44]\n", + " ep2:\n", + " component: IRONWOOD[45]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[44]\n", + " ep2:\n", + " component: IRONWOOD[32]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[44]\n", + " ep2:\n", + " component: IRONWOOD[60]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[45]\n", + " ep2:\n", + " component: IRONWOOD[46]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[45]\n", + " ep2:\n", + " component: IRONWOOD[33]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[45]\n", + " ep2:\n", + " component: IRONWOOD[61]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[46]\n", + " ep2:\n", + " component: IRONWOOD[47]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[46]\n", + " ep2:\n", + " component: IRONWOOD[34]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[46]\n", + " ep2:\n", + " component: IRONWOOD[62]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[47]\n", + " ep2:\n", + " component: IRONWOOD[44]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[47]\n", + " ep2:\n", + " component: IRONWOOD[35]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[47]\n", + " ep2:\n", + " component: IRONWOOD[63]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[48]\n", + " ep2:\n", + " component: IRONWOOD[49]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[48]\n", + " ep2:\n", + " component: IRONWOOD[52]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[48]\n", + " ep2:\n", + " component: IRONWOOD[0]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[49]\n", + " ep2:\n", + " component: IRONWOOD[50]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[49]\n", + " ep2:\n", + " component: IRONWOOD[53]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[49]\n", + " ep2:\n", + " component: IRONWOOD[1]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[50]\n", + " ep2:\n", + " component: IRONWOOD[51]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[50]\n", + " ep2:\n", + " component: IRONWOOD[54]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[50]\n", + " ep2:\n", + " component: IRONWOOD[2]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[51]\n", + " ep2:\n", + " component: IRONWOOD[48]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[51]\n", + " ep2:\n", + " component: IRONWOOD[55]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[51]\n", + " ep2:\n", + " component: IRONWOOD[3]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[52]\n", + " ep2:\n", + " component: IRONWOOD[53]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[52]\n", + " ep2:\n", + " component: IRONWOOD[56]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[52]\n", + " ep2:\n", + " component: IRONWOOD[4]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[53]\n", + " ep2:\n", + " component: IRONWOOD[54]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[53]\n", + " ep2:\n", + " component: IRONWOOD[57]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[53]\n", + " ep2:\n", + " component: IRONWOOD[5]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[54]\n", + " ep2:\n", + " component: IRONWOOD[55]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[54]\n", + " ep2:\n", + " component: IRONWOOD[58]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[54]\n", + " ep2:\n", + " component: IRONWOOD[6]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[55]\n", + " ep2:\n", + " component: IRONWOOD[52]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[55]\n", + " ep2:\n", + " component: IRONWOOD[59]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[55]\n", + " ep2:\n", + " component: IRONWOOD[7]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[56]\n", + " ep2:\n", + " component: IRONWOOD[57]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[56]\n", + " ep2:\n", + " component: IRONWOOD[60]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[56]\n", + " ep2:\n", + " component: IRONWOOD[8]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[57]\n", + " ep2:\n", + " component: IRONWOOD[58]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[57]\n", + " ep2:\n", + " component: IRONWOOD[61]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[57]\n", + " ep2:\n", + " component: IRONWOOD[9]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[58]\n", + " ep2:\n", + " component: IRONWOOD[59]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[58]\n", + " ep2:\n", + " component: IRONWOOD[62]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[58]\n", + " ep2:\n", + " component: IRONWOOD[10]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[59]\n", + " ep2:\n", + " component: IRONWOOD[56]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[59]\n", + " ep2:\n", + " component: IRONWOOD[63]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[59]\n", + " ep2:\n", + " component: IRONWOOD[11]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[60]\n", + " ep2:\n", + " component: IRONWOOD[61]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[60]\n", + " ep2:\n", + " component: IRONWOOD[48]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[60]\n", + " ep2:\n", + " component: IRONWOOD[12]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[61]\n", + " ep2:\n", + " component: IRONWOOD[62]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[61]\n", + " ep2:\n", + " component: IRONWOOD[49]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[61]\n", + " ep2:\n", + " component: IRONWOOD[13]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[62]\n", + " ep2:\n", + " component: IRONWOOD[63]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[62]\n", + " ep2:\n", + " component: IRONWOOD[50]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[62]\n", + " ep2:\n", + " component: IRONWOOD[14]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[63]\n", + " ep2:\n", + " component: IRONWOOD[60]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[63]\n", + " ep2:\n", + " component: IRONWOOD[51]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: IRONWOOD[63]\n", + " ep2:\n", + " component: IRONWOOD[15]\n", + " link: ici\n", + " scheme: one2one\n", + " - ep1:\n", + " component: AMD_TURIN_ZEN5_EPYC[0]\n", + " ep2:\n", + " component: IRONWOOD[0]\n", + " link: pcie_gen5\n", + " scheme: one2one\n", + " - ep1:\n", + " component: AMD_TURIN_ZEN5_EPYC[0]\n", + " ep2:\n", + " component: IRONWOOD[1]\n", + " link: pcie_gen5\n", + " scheme: one2one\n", + " - ep1:\n", + " component: AMD_TURIN_ZEN5_EPYC[1]\n", + " ep2:\n", + " component: IRONWOOD[2]\n", + " link: pcie_gen5\n", + " scheme: one2one\n", + " - ep1:\n", + " component: AMD_TURIN_ZEN5_EPYC[1]\n", + " ep2:\n", + " component: IRONWOOD[3]\n", + " link: pcie_gen5\n", + " scheme: one2one\n", + " - ep1:\n", + " component: AMD_TURIN_ZEN5_EPYC[2]\n", + " ep2:\n", + " component: IRONWOOD[4]\n", + " link: pcie_gen5\n", + " scheme: one2one\n", + " - ep1:\n", + " component: AMD_TURIN_ZEN5_EPYC[2]\n", + " ep2:\n", + " component: IRONWOOD[5]\n", + " link: pcie_gen5\n", + " scheme: one2one\n", + " - ep1:\n", + " component: AMD_TURIN_ZEN5_EPYC[3]\n", + " ep2:\n", + " component: IRONWOOD[6]\n", + " link: pcie_gen5\n", + " scheme: one2one\n", + " - ep1:\n", + " component: AMD_TURIN_ZEN5_EPYC[3]\n", + " ep2:\n", + " component: IRONWOOD[7]\n", + " link: pcie_gen5\n", + " scheme: one2one\n", + " - ep1:\n", + " component: AMD_TURIN_ZEN5_EPYC[4]\n", + " ep2:\n", + " component: IRONWOOD[8]\n", + " link: pcie_gen5\n", + " scheme: one2one\n", + " - ep1:\n", + " component: AMD_TURIN_ZEN5_EPYC[4]\n", + " ep2:\n", + " component: IRONWOOD[9]\n", + " link: pcie_gen5\n", + " scheme: one2one\n", + " - ep1:\n", + " component: AMD_TURIN_ZEN5_EPYC[5]\n", + " ep2:\n", + " component: IRONWOOD[10]\n", + " link: pcie_gen5\n", + " scheme: one2one\n", + " - ep1:\n", + " component: AMD_TURIN_ZEN5_EPYC[5]\n", + " ep2:\n", + " component: IRONWOOD[11]\n", + " link: pcie_gen5\n", + " scheme: one2one\n", + " - ep1:\n", + " component: AMD_TURIN_ZEN5_EPYC[6]\n", + " ep2:\n", + " component: IRONWOOD[12]\n", + " link: pcie_gen5\n", + " scheme: one2one\n", + " - ep1:\n", + " component: AMD_TURIN_ZEN5_EPYC[6]\n", + " ep2:\n", + " component: IRONWOOD[13]\n", + " link: pcie_gen5\n", + " scheme: one2one\n", + " - ep1:\n", + " component: AMD_TURIN_ZEN5_EPYC[7]\n", + " ep2:\n", + " component: IRONWOOD[14]\n", + " link: pcie_gen5\n", + " scheme: one2one\n", + " - ep1:\n", + " component: AMD_TURIN_ZEN5_EPYC[7]\n", + " ep2:\n", + " component: IRONWOOD[15]\n", + " link: pcie_gen5\n", + " scheme: one2one\n", + " - ep1:\n", + " component: AMD_TURIN_ZEN5_EPYC[8]\n", + " ep2:\n", + " component: IRONWOOD[16]\n", + " link: pcie_gen5\n", + " scheme: one2one\n", + " - ep1:\n", + " component: AMD_TURIN_ZEN5_EPYC[8]\n", + " ep2:\n", + " component: IRONWOOD[17]\n", + " link: pcie_gen5\n", + " scheme: one2one\n", + " - ep1:\n", + " component: AMD_TURIN_ZEN5_EPYC[9]\n", + " ep2:\n", + " component: IRONWOOD[18]\n", + " link: pcie_gen5\n", + " scheme: one2one\n", + " - ep1:\n", + " component: AMD_TURIN_ZEN5_EPYC[9]\n", + " ep2:\n", + " component: IRONWOOD[19]\n", + " link: pcie_gen5\n", + " scheme: one2one\n", + " - ep1:\n", + " component: AMD_TURIN_ZEN5_EPYC[10]\n", + " ep2:\n", + " component: IRONWOOD[20]\n", + " link: pcie_gen5\n", + " scheme: one2one\n", + " - ep1:\n", + " component: AMD_TURIN_ZEN5_EPYC[10]\n", + " ep2:\n", + " component: IRONWOOD[21]\n", + " link: pcie_gen5\n", + " scheme: one2one\n", + " - ep1:\n", + " component: AMD_TURIN_ZEN5_EPYC[11]\n", + " ep2:\n", + " component: IRONWOOD[22]\n", + " link: pcie_gen5\n", + " scheme: one2one\n", + " - ep1:\n", + " component: AMD_TURIN_ZEN5_EPYC[11]\n", + " ep2:\n", + " component: IRONWOOD[23]\n", + " link: pcie_gen5\n", + " scheme: one2one\n", + " - ep1:\n", + " component: AMD_TURIN_ZEN5_EPYC[12]\n", + " ep2:\n", + " component: IRONWOOD[24]\n", + " link: pcie_gen5\n", + " scheme: one2one\n", + " - ep1:\n", + " component: AMD_TURIN_ZEN5_EPYC[12]\n", + " ep2:\n", + " component: IRONWOOD[25]\n", + " link: pcie_gen5\n", + " scheme: one2one\n", + " - ep1:\n", + " component: AMD_TURIN_ZEN5_EPYC[13]\n", + " ep2:\n", + " component: IRONWOOD[26]\n", + " link: pcie_gen5\n", + " scheme: one2one\n", + " - ep1:\n", + " component: AMD_TURIN_ZEN5_EPYC[13]\n", + " ep2:\n", + " component: IRONWOOD[27]\n", + " link: pcie_gen5\n", + " scheme: one2one\n", + " - ep1:\n", + " component: AMD_TURIN_ZEN5_EPYC[14]\n", + " ep2:\n", + " component: IRONWOOD[28]\n", + " link: pcie_gen5\n", + " scheme: one2one\n", + " - ep1:\n", + " component: AMD_TURIN_ZEN5_EPYC[14]\n", + " ep2:\n", + " component: IRONWOOD[29]\n", + " link: pcie_gen5\n", + " scheme: one2one\n", + " - ep1:\n", + " component: AMD_TURIN_ZEN5_EPYC[15]\n", + " ep2:\n", + " component: IRONWOOD[30]\n", + " link: pcie_gen5\n", + " scheme: one2one\n", + " - ep1:\n", + " component: AMD_TURIN_ZEN5_EPYC[15]\n", + " ep2:\n", + " component: IRONWOOD[31]\n", + " link: pcie_gen5\n", + " scheme: one2one\n", + " - ep1:\n", + " component: AMD_TURIN_ZEN5_EPYC[16]\n", + " ep2:\n", + " component: IRONWOOD[32]\n", + " link: pcie_gen5\n", + " scheme: one2one\n", + " - ep1:\n", + " component: AMD_TURIN_ZEN5_EPYC[16]\n", + " ep2:\n", + " component: IRONWOOD[33]\n", + " link: pcie_gen5\n", + " scheme: one2one\n", + " - ep1:\n", + " component: AMD_TURIN_ZEN5_EPYC[17]\n", + " ep2:\n", + " component: IRONWOOD[34]\n", + " link: pcie_gen5\n", + " scheme: one2one\n", + " - ep1:\n", + " component: AMD_TURIN_ZEN5_EPYC[17]\n", + " ep2:\n", + " component: IRONWOOD[35]\n", + " link: pcie_gen5\n", + " scheme: one2one\n", + " - ep1:\n", + " component: AMD_TURIN_ZEN5_EPYC[18]\n", + " ep2:\n", + " component: IRONWOOD[36]\n", + " link: pcie_gen5\n", + " scheme: one2one\n", + " - ep1:\n", + " component: AMD_TURIN_ZEN5_EPYC[18]\n", + " ep2:\n", + " component: IRONWOOD[37]\n", + " link: pcie_gen5\n", + " scheme: one2one\n", + " - ep1:\n", + " component: AMD_TURIN_ZEN5_EPYC[19]\n", + " ep2:\n", + " component: IRONWOOD[38]\n", + " link: pcie_gen5\n", + " scheme: one2one\n", + " - ep1:\n", + " component: AMD_TURIN_ZEN5_EPYC[19]\n", + " ep2:\n", + " component: IRONWOOD[39]\n", + " link: pcie_gen5\n", + " scheme: one2one\n", + " - ep1:\n", + " component: AMD_TURIN_ZEN5_EPYC[20]\n", + " ep2:\n", + " component: IRONWOOD[40]\n", + " link: pcie_gen5\n", + " scheme: one2one\n", + " - ep1:\n", + " component: AMD_TURIN_ZEN5_EPYC[20]\n", + " ep2:\n", + " component: IRONWOOD[41]\n", + " link: pcie_gen5\n", + " scheme: one2one\n", + " - ep1:\n", + " component: AMD_TURIN_ZEN5_EPYC[21]\n", + " ep2:\n", + " component: IRONWOOD[42]\n", + " link: pcie_gen5\n", + " scheme: one2one\n", + " - ep1:\n", + " component: AMD_TURIN_ZEN5_EPYC[21]\n", + " ep2:\n", + " component: IRONWOOD[43]\n", + " link: pcie_gen5\n", + " scheme: one2one\n", + " - ep1:\n", + " component: AMD_TURIN_ZEN5_EPYC[22]\n", + " ep2:\n", + " component: IRONWOOD[44]\n", + " link: pcie_gen5\n", + " scheme: one2one\n", + " - ep1:\n", + " component: AMD_TURIN_ZEN5_EPYC[22]\n", + " ep2:\n", + " component: IRONWOOD[45]\n", + " link: pcie_gen5\n", + " scheme: one2one\n", + " - ep1:\n", + " component: AMD_TURIN_ZEN5_EPYC[23]\n", + " ep2:\n", + " component: IRONWOOD[46]\n", + " link: pcie_gen5\n", + " scheme: one2one\n", + " - ep1:\n", + " component: AMD_TURIN_ZEN5_EPYC[23]\n", + " ep2:\n", + " component: IRONWOOD[47]\n", + " link: pcie_gen5\n", + " scheme: one2one\n", + " - ep1:\n", + " component: AMD_TURIN_ZEN5_EPYC[24]\n", + " ep2:\n", + " component: IRONWOOD[48]\n", + " link: pcie_gen5\n", + " scheme: one2one\n", + " - ep1:\n", + " component: AMD_TURIN_ZEN5_EPYC[24]\n", + " ep2:\n", + " component: IRONWOOD[49]\n", + " link: pcie_gen5\n", + " scheme: one2one\n", + " - ep1:\n", + " component: AMD_TURIN_ZEN5_EPYC[25]\n", + " ep2:\n", + " component: IRONWOOD[50]\n", + " link: pcie_gen5\n", + " scheme: one2one\n", + " - ep1:\n", + " component: AMD_TURIN_ZEN5_EPYC[25]\n", + " ep2:\n", + " component: IRONWOOD[51]\n", + " link: pcie_gen5\n", + " scheme: one2one\n", + " - ep1:\n", + " component: AMD_TURIN_ZEN5_EPYC[26]\n", + " ep2:\n", + " component: IRONWOOD[52]\n", + " link: pcie_gen5\n", + " scheme: one2one\n", + " - ep1:\n", + " component: AMD_TURIN_ZEN5_EPYC[26]\n", + " ep2:\n", + " component: IRONWOOD[53]\n", + " link: pcie_gen5\n", + " scheme: one2one\n", + " - ep1:\n", + " component: AMD_TURIN_ZEN5_EPYC[27]\n", + " ep2:\n", + " component: IRONWOOD[54]\n", + " link: pcie_gen5\n", + " scheme: one2one\n", + " - ep1:\n", + " component: AMD_TURIN_ZEN5_EPYC[27]\n", + " ep2:\n", + " component: IRONWOOD[55]\n", + " link: pcie_gen5\n", + " scheme: one2one\n", + " - ep1:\n", + " component: AMD_TURIN_ZEN5_EPYC[28]\n", + " ep2:\n", + " component: IRONWOOD[56]\n", + " link: pcie_gen5\n", + " scheme: one2one\n", + " - ep1:\n", + " component: AMD_TURIN_ZEN5_EPYC[28]\n", + " ep2:\n", + " component: IRONWOOD[57]\n", + " link: pcie_gen5\n", + " scheme: one2one\n", + " - ep1:\n", + " component: AMD_TURIN_ZEN5_EPYC[29]\n", + " ep2:\n", + " component: IRONWOOD[58]\n", + " link: pcie_gen5\n", + " scheme: one2one\n", + " - ep1:\n", + " component: AMD_TURIN_ZEN5_EPYC[29]\n", + " ep2:\n", + " component: IRONWOOD[59]\n", + " link: pcie_gen5\n", + " scheme: one2one\n", + " - ep1:\n", + " component: AMD_TURIN_ZEN5_EPYC[30]\n", + " ep2:\n", + " component: IRONWOOD[60]\n", + " link: pcie_gen5\n", + " scheme: one2one\n", + " - ep1:\n", + " component: AMD_TURIN_ZEN5_EPYC[30]\n", + " ep2:\n", + " component: IRONWOOD[61]\n", + " link: pcie_gen5\n", + " scheme: one2one\n", + " - ep1:\n", + " component: AMD_TURIN_ZEN5_EPYC[31]\n", + " ep2:\n", + " component: IRONWOOD[62]\n", + " link: pcie_gen5\n", + " scheme: one2one\n", + " - ep1:\n", + " component: AMD_TURIN_ZEN5_EPYC[31]\n", + " ep2:\n", + " component: IRONWOOD[63]\n", + " link: pcie_gen5\n", + " scheme: one2one\n", + " - ep1:\n", + " component: AMD_TURIN_ZEN5_EPYC[0]\n", + " ep2:\n", + " component: nic200[0]\n", + " link: pcie_gen5\n", + " scheme: one2one\n", + " - ep1:\n", + " component: AMD_TURIN_ZEN5_EPYC[1]\n", + " ep2:\n", + " component: nic200[1]\n", + " link: pcie_gen5\n", + " scheme: one2one\n", + " - ep1:\n", + " component: AMD_TURIN_ZEN5_EPYC[2]\n", + " ep2:\n", + " component: nic200[2]\n", + " link: pcie_gen5\n", + " scheme: one2one\n", + " - ep1:\n", + " component: AMD_TURIN_ZEN5_EPYC[3]\n", + " ep2:\n", + " component: nic200[3]\n", + " link: pcie_gen5\n", + " scheme: one2one\n", + " - ep1:\n", + " component: AMD_TURIN_ZEN5_EPYC[4]\n", + " ep2:\n", + " component: nic200[4]\n", + " link: pcie_gen5\n", + " scheme: one2one\n", + " - ep1:\n", + " component: AMD_TURIN_ZEN5_EPYC[5]\n", + " ep2:\n", + " component: nic200[5]\n", + " link: pcie_gen5\n", + " scheme: one2one\n", + " - ep1:\n", + " component: AMD_TURIN_ZEN5_EPYC[6]\n", + " ep2:\n", + " component: nic200[6]\n", + " link: pcie_gen5\n", + " scheme: one2one\n", + " - ep1:\n", + " component: AMD_TURIN_ZEN5_EPYC[7]\n", + " ep2:\n", + " component: nic200[7]\n", + " link: pcie_gen5\n", + " scheme: one2one\n", + " - ep1:\n", + " component: AMD_TURIN_ZEN5_EPYC[8]\n", + " ep2:\n", + " component: nic200[8]\n", + " link: pcie_gen5\n", + " scheme: one2one\n", + " - ep1:\n", + " component: AMD_TURIN_ZEN5_EPYC[9]\n", + " ep2:\n", + " component: nic200[9]\n", + " link: pcie_gen5\n", + " scheme: one2one\n", + " - ep1:\n", + " component: AMD_TURIN_ZEN5_EPYC[10]\n", + " ep2:\n", + " component: nic200[10]\n", + " link: pcie_gen5\n", + " scheme: one2one\n", + " - ep1:\n", + " component: AMD_TURIN_ZEN5_EPYC[11]\n", + " ep2:\n", + " component: nic200[11]\n", + " link: pcie_gen5\n", + " scheme: one2one\n", + " - ep1:\n", + " component: AMD_TURIN_ZEN5_EPYC[12]\n", + " ep2:\n", + " component: nic200[12]\n", + " link: pcie_gen5\n", + " scheme: one2one\n", + " - ep1:\n", + " component: AMD_TURIN_ZEN5_EPYC[13]\n", + " ep2:\n", + " component: nic200[13]\n", + " link: pcie_gen5\n", + " scheme: one2one\n", + " - ep1:\n", + " component: AMD_TURIN_ZEN5_EPYC[14]\n", + " ep2:\n", + " component: nic200[14]\n", + " link: pcie_gen5\n", + " scheme: one2one\n", + " - ep1:\n", + " component: AMD_TURIN_ZEN5_EPYC[15]\n", + " ep2:\n", + " component: nic200[15]\n", + " link: pcie_gen5\n", + " scheme: one2one\n", + " - ep1:\n", + " component: AMD_TURIN_ZEN5_EPYC[16]\n", + " ep2:\n", + " component: nic200[16]\n", + " link: pcie_gen5\n", + " scheme: one2one\n", + " - ep1:\n", + " component: AMD_TURIN_ZEN5_EPYC[17]\n", + " ep2:\n", + " component: nic200[17]\n", + " link: pcie_gen5\n", + " scheme: one2one\n", + " - ep1:\n", + " component: AMD_TURIN_ZEN5_EPYC[18]\n", + " ep2:\n", + " component: nic200[18]\n", + " link: pcie_gen5\n", + " scheme: one2one\n", + " - ep1:\n", + " component: AMD_TURIN_ZEN5_EPYC[19]\n", + " ep2:\n", + " component: nic200[19]\n", + " link: pcie_gen5\n", + " scheme: one2one\n", + " - ep1:\n", + " component: AMD_TURIN_ZEN5_EPYC[20]\n", + " ep2:\n", + " component: nic200[20]\n", + " link: pcie_gen5\n", + " scheme: one2one\n", + " - ep1:\n", + " component: AMD_TURIN_ZEN5_EPYC[21]\n", + " ep2:\n", + " component: nic200[21]\n", + " link: pcie_gen5\n", + " scheme: one2one\n", + " - ep1:\n", + " component: AMD_TURIN_ZEN5_EPYC[22]\n", + " ep2:\n", + " component: nic200[22]\n", + " link: pcie_gen5\n", + " scheme: one2one\n", + " - ep1:\n", + " component: AMD_TURIN_ZEN5_EPYC[23]\n", + " ep2:\n", + " component: nic200[23]\n", + " link: pcie_gen5\n", + " scheme: one2one\n", + " - ep1:\n", + " component: AMD_TURIN_ZEN5_EPYC[24]\n", + " ep2:\n", + " component: nic200[24]\n", + " link: pcie_gen5\n", + " scheme: one2one\n", + " - ep1:\n", + " component: AMD_TURIN_ZEN5_EPYC[25]\n", + " ep2:\n", + " component: nic200[25]\n", + " link: pcie_gen5\n", + " scheme: one2one\n", + " - ep1:\n", + " component: AMD_TURIN_ZEN5_EPYC[26]\n", + " ep2:\n", + " component: nic200[26]\n", + " link: pcie_gen5\n", + " scheme: one2one\n", + " - ep1:\n", + " component: AMD_TURIN_ZEN5_EPYC[27]\n", + " ep2:\n", + " component: nic200[27]\n", + " link: pcie_gen5\n", + " scheme: one2one\n", + " - ep1:\n", + " component: AMD_TURIN_ZEN5_EPYC[28]\n", + " ep2:\n", + " component: nic200[28]\n", + " link: pcie_gen5\n", + " scheme: one2one\n", + " - ep1:\n", + " component: AMD_TURIN_ZEN5_EPYC[29]\n", + " ep2:\n", + " component: nic200[29]\n", + " link: pcie_gen5\n", + " scheme: one2one\n", + " - ep1:\n", + " component: AMD_TURIN_ZEN5_EPYC[30]\n", + " ep2:\n", + " component: nic200[30]\n", + " link: pcie_gen5\n", + " scheme: one2one\n", + " - ep1:\n", + " component: AMD_TURIN_ZEN5_EPYC[31]\n", + " ep2:\n", + " component: nic200[31]\n", + " link: pcie_gen5\n", + " scheme: one2one\n", + " links:\n", + " - description: Interchip Interconnect (ICI) link\n", + " name: ici\n", + " physical:\n", + " bandwidth:\n", + " choice: gigabits_per_second\n", + " gigabits_per_second: 1400\n", + " - description: PCI Express Gen5 link\n", + " name: pcie_gen5\n", + " physical:\n", + " bandwidth:\n", + " choice: gigabits_per_second\n", + " gigabits_per_second: 128\n", + " name: IRONWOOD_TORUS_RACK_4x4x4\n", + "instances:\n", + "- count: 1\n", + " device: IRONWOOD_TORUS_RACK_4x4x4\n", + " name: IRONWOOD_TORUS_RACK_4x4x4\n", + "\n" + ] + } + ], + "source": [ + "server = IronwoodRack()\n", + "infrastructure = Infrastructure()\n", + "infrastructure.devices.append(server)\n", + "infrastructure.instances.add(name=server.name, device=server.name, count=1)\n", + "astra.configuration.infragraph.infrastructure.deserialize(infrastructure.serialize())\n", + "print(astra.configuration.infragraph.infrastructure)" + ] + }, + { + "cell_type": "markdown", + "id": "a1a959f5", + "metadata": {}, + "source": [ + "##### Initialize the Infragraph service, display the fabric topology, and retrieve/set the total number of NPUs to generate the collective" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "d33bcaf7", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "╙── IRONWOOD_TORUS_RACK_4x4x4.0.nic200.17\n", + " │\n", + " IRONWOOD_TORUS_RACK_4x4x4.0.AMD_TURIN_ZEN5_EPYC.17\n", + " ├── IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.34\n", + " │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.18\n", + " │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.2\n", + " │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.1\n", + " │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.0\n", + " │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.4\n", + " │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.5 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.1\n", + " │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.6 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.2\n", + " │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.7 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.4\n", + " │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.3 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.2, IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.0\n", + " │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.19 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.18\n", + " │ │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.16 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.17 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.1, IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.18\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.21 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.5\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.20 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.4, IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.16\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.24\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.8 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.4\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.9 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.5\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.10 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.6\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.11 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.7, IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.8\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.15 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.3\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.14 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.10, IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.2\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.13 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.9, IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.1\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.12 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.8, IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.0, IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.15\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.28 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.24, IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.16\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.29 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.13, IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.17\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.25 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.9, IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.21, IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.24\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.26 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.10\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.22 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.6, IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.18, IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.21\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.23 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.7, IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.19, IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.20\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.27 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.11, IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.26, IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.24\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.31 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.15, IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.28, IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.19\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.30 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.14, IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.26, IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.29, IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.18\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.46 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.34\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.42 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.26\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.38 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.22, IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.34\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.37 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.21\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.33 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.17, IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.34\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.32 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.16\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.36 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.20, IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.37\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.40 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.24\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.41 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.25, IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.37, IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.42\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.45 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.29, IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.46, IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.33\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.44 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.28, IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.40, IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.32\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.60 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.12\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.56 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.40, IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.8\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.52 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.36, IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.4\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.48 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.32, IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.0, IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.60\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.49 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.33, IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.1\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.50 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.34, IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.2\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.51 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.48, IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.3\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.35 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.19, IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.34, IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.32, IRONWOOD_TORUS_RACK_4x4x4.0.AMD_TURIN_ZEN5_EPYC.17\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.39 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.23, IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.38, IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.36\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.43 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.27, IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.42, IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.40\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.47 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.31, IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.46, IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.44, IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.35\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.63 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.60, IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.51, IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.15\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.59 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.43, IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.56, IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.11\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.55 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.39, IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.51, IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.52, IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.7\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.54 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.38, IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.50, IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.6\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.53 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.37, IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.49, IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.52, IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.5\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.57 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.41, IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.56, IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.9\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.58 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.42, IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.54, IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.59, IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.10\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.62 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.46, IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.63, IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.50, IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.14\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.61 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.45, IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.57, IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.60, IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.49, IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.13\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ IRONWOOD_TORUS_RACK_4x4x4.0.AMD_TURIN_ZEN5_EPYC.30 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.60\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ IRONWOOD_TORUS_RACK_4x4x4.0.nic200.30\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── IRONWOOD_TORUS_RACK_4x4x4.0.AMD_TURIN_ZEN5_EPYC.31 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.63\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ IRONWOOD_TORUS_RACK_4x4x4.0.nic200.31\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── IRONWOOD_TORUS_RACK_4x4x4.0.AMD_TURIN_ZEN5_EPYC.29 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.59\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ IRONWOOD_TORUS_RACK_4x4x4.0.nic200.29\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.AMD_TURIN_ZEN5_EPYC.28 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.56\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ IRONWOOD_TORUS_RACK_4x4x4.0.nic200.28\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── IRONWOOD_TORUS_RACK_4x4x4.0.AMD_TURIN_ZEN5_EPYC.26 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.52\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ IRONWOOD_TORUS_RACK_4x4x4.0.nic200.26\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.AMD_TURIN_ZEN5_EPYC.27 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.55\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ IRONWOOD_TORUS_RACK_4x4x4.0.nic200.27\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── IRONWOOD_TORUS_RACK_4x4x4.0.AMD_TURIN_ZEN5_EPYC.23 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.46\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ IRONWOOD_TORUS_RACK_4x4x4.0.nic200.23\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.AMD_TURIN_ZEN5_EPYC.21 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.42\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ IRONWOOD_TORUS_RACK_4x4x4.0.nic200.21\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.AMD_TURIN_ZEN5_EPYC.19 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.38\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ IRONWOOD_TORUS_RACK_4x4x4.0.nic200.19\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.AMD_TURIN_ZEN5_EPYC.25 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.50\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ IRONWOOD_TORUS_RACK_4x4x4.0.nic200.25\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.AMD_TURIN_ZEN5_EPYC.24 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.48\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ IRONWOOD_TORUS_RACK_4x4x4.0.nic200.24\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.AMD_TURIN_ZEN5_EPYC.22 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.45\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ IRONWOOD_TORUS_RACK_4x4x4.0.nic200.22\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.AMD_TURIN_ZEN5_EPYC.20 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.40\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ IRONWOOD_TORUS_RACK_4x4x4.0.nic200.20\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.AMD_TURIN_ZEN5_EPYC.18 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.37\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ IRONWOOD_TORUS_RACK_4x4x4.0.nic200.18\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.AMD_TURIN_ZEN5_EPYC.16 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.33\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ IRONWOOD_TORUS_RACK_4x4x4.0.nic200.16\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── IRONWOOD_TORUS_RACK_4x4x4.0.AMD_TURIN_ZEN5_EPYC.15 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.31\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ IRONWOOD_TORUS_RACK_4x4x4.0.nic200.15\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.AMD_TURIN_ZEN5_EPYC.13 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.26\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ IRONWOOD_TORUS_RACK_4x4x4.0.nic200.13\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.AMD_TURIN_ZEN5_EPYC.11 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.22\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ IRONWOOD_TORUS_RACK_4x4x4.0.nic200.11\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.AMD_TURIN_ZEN5_EPYC.12 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.24\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ IRONWOOD_TORUS_RACK_4x4x4.0.nic200.12\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.AMD_TURIN_ZEN5_EPYC.14 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.28\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ IRONWOOD_TORUS_RACK_4x4x4.0.nic200.14\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.AMD_TURIN_ZEN5_EPYC.6 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.13\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ IRONWOOD_TORUS_RACK_4x4x4.0.nic200.6\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.AMD_TURIN_ZEN5_EPYC.7 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.15\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ IRONWOOD_TORUS_RACK_4x4x4.0.nic200.7\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.AMD_TURIN_ZEN5_EPYC.5 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.10\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ IRONWOOD_TORUS_RACK_4x4x4.0.nic200.5\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.AMD_TURIN_ZEN5_EPYC.4 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.8\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ IRONWOOD_TORUS_RACK_4x4x4.0.nic200.4\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.AMD_TURIN_ZEN5_EPYC.10 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.21\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ IRONWOOD_TORUS_RACK_4x4x4.0.nic200.10\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.AMD_TURIN_ZEN5_EPYC.8 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.16\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ IRONWOOD_TORUS_RACK_4x4x4.0.nic200.8\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.AMD_TURIN_ZEN5_EPYC.9 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.18\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ IRONWOOD_TORUS_RACK_4x4x4.0.nic200.9\n", + " │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.AMD_TURIN_ZEN5_EPYC.1 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.2\n", + " │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ IRONWOOD_TORUS_RACK_4x4x4.0.nic200.1\n", + " │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.AMD_TURIN_ZEN5_EPYC.3 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.6\n", + " │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ IRONWOOD_TORUS_RACK_4x4x4.0.nic200.3\n", + " │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.AMD_TURIN_ZEN5_EPYC.2 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.4\n", + " │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ IRONWOOD_TORUS_RACK_4x4x4.0.nic200.2\n", + " │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.AMD_TURIN_ZEN5_EPYC.0 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.1\n", + " │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ IRONWOOD_TORUS_RACK_4x4x4.0.nic200.0\n", + " │ │ │ │ │ └── ...\n", + " │ │ │ │ └── ...\n", + " │ │ │ └── ...\n", + " │ │ └── ...\n", + " │ └── ...\n", + " └── ...\n", + "None\n", + "64\n" + ] + } + ], + "source": [ + "service = InfraGraphService()\n", + "service.set_graph(infrastructure)\n", + "g = service.get_networkx_graph()\n", + "print(networkx.write_network_text(g, vertical_chains=True))\n", + "total_npus = service.get_component(server, \"xpu\").count\n", + "print(total_npus)" + ] + }, + { + "cell_type": "markdown", + "id": "0e46c84f", + "metadata": {}, + "source": [ + "##### Generate workload execution traces for each rank and set the required data size for AstraSim configuration" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "a724c9e4", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Generated 64 et in /workspaces/astra_sim_service/client-scripts/utils/../trial/ns3_single_ironwood/configuration/workload\n" + ] + } + ], + "source": [ + "astra.configuration.common_config.workload = astra.generate_collective(collective=Collective.ALLREDUCE, coll_size= 1 *1024*1024, npu_range=[0, total_npus])" + ] + }, + { + "cell_type": "markdown", + "id": "9e2f7e1d", + "metadata": {}, + "source": [ + "##### Configure ASTRA-sim system config" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "2f65a427", + "metadata": {}, + "outputs": [], + "source": [ + "astra.configuration.common_config.system.scheduling_policy = astra.configuration.common_config.system.LIFO\n", + "astra.configuration.common_config.system.endpoint_delay = 10\n", + "astra.configuration.common_config.system.active_chunks_per_dimension = 1\n", + "astra.configuration.common_config.system.all_gather_implementation = [astra.configuration.common_config.system.RING, astra.configuration.common_config.system.RING, astra.configuration.common_config.system.RING]\n", + "astra.configuration.common_config.system.all_to_all_implementation = [astra.configuration.common_config.system.RING, astra.configuration.common_config.system.RING, astra.configuration.common_config.system.RING]\n", + "astra.configuration.common_config.system.all_reduce_implementation = [astra.configuration.common_config.system.RING, astra.configuration.common_config.system.RING, astra.configuration.common_config.system.RING]\n", + "astra.configuration.common_config.system.collective_optimization = astra.configuration.common_config.system.LOCALBWAWARE\n", + "astra.configuration.common_config.system.local_mem_bw = 1600" + ] + }, + { + "cell_type": "markdown", + "id": "7ad2dc66", + "metadata": {}, + "source": [ + "##### Configure ASTRA-sim remote memory configuration" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "e45ec44b", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "memory_type: NO_MEMORY_EXPANSION\n", + "remote_mem_bw: 0\n", + "remote_mem_latency: 0\n", + "\n" + ] + } + ], + "source": [ + "astra.configuration.common_config.remote_memory.memory_type = astra.configuration.common_config.remote_memory.NO_MEMORY_EXPANSION\n", + "print(astra.configuration.common_config.remote_memory)" + ] + }, + { + "cell_type": "markdown", + "id": "3e832bae", + "metadata": {}, + "source": [ + "##### Configure the selected network backend and the topology (infragraph or nc_topology)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "502d3b25", + "metadata": { + "lines_to_next_cell": 2 + }, + "outputs": [], + "source": [ + "astra.configuration.network_backend.choice = astra.configuration.network_backend.NS3\n", + "astra.configuration.network_backend.ns3.topology.choice = astra.configuration.network_backend.ns3.topology.INFRAGRAPH\n", + "astra.configuration.network_backend.ns3.network.packet_payload_size = int(8192)" + ] + }, + { + "cell_type": "markdown", + "id": "324c7cba", + "metadata": {}, + "source": [ + "##### Adding ns3 trace and logical dimension " + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "d62c44de", + "metadata": {}, + "outputs": [], + "source": [ + "astra.configuration.network_backend.ns3.logical_topology.logical_dimensions = [4, 4, 4]\n", + "astra.configuration.network_backend.ns3.trace.trace_ids = []\n", + "for i in range(0, total_npus):\n", + " astra.configuration.network_backend.ns3.trace.trace_ids.append(i)" + ] + }, + { + "cell_type": "markdown", + "id": "08871bd5", + "metadata": {}, + "source": [ + "##### Adding ASTRA-sim - Infragraph specific annotation" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "1e6165bc", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "host_device_spec = astra_sim_kit.AnnotationDeviceSpecifications()\n", + "host_device_spec.device_bandwidth_gbps = 100\n", + "host_device_spec.device_latency_ms = 0.05\n", + "host_device_spec.device_name = server.name\n", + "host_device_spec.device_type = \"host\"\n", + "astra.configuration.infragraph.annotations.device_specifications.append(host_device_spec)" + ] + }, + { + "cell_type": "markdown", + "id": "c2a87754", + "metadata": {}, + "source": [ + "##### Configure ASTRA-sim cmd parameters" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "c2d2f976", + "metadata": {}, + "outputs": [], + "source": [ + "astra.configuration.common_config.cmd_parameters.comm_scale = 1\n", + "astra.configuration.common_config.cmd_parameters.injection_scale = 1\n", + "astra.configuration.common_config.cmd_parameters.rendezvous_protocol = False" + ] + }, + { + "cell_type": "markdown", + "id": "62be0629", + "metadata": {}, + "source": [ + "#### Start the simulation by specifying the network backend" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "be8221a6", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Generating Configuration ZIP now\n", + "output_path: /workspaces/astra_sim_service/client-scripts/utils/../trial/ns3_single_ironwood/config.zip\n", + "folder_path: /workspaces/astra_sim_service/client-scripts/utils/../trial/ns3_single_ironwood/configuration/workload/..\n", + "pack_zip complete\n", + "message: 'Configuration applied successfully. warnings: Unable to generate communicator\n", + " group message from schema - communicator group configuration empty'\n", + "\n", + "message: Simulation started successfully\n", + "\n", + "astra-sim server Status: running\n", + "astra-sim server Status: running\n", + "Downloading Output files....\n", + "Transferring Files from ASTRA-sim server\n", + "Downloading file: fct.txt\n", + "Downloading file: flow.txt\n", + "Downloading file: pfc.txt\n", + "Downloading file: qlen.txt\n", + "Downloading file: simulation.log\n", + "Downloading file: trace_out.tr\n", + "All files downloaded Successfully\n", + "Translating Metrics...\n", + "Generated fct.csv at: /workspaces/astra_sim_service/client-scripts/utils/../trial/ns3_single_ironwood/output/fct.csv\n", + "Generated: flow_stats.csv at: /workspaces/astra_sim_service/client-scripts/utils/../trial/ns3_single_ironwood/output/flow_stats.csv\n", + "All metrics translated successfully\n", + "Simulation completed\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/workspaces/astra_sim_service/client-scripts/notebooks/infragraph/../../utils/common.py:274: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\\s+'`` instead\n", + " df = pd.read_csv(\n", + "/workspaces/astra_sim_service/client-scripts/notebooks/infragraph/../../utils/common.py:237: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\\s+'`` instead\n", + " df = pd.read_csv(\n" + ] + } + ], + "source": [ + "astra.run_simulation(NetworkBackend.NS3)" + ] + }, + { + "cell_type": "markdown", + "id": "5349d2b6", + "metadata": {}, + "source": [ + "##### Download all the configurations as a zip" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "e67e3d72", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Downloaded all configuration in /workspaces/astra_sim_service/client-scripts/utils/../trial/ns3_single_ironwood/server_configuration.zip\n" + ] + } + ], + "source": [ + "astra.download_configuration()" + ] + }, + { + "cell_type": "markdown", + "id": "ed835cb8", + "metadata": {}, + "source": [ + "##### Read output files" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "a36bfc22", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Source Hex ipDestination Hex ipSource PortDestination PortData size (B)Start TimeFCTStandalone FCT
00b0000010b000101100001002621441015041552
10b0001010b000201100001002621441015041552
20b0002010b000301100001002621441015041552
30b0003010b000001100001002621441015041552
40b0004010b000501100001002621441015041552
\n", + "
" + ], + "text/plain": [ + " Source Hex ip Destination Hex ip Source Port Destination Port \\\n", + "0 0b000001 0b000101 10000 100 \n", + "1 0b000101 0b000201 10000 100 \n", + "2 0b000201 0b000301 10000 100 \n", + "3 0b000301 0b000001 10000 100 \n", + "4 0b000401 0b000501 10000 100 \n", + "\n", + " Data size (B) Start Time FCT Standalone FCT \n", + "0 262144 10 1504 1552 \n", + "1 262144 10 1504 1552 \n", + "2 262144 10 1504 1552 \n", + "3 262144 10 1504 1552 \n", + "4 262144 10 1504 1552 " + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df = pd.read_csv(os.path.join(FileFolderUtils.get_instance().OUTPUT_DIR, \"fct.csv\"))\n", + "df.head()" + ] + }, + { + "cell_type": "markdown", + "id": "f00cbc1c", + "metadata": {}, + "source": [ + "##### Save infragraph as a yaml" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "3e6888cc", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "saved yaml to: /workspaces/astra_sim_service/client-scripts/utils/../trial/ns3_single_ironwood/output/../ns3_single_ironwood.yaml\n" + ] + } + ], + "source": [ + "\n", + "with open(os.path.join(FileFolderUtils.get_instance().OUTPUT_DIR,\"../infrastructure\",\"ns3_single_ironwood.yaml\"),\"w\") as f:\n", + " data = infrastructure.serialize(\"dict\")\n", + " yaml.dump(data, f, default_flow_style=False, indent=4)\n", + "\n", + "print(\"saved yaml to:\", os.path.join(FileFolderUtils.get_instance().OUTPUT_DIR,\"..\",\"ns3_single_ironwood.yaml\"))" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.0rc1" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/client-scripts/notebooks/infragraph/ns3_single_ironwood_device.py b/client-scripts/notebooks/infragraph/ns3_single_ironwood_device.py deleted file mode 100644 index 40343a3..0000000 --- a/client-scripts/notebooks/infragraph/ns3_single_ironwood_device.py +++ /dev/null @@ -1,152 +0,0 @@ -# --- -# jupyter: -# jupytext: -# text_representation: -# extension: .py -# format_name: percent -# format_version: '1.3' -# jupytext_version: 1.19.1 -# kernelspec: -# display_name: Python 3 -# language: python -# name: python3 -# --- - -# %% [markdown] -# ##### Import the required modules and configure the system path to locate them - -# %% -import sys -sys.path.append("../../utils") -import networkx -import astra_sim_sdk.astra_sim_sdk as astra_sim_kit -from astra_sim import AstraSim, Collective, NetworkBackend -from infragraph.infragraph_service import InfraGraphService -from infragraph.blueprints.devices.ironwood_rack import IronwoodRack -from infragraph import Infrastructure - -# %% [markdown] -# ##### Call the AstraSim client helper with the server endpoint and tag to connect to the ASTRA-sim gRPC server, initialize the SDK, and create a tagged folder for configs, results, and logs - -# %% -astra = AstraSim(server_endpoint = "172.17.0.2:8989", tag = "ns3_single_ironwood") - -# %% [markdown] -# ##### Create a ironwood rack device fabric using infragraph device blueprint - -# %% -server = IronwoodRack() -infrastructure = Infrastructure() -infrastructure.devices.append(server) -infrastructure.instances.add(name=server.name, device=server.name, count=1) -astra.configuration.infragraph.infrastructure.deserialize(infrastructure.serialize()) -print(astra.configuration.infragraph.infrastructure) - -# %% [markdown] -# ##### Initialize the Infragraph service, display the fabric topology, and retrieve/set the total number of NPUs to generate the collective - -# %% -service = InfraGraphService() -service.set_graph(infrastructure) -g = service.get_networkx_graph() -print(networkx.write_network_text(g, vertical_chains=True)) -total_npus = service.get_component(server, "xpu").count -print(total_npus) - -# %% [markdown] -# ##### Generate workload execution traces for each rank and set the required data size for AstraSim configuration - -# %% -astra.configuration.common_config.workload = astra.generate_collective(collective=Collective.ALLREDUCE, coll_size= 1 *1024*1024, npu_range=[0, total_npus]) - -# %% [markdown] -# ##### Configure ASTRA-sim system config - -# %% -astra.configuration.common_config.system.scheduling_policy = astra.configuration.common_config.system.LIFO -astra.configuration.common_config.system.endpoint_delay = 10 -astra.configuration.common_config.system.active_chunks_per_dimension = 1 -astra.configuration.common_config.system.all_gather_implementation = [astra.configuration.common_config.system.RING, astra.configuration.common_config.system.RING, astra.configuration.common_config.system.RING] -astra.configuration.common_config.system.all_to_all_implementation = [astra.configuration.common_config.system.RING, astra.configuration.common_config.system.RING, astra.configuration.common_config.system.RING] -astra.configuration.common_config.system.all_reduce_implementation = [astra.configuration.common_config.system.RING, astra.configuration.common_config.system.RING, astra.configuration.common_config.system.RING] -astra.configuration.common_config.system.collective_optimization = astra.configuration.common_config.system.LOCALBWAWARE -astra.configuration.common_config.system.local_mem_bw = 1600 - -# %% [markdown] -# ##### Configure ASTRA-sim remote memory configuration - -# %% -astra.configuration.common_config.remote_memory.memory_type = astra.configuration.common_config.remote_memory.NO_MEMORY_EXPANSION -print(astra.configuration.common_config.remote_memory) - -# %% [markdown] -# ##### Configure the selected network backend and the topology (infragraph or nc_topology) - -# %% -astra.configuration.network_backend.choice = astra.configuration.network_backend.NS3 -astra.configuration.network_backend.ns3.topology.choice = astra.configuration.network_backend.ns3.topology.INFRAGRAPH -astra.configuration.network_backend.ns3.network.packet_payload_size = int(8192) - - -# %% [markdown] -# ##### Adding ns3 trace and logical dimension - -# %% -astra.configuration.network_backend.ns3.logical_topology.logical_dimensions = [4, 4, 4] -astra.configuration.network_backend.ns3.trace.trace_ids = [] -for i in range(0, total_npus): - astra.configuration.network_backend.ns3.trace.trace_ids.append(i) - -# %% [markdown] -# ##### Adding ASTRA-sim - Infragraph specific annotation - -# %% -host_device_spec = astra_sim_kit.AnnotationDeviceSpecifications() -host_device_spec.device_bandwidth_gbps = 100 -host_device_spec.device_latency_ms = 0.05 -host_device_spec.device_name = server.name -host_device_spec.device_type = "host" -astra.configuration.infragraph.annotations.device_specifications.append(host_device_spec) - -# %% [markdown] -# ##### Configure ASTRA-sim cmd parameters - -# %% -astra.configuration.common_config.cmd_parameters.comm_scale = 1 -astra.configuration.common_config.cmd_parameters.injection_scale = 1 -astra.configuration.common_config.cmd_parameters.rendezvous_protocol = False - -# %% [markdown] -# #### Start the simulation by specifying the network backend - -# %% -astra.run_simulation(NetworkBackend.NS3) - -# %% [markdown] -# ##### Download all the configurations as a zip - -# %% -astra.download_configuration() - -# %% [markdown] -# ##### Read output files - -# %% -import pandas as pd -import os -from common import FileFolderUtils -df = pd.read_csv(os.path.join(FileFolderUtils.get_instance().OUTPUT_DIR, "fct.csv")) -df.head() - -# %% [markdown] -# ##### Save infragraph as a yaml - -# %% -import yaml -import os -from common import FileFolderUtils -with open(os.path.join(FileFolderUtils.get_instance().OUTPUT_DIR,"../infrastructure","ns3_single_ironwood"),"w") as f: - data = infrastructure.serialize("dict") - yaml.dump(data, f, default_flow_style=False, indent=4) - -print("saved yaml to:", os.path.join(FileFolderUtils.get_instance().OUTPUT_DIR,"..","ns3_single_ironwood.yaml")) diff --git a/client-scripts/notebooks/infragraph/ns3_single_tier_with_dgx.ipynb b/client-scripts/notebooks/infragraph/ns3_single_tier_with_dgx.ipynb new file mode 100644 index 0000000..ec8d115 --- /dev/null +++ b/client-scripts/notebooks/infragraph/ns3_single_tier_with_dgx.ipynb @@ -0,0 +1,735 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "48077a93", + "metadata": {}, + "source": [ + "##### Import the required modules and configure the system path to locate them" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "8588a9f6", + "metadata": {}, + "outputs": [], + "source": [ + "import sys\n", + "sys.path.append(\"../../utils\")\n", + "import networkx\n", + "import yaml\n", + "import os\n", + "import pandas as pd\n", + "import astra_sim_sdk.astra_sim_sdk as astra_sim_kit\n", + "from common import FileFolderUtils\n", + "from astra_sim import AstraSim, Collective, NetworkBackend\n", + "from infragraph.blueprints.devices.nvidia.dgx import NvidiaDGX\n", + "from infragraph.blueprints.fabrics.single_tier_fabric import SingleTierFabric\n", + "from infragraph.infragraph_service import InfraGraphService" + ] + }, + { + "cell_type": "markdown", + "id": "19c27d41", + "metadata": {}, + "source": [ + "##### Call the AstraSim client helper with the server endpoint and tag to connect to the ASTRA-sim gRPC server, initialize the SDK, and create a tagged folder for configs, results, and logs" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "aafe93fe", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Successfully connected to gRPC server at 172.17.0.2:8989\n" + ] + } + ], + "source": [ + "astra = AstraSim(server_endpoint = \"172.17.0.2:8989\", tag = \"ns3_single_tier_with_dgx\")" + ] + }, + { + "cell_type": "markdown", + "id": "b0f45279", + "metadata": {}, + "source": [ + "##### Create a single tier rack device with two Nvidia DGX and a single switch using infragraph device, fabric blueprint" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "025b0ed5", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "dgx_count = 2\n", + "server = NvidiaDGX()\n", + "infrastructure = SingleTierFabric(server, dgx_count)\n", + "astra.configuration.infragraph.infrastructure.deserialize(infrastructure.serialize())" + ] + }, + { + "cell_type": "markdown", + "id": "cf5457f6", + "metadata": {}, + "source": [ + "##### Initialize the Infragraph service, display the fabric topology, and retrieve/set the total number of NPUs to generate the collective" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "73913147", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "╙── dgx_h100.0.pciesw.1\n", + " │\n", + " dgx_h100.0.cpu.1\n", + " ├── dgx_h100.0.cpu.0\n", + " │ ├── dgx_h100.0.pciesl.0\n", + " │ │ ├── dgx_h100.0.xpu.0\n", + " │ │ │ ├── dgx_h100.0.nvsw.0\n", + " │ │ │ │ ├── dgx_h100.0.pciesw.2 ─ dgx_h100.0.cpu.0\n", + " │ │ │ │ │ ├── dgx_h100.0.nvsw.1 ─ dgx_h100.0.xpu.0\n", + " │ │ │ │ │ │ ├── dgx_h100.0.xpu.1 ─ dgx_h100.0.nvsw.0\n", + " │ │ │ │ │ │ │ ├── dgx_h100.0.pciesl.1 ─ dgx_h100.0.cpu.0\n", + " │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ dgx_h100.0.cx7.1\n", + " │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ switch.0.port.1\n", + " │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ switch.0.asic.0\n", + " │ │ │ │ │ │ │ │ ├── switch.0.port.0\n", + " │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ dgx_h100.0.cx7.0 ─ dgx_h100.0.pciesl.0\n", + " │ │ │ │ │ │ │ │ ├── switch.0.port.2\n", + " │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ dgx_h100.0.cx7.2\n", + " │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ dgx_h100.0.pciesl.2 ─ dgx_h100.0.cpu.0\n", + " │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ dgx_h100.0.xpu.2 ─ dgx_h100.0.nvsw.0, dgx_h100.0.nvsw.1\n", + " │ │ │ │ │ │ │ │ │ ├── dgx_h100.0.nvsw.2 ─ dgx_h100.0.pciesw.2, dgx_h100.0.xpu.0, dgx_h100.0.xpu.1\n", + " │ │ │ │ │ │ │ │ │ │ ├── dgx_h100.0.xpu.3 ─ dgx_h100.0.nvsw.0, dgx_h100.0.nvsw.1\n", + " │ │ │ │ │ │ │ │ │ │ │ ├── dgx_h100.0.pciesl.3\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ dgx_h100.0.cx7.3\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ switch.0.port.3 ─ switch.0.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ └── dgx_h100.0.nvsw.3 ─ dgx_h100.0.pciesw.2, dgx_h100.0.xpu.0, dgx_h100.0.xpu.1, dgx_h100.0.xpu.2\n", + " │ │ │ │ │ │ │ │ │ │ │ ├── dgx_h100.0.xpu.4 ─ dgx_h100.0.nvsw.0, dgx_h100.0.nvsw.1, dgx_h100.0.nvsw.2\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ dgx_h100.0.pciesl.4 ─ dgx_h100.0.cpu.1\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ dgx_h100.0.cx7.4\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ switch.0.port.4 ─ switch.0.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ ├── dgx_h100.0.xpu.5 ─ dgx_h100.0.nvsw.0, dgx_h100.0.nvsw.1, dgx_h100.0.nvsw.2\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ dgx_h100.0.pciesl.5 ─ dgx_h100.0.cpu.1\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ dgx_h100.0.cx7.5\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ switch.0.port.5 ─ switch.0.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ ├── dgx_h100.0.xpu.6 ─ dgx_h100.0.nvsw.0, dgx_h100.0.nvsw.1, dgx_h100.0.nvsw.2\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ dgx_h100.0.pciesl.6 ─ dgx_h100.0.cpu.1\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ dgx_h100.0.cx7.6\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ switch.0.port.6 ─ switch.0.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ └── dgx_h100.0.xpu.7 ─ dgx_h100.0.nvsw.0, dgx_h100.0.nvsw.1, dgx_h100.0.nvsw.2\n", + " │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ dgx_h100.0.pciesl.7\n", + " │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ dgx_h100.0.cx7.7\n", + " │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ switch.0.port.7 ─ switch.0.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ ├── switch.0.port.8\n", + " │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ dgx_h100.1.cx7.0\n", + " │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ dgx_h100.1.pciesl.0\n", + " │ │ │ │ │ │ │ │ │ ├── dgx_h100.1.cpu.0\n", + " │ │ │ │ │ │ │ │ │ │ ├── dgx_h100.1.cpu.1\n", + " │ │ │ │ │ │ │ │ │ │ │ ├── dgx_h100.1.pciesl.4\n", + " │ │ │ │ │ │ │ │ │ │ │ │ ├── dgx_h100.1.xpu.4\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ ├── dgx_h100.1.nvsw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── dgx_h100.1.pciesw.2 ─ dgx_h100.1.cpu.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── dgx_h100.1.nvsw.1 ─ dgx_h100.1.xpu.4\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── dgx_h100.1.xpu.0 ─ dgx_h100.1.pciesl.0, dgx_h100.1.nvsw.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── dgx_h100.1.nvsw.2 ─ dgx_h100.1.pciesw.2, dgx_h100.1.xpu.4\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── dgx_h100.1.xpu.1 ─ dgx_h100.1.nvsw.0, dgx_h100.1.nvsw.1\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── dgx_h100.1.pciesl.1 ─ dgx_h100.1.cpu.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ dgx_h100.1.cx7.1\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ switch.0.port.9 ─ switch.0.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── dgx_h100.1.nvsw.3 ─ dgx_h100.1.pciesw.2, dgx_h100.1.xpu.0, dgx_h100.1.xpu.4\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── dgx_h100.1.xpu.2 ─ dgx_h100.1.nvsw.0, dgx_h100.1.nvsw.1, dgx_h100.1.nvsw.2\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ dgx_h100.1.pciesl.2 ─ dgx_h100.1.cpu.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ dgx_h100.1.cx7.2\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ switch.0.port.10 ─ switch.0.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── dgx_h100.1.xpu.3 ─ dgx_h100.1.nvsw.0, dgx_h100.1.nvsw.1, dgx_h100.1.nvsw.2\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ dgx_h100.1.pciesl.3\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ dgx_h100.1.cx7.3\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ switch.0.port.11 ─ switch.0.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── dgx_h100.1.xpu.5 ─ dgx_h100.1.nvsw.0, dgx_h100.1.nvsw.1, dgx_h100.1.nvsw.2\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ dgx_h100.1.pciesl.5 ─ dgx_h100.1.cpu.1\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ dgx_h100.1.cx7.5\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ switch.0.port.13 ─ switch.0.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── dgx_h100.1.xpu.6 ─ dgx_h100.1.nvsw.0, dgx_h100.1.nvsw.1, dgx_h100.1.nvsw.2\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ dgx_h100.1.pciesl.6 ─ dgx_h100.1.cpu.1\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ dgx_h100.1.cx7.6\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ switch.0.port.14 ─ switch.0.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── dgx_h100.1.xpu.7 ─ dgx_h100.1.nvsw.0, dgx_h100.1.nvsw.1, dgx_h100.1.nvsw.2\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ dgx_h100.1.pciesl.7\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ dgx_h100.1.cx7.7\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ switch.0.port.15 ─ switch.0.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ │ │ └── dgx_h100.1.cx7.4\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │\n", + " │ │ │ │ │ │ │ │ │ │ │ │ switch.0.port.12 ─ switch.0.asic.0\n", + " │ │ │ │ │ │ │ │ │ │ │ ├── dgx_h100.1.pciesw.1\n", + " │ │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ │ ├── dgx_h100.1.pciesw.0\n", + " │ │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ │ └── ...\n", + " │ │ │ │ │ └── ...\n", + " │ │ │ │ └── ...\n", + " │ │ │ └── ...\n", + " │ │ └── ...\n", + " │ ├── dgx_h100.0.pciesw.0\n", + " │ └── ...\n", + " └── ...\n", + "None\n", + "16\n" + ] + } + ], + "source": [ + "service = InfraGraphService()\n", + "service.set_graph(infrastructure)\n", + "\n", + "g = service.get_networkx_graph()\n", + "print(networkx.write_network_text(g, vertical_chains=True))\n", + "\n", + "total_npus = service.get_component(server, \"xpu\").count * dgx_count\n", + "print(total_npus)" + ] + }, + { + "cell_type": "markdown", + "id": "33f2afbf", + "metadata": {}, + "source": [ + "##### Generate workload execution traces for each rank and set the required data size for AstraSim configuration" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "c2c7e4b4", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "All contents of the folder /workspaces/astra_sim_service/client-scripts/utils/../trial/ns3_single_tier_with_dgx/configuration/workload have been deleted.\n", + "Generated 16 et in /workspaces/astra_sim_service/client-scripts/utils/../trial/ns3_single_tier_with_dgx/configuration/workload\n" + ] + } + ], + "source": [ + "astra.configuration.common_config.workload = astra.generate_collective(collective=Collective.ALLREDUCE, coll_size= 8 *1024*1024, npu_range=[0, total_npus])" + ] + }, + { + "cell_type": "markdown", + "id": "76aa4588", + "metadata": {}, + "source": [ + "##### Configure ASTRA-sim system config" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "id": "21a5ae3b", + "metadata": {}, + "outputs": [], + "source": [ + "astra.configuration.common_config.system.scheduling_policy = astra.configuration.common_config.system.LIFO\n", + "astra.configuration.common_config.system.endpoint_delay = 10\n", + "astra.configuration.common_config.system.active_chunks_per_dimension = 1\n", + "astra.configuration.common_config.system.all_gather_implementation = [astra.configuration.common_config.system.RING]\n", + "astra.configuration.common_config.system.all_to_all_implementation = [astra.configuration.common_config.system.DIRECT]\n", + "astra.configuration.common_config.system.all_reduce_implementation = [astra.configuration.common_config.system.ONERING]\n", + "astra.configuration.common_config.system.collective_optimization = astra.configuration.common_config.system.LOCALBWAWARE\n", + "astra.configuration.common_config.system.local_mem_bw = 1600" + ] + }, + { + "cell_type": "markdown", + "id": "9cb52015", + "metadata": {}, + "source": [ + "##### Configure ASTRA-sim remote memory configuration" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "id": "065afac5", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "memory_type: NO_MEMORY_EXPANSION\n", + "remote_mem_bw: 0\n", + "remote_mem_latency: 0\n", + "\n" + ] + } + ], + "source": [ + "astra.configuration.common_config.remote_memory.memory_type = astra.configuration.common_config.remote_memory.NO_MEMORY_EXPANSION\n", + "print(astra.configuration.common_config.remote_memory)" + ] + }, + { + "cell_type": "markdown", + "id": "0a9615e2", + "metadata": {}, + "source": [ + "##### Configure the selected network backend and the topology (infragraph or nc_topology)" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "id": "6d136387", + "metadata": { + "lines_to_next_cell": 2 + }, + "outputs": [], + "source": [ + "astra.configuration.network_backend.choice = astra.configuration.network_backend.NS3\n", + "astra.configuration.network_backend.ns3.topology.choice = astra.configuration.network_backend.ns3.topology.INFRAGRAPH\n", + "astra.configuration.network_backend.ns3.network.packet_payload_size = int(8192)" + ] + }, + { + "cell_type": "markdown", + "id": "8d38c643", + "metadata": {}, + "source": [ + "##### Adding ns3 trace and logical dimension " + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "id": "ee937faf", + "metadata": {}, + "outputs": [], + "source": [ + "astra.configuration.network_backend.ns3.logical_topology.logical_dimensions = [total_npus]\n", + "astra.configuration.network_backend.ns3.trace.trace_ids = []\n", + "for i in range(0, total_npus):\n", + " astra.configuration.network_backend.ns3.trace.trace_ids.append(i)" + ] + }, + { + "cell_type": "markdown", + "id": "abeed10f", + "metadata": {}, + "source": [ + "##### Adding ASTRA-sim - Infragraph specific annotation" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "id": "3b7edefa", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 25, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "host_device_spec = astra_sim_kit.AnnotationDeviceSpecifications()\n", + "host_device_spec.device_bandwidth_gbps = 100\n", + "host_device_spec.device_latency_ms = 0.05\n", + "host_device_spec.device_name = server.name\n", + "host_device_spec.device_type = \"host\"\n", + "astra.configuration.infragraph.annotations.device_specifications.append(host_device_spec)\n", + "\n", + "switch_device_spec = astra_sim_kit.AnnotationDeviceSpecifications()\n", + "switch_device_spec.device_bandwidth_gbps = 100\n", + "switch_device_spec.device_latency_ms = 0.05\n", + "switch_device_spec.device_name = \"switch\"\n", + "switch_device_spec.device_type = \"switch\"\n", + "astra.configuration.infragraph.annotations.device_specifications.append(\n", + " switch_device_spec\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "602fcbbd", + "metadata": {}, + "source": [ + "##### Configure ASTRA-sim cmd parameters" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "id": "192d6dd3", + "metadata": {}, + "outputs": [], + "source": [ + "astra.configuration.common_config.cmd_parameters.comm_scale = 1\n", + "astra.configuration.common_config.cmd_parameters.injection_scale = 1\n", + "astra.configuration.common_config.cmd_parameters.rendezvous_protocol = False" + ] + }, + { + "cell_type": "markdown", + "id": "0969c7ae", + "metadata": {}, + "source": [ + "#### Start the simulation by specifying the network backend" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "id": "c60d06aa", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Generating Configuration ZIP now\n", + "output_path: /workspaces/astra_sim_service/client-scripts/utils/../trial/ns3_single_tier_with_dgx/config.zip\n", + "folder_path: /workspaces/astra_sim_service/client-scripts/utils/../trial/ns3_single_tier_with_dgx/configuration/workload/..\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "pack_zip complete\n", + "message: 'Configuration applied successfully. warnings: Unable to generate communicator\n", + " group message from schema - communicator group configuration empty'\n", + "\n", + "message: Simulation started successfully\n", + "\n", + "astra-sim server Status: running\n", + "astra-sim server Status: running\n", + "Downloading Output files....\n", + "Transferring Files from ASTRA-sim server\n", + "Downloading file: fct.txt\n", + "Downloading file: flow.txt\n", + "Downloading file: pfc.txt\n", + "Downloading file: qlen.txt\n", + "Downloading file: simulation.log\n", + "Downloading file: trace_out.tr\n", + "All files downloaded Successfully\n", + "Translating Metrics...\n", + "Generated fct.csv at: /workspaces/astra_sim_service/client-scripts/utils/../trial/ns3_single_tier_with_dgx/output/fct.csv\n", + "Generated: flow_stats.csv at: /workspaces/astra_sim_service/client-scripts/utils/../trial/ns3_single_tier_with_dgx/output/flow_stats.csv\n", + "All metrics translated successfully\n", + "Simulation completed\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/workspaces/astra_sim_service/client-scripts/notebooks/infragraph/../../utils/common.py:274: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\\s+'`` instead\n", + " df = pd.read_csv(\n", + "/workspaces/astra_sim_service/client-scripts/notebooks/infragraph/../../utils/common.py:237: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\\s+'`` instead\n", + " df = pd.read_csv(\n" + ] + } + ], + "source": [ + "astra.run_simulation(NetworkBackend.NS3)" + ] + }, + { + "cell_type": "markdown", + "id": "9b573b67", + "metadata": {}, + "source": [ + "##### Download all the configurations as a zip" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "id": "bd80bf0d", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Downloaded all configuration in /workspaces/astra_sim_service/client-scripts/utils/../trial/ns3_single_tier_with_dgx/server_configuration.zip\n" + ] + } + ], + "source": [ + "astra.download_configuration()" + ] + }, + { + "cell_type": "markdown", + "id": "cc7c3593", + "metadata": {}, + "source": [ + "##### Read output files" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "id": "ca675ef8", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Source Hex ipDestination Hex ipSource PortDestination PortData size (B)Start TimeFCTStandalone FCT
00b0000010b00010110000100524288104302643498
10b0001010b00020110000100524288104302643498
20b0004010b00050110000100524288104302643498
30b0005010b00060110000100524288104302643498
40b0009010b000a0110000100524288104302643498
\n", + "
" + ], + "text/plain": [ + " Source Hex ip Destination Hex ip Source Port Destination Port \\\n", + "0 0b000001 0b000101 10000 100 \n", + "1 0b000101 0b000201 10000 100 \n", + "2 0b000401 0b000501 10000 100 \n", + "3 0b000501 0b000601 10000 100 \n", + "4 0b000901 0b000a01 10000 100 \n", + "\n", + " Data size (B) Start Time FCT Standalone FCT \n", + "0 524288 10 43026 43498 \n", + "1 524288 10 43026 43498 \n", + "2 524288 10 43026 43498 \n", + "3 524288 10 43026 43498 \n", + "4 524288 10 43026 43498 " + ] + }, + "execution_count": 29, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import pandas as pd\n", + "import os\n", + "from common import FileFolderUtils\n", + "df = pd.read_csv(os.path.join(FileFolderUtils.get_instance().OUTPUT_DIR, \"fct.csv\"))\n", + "df.head()" + ] + }, + { + "cell_type": "markdown", + "id": "6b2e16fd", + "metadata": {}, + "source": [ + "##### Save infragraph as a yaml" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "id": "ba9160d0", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "saved yaml to: /workspaces/astra_sim_service/client-scripts/utils/../trial/ns3_single_tier_with_dgx/output/../ns3_single_tier_with_dgx.yaml\n" + ] + } + ], + "source": [ + "with open(os.path.join(FileFolderUtils.get_instance().OUTPUT_DIR,\"../infrastructure\",\"ns3_single_tier_with_dgx.yaml\"),\"w\") as f:\n", + " data = infrastructure.serialize(\"dict\")\n", + " yaml.dump(data, f, default_flow_style=False, indent=4)\n", + "\n", + "print(\"saved yaml to:\", os.path.join(FileFolderUtils.get_instance().OUTPUT_DIR,\"..\",\"ns3_single_tier_with_dgx.yaml\"))" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.0rc1" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/client-scripts/notebooks/infragraph/ns3_single_tier_with_dgx.py b/client-scripts/notebooks/infragraph/ns3_single_tier_with_dgx.py deleted file mode 100644 index d35356d..0000000 --- a/client-scripts/notebooks/infragraph/ns3_single_tier_with_dgx.py +++ /dev/null @@ -1,161 +0,0 @@ -# --- -# jupyter: -# jupytext: -# text_representation: -# extension: .py -# format_name: percent -# format_version: '1.3' -# jupytext_version: 1.19.1 -# kernelspec: -# display_name: Python 3 -# language: python -# name: python3 -# --- - -# %% [markdown] -# ##### Import the required modules and configure the system path to locate them - -# %% -import sys -sys.path.append("../../utils") -from astra_sim import AstraSim, Collective, NetworkBackend -from infragraph.blueprints.devices.nvidia.dgx import NvidiaDGX -from infragraph.blueprints.fabrics.single_tier_fabric import SingleTierFabric -import networkx -from infragraph.infragraph_service import InfraGraphService -import astra_sim_sdk.astra_sim_sdk as astra_sim_kit - -# %% [markdown] -# ##### Call the AstraSim client helper with the server endpoint and tag to connect to the ASTRA-sim gRPC server, initialize the SDK, and create a tagged folder for configs, results, and logs - -# %% -astra = AstraSim(server_endpoint = "172.17.0.2:8989", tag = "ns3_single_tier_with_dgx") - -# %% [markdown] -# ##### Create a single tier rack device with two Nvidia DGX and a single switch using infragraph device, fabric blueprint - -# %% -dgx_count = 2 -server = NvidiaDGX() -infrastructure = SingleTierFabric(server, dgx_count) -astra.configuration.infragraph.infrastructure.deserialize(infrastructure.serialize()) - -# %% [markdown] -# ##### Initialize the Infragraph service, display the fabric topology, and retrieve/set the total number of NPUs to generate the collective - -# %% -service = InfraGraphService() -service.set_graph(infrastructure) - -g = service.get_networkx_graph() -print(networkx.write_network_text(g, vertical_chains=True)) - -total_npus = service.get_component(server, "xpu").count * dgx_count -print(total_npus) - -# %% [markdown] -# ##### Generate workload execution traces for each rank and set the required data size for AstraSim configuration - -# %% -astra.configuration.common_config.workload = astra.generate_collective(collective=Collective.ALLREDUCE, coll_size= 8 *1024*1024, npu_range=[0, total_npus]) - -# %% [markdown] -# ##### Configure ASTRA-sim system config - -# %% -astra.configuration.common_config.system.scheduling_policy = astra.configuration.common_config.system.LIFO -astra.configuration.common_config.system.endpoint_delay = 10 -astra.configuration.common_config.system.active_chunks_per_dimension = 1 -astra.configuration.common_config.system.all_gather_implementation = [astra.configuration.common_config.system.RING] -astra.configuration.common_config.system.all_to_all_implementation = [astra.configuration.common_config.system.DIRECT] -astra.configuration.common_config.system.all_reduce_implementation = [astra.configuration.common_config.system.ONERING] -astra.configuration.common_config.system.collective_optimization = astra.configuration.common_config.system.LOCALBWAWARE -astra.configuration.common_config.system.local_mem_bw = 1600 - -# %% [markdown] -# ##### Configure ASTRA-sim remote memory configuration - -# %% -astra.configuration.common_config.remote_memory.memory_type = astra.configuration.common_config.remote_memory.NO_MEMORY_EXPANSION -print(astra.configuration.common_config.remote_memory) - -# %% [markdown] -# ##### Configure the selected network backend and the topology (infragraph or nc_topology) - -# %% -astra.configuration.network_backend.choice = astra.configuration.network_backend.NS3 -astra.configuration.network_backend.ns3.topology.choice = astra.configuration.network_backend.ns3.topology.INFRAGRAPH -astra.configuration.network_backend.ns3.network.packet_payload_size = int(8192) - - -# %% [markdown] -# ##### Adding ns3 trace and logical dimension - -# %% -astra.configuration.network_backend.ns3.logical_topology.logical_dimensions = [total_npus] -astra.configuration.network_backend.ns3.trace.trace_ids = [] -for i in range(0, total_npus): - astra.configuration.network_backend.ns3.trace.trace_ids.append(i) - -# %% [markdown] -# ##### Adding ASTRA-sim - Infragraph specific annotation - -# %% -host_device_spec = astra_sim_kit.AnnotationDeviceSpecifications() -host_device_spec.device_bandwidth_gbps = 100 -host_device_spec.device_latency_ms = 0.05 -host_device_spec.device_name = server.name -host_device_spec.device_type = "host" -astra.configuration.infragraph.annotations.device_specifications.append(host_device_spec) - -switch_device_spec = astra_sim_kit.AnnotationDeviceSpecifications() -switch_device_spec.device_bandwidth_gbps = 100 -switch_device_spec.device_latency_ms = 0.05 -switch_device_spec.device_name = "switch" -switch_device_spec.device_type = "switch" -astra.configuration.infragraph.annotations.device_specifications.append( - switch_device_spec -) - -# %% [markdown] -# ##### Configure ASTRA-sim cmd parameters - -# %% -astra.configuration.common_config.cmd_parameters.comm_scale = 1 -astra.configuration.common_config.cmd_parameters.injection_scale = 1 -astra.configuration.common_config.cmd_parameters.rendezvous_protocol = False - -# %% [markdown] -# #### Start the simulation by specifying the network backend - -# %% -astra.run_simulation(NetworkBackend.NS3) - -# %% [markdown] -# ##### Download all the configurations as a zip - -# %% -astra.download_configuration() - -# %% [markdown] -# ##### Read output files - -# %% -import pandas as pd -import os -from common import FileFolderUtils -df = pd.read_csv(os.path.join(FileFolderUtils.get_instance().OUTPUT_DIR, "fct.csv")) -df.head() - -# %% [markdown] -# ##### Save infragraph as a yaml - -# %% -import yaml -import os -from common import FileFolderUtils -with open(os.path.join(FileFolderUtils.get_instance().OUTPUT_DIR,"../infrastructure","ns3_single_tier_with_dgx"),"w") as f: - data = infrastructure.serialize("dict") - yaml.dump(data, f, default_flow_style=False, indent=4) - -print("saved yaml to:", os.path.join(FileFolderUtils.get_instance().OUTPUT_DIR,"..","ns3_single_tier_with_dgx.yaml")) diff --git a/client-scripts/notebooks/infragraph/ns3_single_tier_with_generic_server.ipynb b/client-scripts/notebooks/infragraph/ns3_single_tier_with_generic_server.ipynb new file mode 100644 index 0000000..7ac9e3f --- /dev/null +++ b/client-scripts/notebooks/infragraph/ns3_single_tier_with_generic_server.ipynb @@ -0,0 +1,653 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "d8fa9641", + "metadata": {}, + "source": [ + "##### Import the required modules and configure the system path to locate them" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "d903d960", + "metadata": {}, + "outputs": [], + "source": [ + "import sys\n", + "sys.path.append(\"../../utils\")\n", + "import networkx\n", + "import yaml\n", + "import os\n", + "import pandas as pd\n", + "import astra_sim_sdk.astra_sim_sdk as astra_sim_kit\n", + "from common import FileFolderUtils\n", + "from astra_sim import AstraSim, Collective, NetworkBackend\n", + "from astra_sim_sdk import Device, Component\n", + "from infragraph import Component, InfrastructureEdge\n", + "from infragraph.infragraph_service import InfraGraphService\n", + "from infragraph.blueprints.devices.generic.server import Server\n", + "from infragraph.blueprints.devices.generic.generic_switch import Switch" + ] + }, + { + "cell_type": "markdown", + "id": "abc15479", + "metadata": {}, + "source": [ + "##### Call the AstraSim client helper with the server endpoint and tag to connect to the ASTRA-sim gRPC server, initialize the SDK, and create a tagged folder for configs, results, and logs" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "76bd56cc", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Resetting test directory\n", + "All contents of the folder /workspaces/astra_sim_service/client-scripts/utils/../trial/ns3_single_tier_with_generic_server have been deleted.\n", + "Successfully connected to gRPC server at 172.17.0.2:8989\n" + ] + } + ], + "source": [ + "astra = AstraSim(server_endpoint=\"172.17.0.2:8989\", tag = \"ns3_single_tier_with_generic_server\")" + ] + }, + { + "cell_type": "markdown", + "id": "313c13d4", + "metadata": {}, + "source": [ + "##### Generate workload execution traces for each rank and set the required data size for AstraSim configuration" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "b1aa9daf", + "metadata": { + "lines_to_next_cell": 2 + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Generated 8 et in /workspaces/astra_sim_service/client-scripts/utils/../trial/ns3_single_tier_with_generic_server/configuration/workload\n", + "/workspaces/astra_sim_service/client-scripts/utils/../trial/ns3_single_tier_with_generic_server/configuration/workload/ns3_single_tier_with_generic_server\n" + ] + } + ], + "source": [ + "astra.configuration.common_config.workload = astra.generate_collective(collective=Collective.ALLREDUCE, coll_size= 8 *1024*1024, npu_range=[0,8])\n", + "print(astra.configuration.common_config.workload)" + ] + }, + { + "cell_type": "markdown", + "id": "60c6e60e", + "metadata": {}, + "source": [ + "##### Configure the ASTRA-sim system config" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "f856dc0c", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "active_chunks_per_dimension: 1\n", + "all_gather_implementation:\n", + "- ring\n", + "all_reduce_implementation:\n", + "- oneRing\n", + "all_to_all_implementation:\n", + "- direct\n", + "collective_optimization: localBWAware\n", + "endpoint_delay: 10\n", + "local_mem_bw: 1600\n", + "local_reduction_delay: 0\n", + "preferred_dataset_splits: 1\n", + "reduce_scatter_implementation:\n", + "- ring\n", + "scheduling_policy: LIFO\n", + "trace_enabled: 0\n", + "\n" + ] + } + ], + "source": [ + "astra.configuration.common_config.system.scheduling_policy = astra.configuration.common_config.system.LIFO\n", + "astra.configuration.common_config.system.endpoint_delay = 10\n", + "astra.configuration.common_config.system.active_chunks_per_dimension = 1\n", + "astra.configuration.common_config.system.all_gather_implementation = [astra.configuration.common_config.system.RING]\n", + "astra.configuration.common_config.system.all_to_all_implementation = [astra.configuration.common_config.system.DIRECT]\n", + "astra.configuration.common_config.system.all_reduce_implementation = [astra.configuration.common_config.system.ONERING]\n", + "astra.configuration.common_config.system.collective_optimization = astra.configuration.common_config.system.LOCALBWAWARE\n", + "astra.configuration.common_config.system.local_mem_bw = 1600\n", + "print(astra.configuration.common_config.system)" + ] + }, + { + "cell_type": "markdown", + "id": "f0a5fa7a", + "metadata": {}, + "source": [ + "##### Configure ASTRA-sim remote memory configuration" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "7bb834c2", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "memory_type: NO_MEMORY_EXPANSION\n", + "remote_mem_bw: 0\n", + "remote_mem_latency: 0\n", + "\n" + ] + } + ], + "source": [ + "astra.configuration.common_config.remote_memory.memory_type = astra.configuration.common_config.remote_memory.NO_MEMORY_EXPANSION\n", + "print(astra.configuration.common_config.remote_memory)" + ] + }, + { + "cell_type": "markdown", + "id": "1c90091f", + "metadata": {}, + "source": [ + "##### Configure the selected network backend and the topology (infragraph or nc_topology)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "a1df92ed", + "metadata": {}, + "outputs": [], + "source": [ + "# We need to configure the network backend here since we are translating the topology from infragraph and not creating it directly from the sdk.\n", + "astra.configuration.network_backend.choice = astra.configuration.network_backend.NS3\n", + "astra.configuration.network_backend.ns3.topology.choice = astra.configuration.network_backend.ns3.topology.INFRAGRAPH\n", + "astra.configuration.network_backend.ns3.network.packet_payload_size = int(8192)\n", + "astra.configuration.network_backend.ns3.logical_topology.logical_dimensions = [8]\n", + "astra.configuration.network_backend.ns3.trace.trace_ids = [0, 1, 2, 3, 4, 5, 6, 7]" + ] + }, + { + "cell_type": "markdown", + "id": "e262c619", + "metadata": {}, + "source": [ + "##### Creating Infrastructure with four host and one rack Device" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "1d577543", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "astra.configuration.infragraph.infrastructure.name = \"1host-4ranks\"\n", + "\n", + "server = Device()\n", + "server.deserialize((Server(npu_factor=1).serialize()))\n", + "\n", + "hosts = astra.configuration.infragraph.infrastructure.instances.add(\n", + " name=\"host\", device=server.name, count=4\n", + ")\n", + "switch = Device()\n", + "switch.deserialize(Switch(port_count=16).serialize())\n", + "\n", + "rack_switch = astra.configuration.infragraph.infrastructure.instances.add(\n", + " name=\"rack_switch\", device=switch.name, count=1\n", + ")\n", + "\n", + "astra.configuration.infragraph.infrastructure.devices.append(server).append(switch)\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "id": "05264a01", + "metadata": {}, + "source": [ + "##### Creating Links" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "143c7f6e", + "metadata": {}, + "outputs": [], + "source": [ + "rack_link = astra.configuration.infragraph.infrastructure.links.add(\n", + " name=\"rack-link\",\n", + " description=\"Link characteristics for connectivity between servers and rack switch\",\n", + ")\n", + "rack_link.physical.bandwidth.gigabits_per_second = 200" + ] + }, + { + "cell_type": "markdown", + "id": "5e972048", + "metadata": {}, + "source": [ + "##### Adding edges and annotations" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "ec821926", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "host_component = InfraGraphService.get_component(server, Component.NIC)\n", + "switch_component = InfraGraphService.get_component(switch, Component.PORT)\n", + "# link each host to one leaf switch\n", + "for idx in range(hosts.count):\n", + " edge = astra.configuration.infragraph.infrastructure.edges.add(\n", + " scheme=InfrastructureEdge.ONE2ONE, link=rack_link.name\n", + " )\n", + " edge.ep1.instance = f\"{hosts.name}[{idx}]\"\n", + " edge.ep1.component = f\"{host_component.name}[0]\"\n", + " edge.ep2.instance = f\"{rack_switch.name}[0]\"\n", + " edge.ep2.component = f\"{switch_component.name}[{idx * 2}]\"\n", + " edge = astra.configuration.infragraph.infrastructure.edges.add(\n", + " scheme=InfrastructureEdge.ONE2ONE, link=rack_link.name\n", + " )\n", + " edge.ep1.instance = f\"{hosts.name}[{idx}]\"\n", + " edge.ep1.component = f\"{host_component.name}[1]\"\n", + " edge.ep2.instance = f\"{rack_switch.name}[0]\"\n", + " edge.ep2.component = f\"{switch_component.name}[{idx * 2 + 1}]\"\n", + "\n", + "# annotation\n", + "host_device_spec = astra_sim_kit.AnnotationDeviceSpecifications()\n", + "host_device_spec.device_bandwidth_gbps = 200\n", + "host_device_spec.device_latency_ms = 0.05\n", + "host_device_spec.device_name = \"server\"\n", + "host_device_spec.device_type = \"host\"\n", + "astra.configuration.infragraph.annotations.device_specifications.append(host_device_spec)\n", + "\n", + "switch_device_spec = astra_sim_kit.AnnotationDeviceSpecifications()\n", + "switch_device_spec.device_bandwidth_gbps = 200\n", + "switch_device_spec.device_latency_ms = 0.05\n", + "switch_device_spec.device_name = \"switch\"\n", + "switch_device_spec.device_type = \"switch\"\n", + "astra.configuration.infragraph.annotations.device_specifications.append(\n", + " switch_device_spec\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "665a4334", + "metadata": {}, + "source": [ + "##### Configure ASTRA-sim cmd parameters" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "90e58a65", + "metadata": {}, + "outputs": [], + "source": [ + "astra.configuration.common_config.cmd_parameters.comm_scale = 1\n", + "astra.configuration.common_config.cmd_parameters.injection_scale = 1\n", + "astra.configuration.common_config.cmd_parameters.rendezvous_protocol = False" + ] + }, + { + "cell_type": "markdown", + "id": "697afcfc", + "metadata": {}, + "source": [ + "#### Start the simulation by specifying the network backend" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "df571e8e", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Generating Configuration ZIP now\n", + "output_path: /workspaces/astra_sim_service/client-scripts/utils/../trial/ns3_single_tier_with_generic_server/config.zip\n", + "folder_path: /workspaces/astra_sim_service/client-scripts/utils/../trial/ns3_single_tier_with_generic_server/configuration/workload/..\n", + "pack_zip complete\n", + "message: 'Configuration applied successfully. warnings: Unable to generate communicator\n", + " group message from schema - communicator group configuration empty'\n", + "\n", + "message: Simulation started successfully\n", + "\n", + "astra-sim server Status: running\n", + "Downloading Output files....\n", + "Transferring Files from ASTRA-sim server\n", + "Downloading file: fct.txt\n", + "Downloading file: flow.txt\n", + "Downloading file: pfc.txt\n", + "Downloading file: qlen.txt\n", + "Downloading file: simulation.log\n", + "Downloading file: trace_out.tr\n", + "All files downloaded Successfully\n", + "Translating Metrics...\n", + "Generated fct.csv at: /workspaces/astra_sim_service/client-scripts/utils/../trial/ns3_single_tier_with_generic_server/output/fct.csv\n", + "Generated: flow_stats.csv at: /workspaces/astra_sim_service/client-scripts/utils/../trial/ns3_single_tier_with_generic_server/output/flow_stats.csv\n", + "All metrics translated successfully\n", + "Simulation completed\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/workspaces/astra_sim_service/client-scripts/notebooks/infragraph/../../utils/common.py:274: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\\s+'`` instead\n", + " df = pd.read_csv(\n", + "/workspaces/astra_sim_service/client-scripts/notebooks/infragraph/../../utils/common.py:237: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\\s+'`` instead\n", + " df = pd.read_csv(\n" + ] + } + ], + "source": [ + "astra.run_simulation(NetworkBackend.NS3)" + ] + }, + { + "cell_type": "markdown", + "id": "212005d3", + "metadata": {}, + "source": [ + "##### Download all the configurations as a zip" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "8630fd8f", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Downloaded all configuration in /workspaces/astra_sim_service/client-scripts/utils/../trial/ns3_single_tier_with_generic_server/server_configuration.zip\n" + ] + } + ], + "source": [ + "astra.download_configuration()" + ] + }, + { + "cell_type": "markdown", + "id": "b7bacc46", + "metadata": {}, + "source": [ + "##### Read output files" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "551020a9", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Source ipDestination ipSource PortDestination PortData size (B)Start TimeFCTStandalone FCTTotal Bytes TxTotal Bytes RxCompletion time (ms)Start (ms)End (ms)
011.0.7.111.0.0.1100001001048576104295342842104857610485760.0429530.000010.042963
111.0.3.111.0.4.1100001001048576104295342842104857610485760.0429530.000010.042963
211.0.0.111.0.1.1100001001048576104295542842104857610485760.0429550.000010.042965
311.0.4.111.0.5.1100001001048576104295542842104857610485760.0429550.000010.042965
411.0.1.111.0.2.1100001001048576104328042842104857610485760.0432800.000010.043290
\n", + "
" + ], + "text/plain": [ + " Source ip Destination ip Source Port Destination Port Data size (B) \\\n", + "0 11.0.7.1 11.0.0.1 10000 100 1048576 \n", + "1 11.0.3.1 11.0.4.1 10000 100 1048576 \n", + "2 11.0.0.1 11.0.1.1 10000 100 1048576 \n", + "3 11.0.4.1 11.0.5.1 10000 100 1048576 \n", + "4 11.0.1.1 11.0.2.1 10000 100 1048576 \n", + "\n", + " Start Time FCT Standalone FCT Total Bytes Tx Total Bytes Rx \\\n", + "0 10 42953 42842 1048576 1048576 \n", + "1 10 42953 42842 1048576 1048576 \n", + "2 10 42955 42842 1048576 1048576 \n", + "3 10 42955 42842 1048576 1048576 \n", + "4 10 43280 42842 1048576 1048576 \n", + "\n", + " Completion time (ms) Start (ms) End (ms) \n", + "0 0.042953 0.00001 0.042963 \n", + "1 0.042953 0.00001 0.042963 \n", + "2 0.042955 0.00001 0.042965 \n", + "3 0.042955 0.00001 0.042965 \n", + "4 0.043280 0.00001 0.043290 " + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df = pd.read_csv(os.path.join(FileFolderUtils.get_instance().OUTPUT_DIR, \"fct.csv\"))\n", + "df.head()\n", + "\n", + "df = pd.read_csv(os.path.join(FileFolderUtils.get_instance().OUTPUT_DIR, \"flow_stats.csv\"))\n", + "df.head()" + ] + }, + { + "cell_type": "markdown", + "id": "be43c401", + "metadata": {}, + "source": [ + "##### Save infragraph as a yaml" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "15d5ebba", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "saved yaml to: /workspaces/astra_sim_service/client-scripts/utils/../trial/ns3_single_tier_with_generic_server/output/../ns3_single_tier_with_dgx.yaml\n" + ] + } + ], + "source": [ + "with open(os.path.join(FileFolderUtils.get_instance().OUTPUT_DIR,\"../infrastructure\",\"ns3_single_tier_with_dgx.yaml\"),\"w\") as f:\n", + " data = astra.configuration.infragraph.infrastructure.serialize(\"dict\")\n", + " yaml.dump(data, f, default_flow_style=False, indent=4)\n", + "\n", + "print(\"saved yaml to:\", os.path.join(FileFolderUtils.get_instance().OUTPUT_DIR,\"..\",\"ns3_single_tier_with_dgx.yaml\"))" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.0rc1" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/client-scripts/notebooks/infragraph/ns3_single_tier_with_generic_server.py b/client-scripts/notebooks/infragraph/ns3_single_tier_with_generic_server.py deleted file mode 100644 index c71c989..0000000 --- a/client-scripts/notebooks/infragraph/ns3_single_tier_with_generic_server.py +++ /dev/null @@ -1,192 +0,0 @@ -# --- -# jupyter: -# jupytext: -# text_representation: -# extension: .py -# format_name: percent -# format_version: '1.3' -# jupytext_version: 1.19.1 -# kernelspec: -# display_name: Python 3 -# language: python -# name: python3 -# --- - -# %% [markdown] -# ##### Import the required modules and configure the system path to locate them - -# %% -import sys -sys.path.append("../../utils") -from astra_sim import AstraSim, Collective, NetworkBackend -from astra_sim_sdk import Device, Component -from infragraph import Component, InfrastructureEdge -from infragraph.infragraph_service import InfraGraphService -from infragraph.blueprints.devices.generic.server import Server -from infragraph.blueprints.devices.generic.generic_switch import Switch -import astra_sim_sdk.astra_sim_sdk as astra_sim_kit - -# %% [markdown] -# ##### Call the AstraSim client helper with the server endpoint and tag to connect to the ASTRA-sim gRPC server, initialize the SDK, and create a tagged folder for configs, results, and logs - -# %% -astra = AstraSim(server_endpoint="172.17.0.2:8989", tag = "ns3_single_tier_with_generic_server") - -# %% [markdown] -# ##### Generate workload execution traces for each rank and set the required data size for AstraSim configuration - -# %% -astra.configuration.common_config.workload = astra.generate_collective(collective=Collective.ALLREDUCE, coll_size= 8 *1024*1024, npu_range=[0,8]) -print(astra.configuration.common_config.workload) - - -# %% [markdown] -# ##### Configure the ASTRA-sim system config - -# %% -astra.configuration.common_config.system.scheduling_policy = astra.configuration.common_config.system.LIFO -astra.configuration.common_config.system.endpoint_delay = 10 -astra.configuration.common_config.system.active_chunks_per_dimension = 1 -astra.configuration.common_config.system.all_gather_implementation = [astra.configuration.common_config.system.RING] -astra.configuration.common_config.system.all_to_all_implementation = [astra.configuration.common_config.system.DIRECT] -astra.configuration.common_config.system.all_reduce_implementation = [astra.configuration.common_config.system.ONERING] -astra.configuration.common_config.system.collective_optimization = astra.configuration.common_config.system.LOCALBWAWARE -astra.configuration.common_config.system.local_mem_bw = 1600 -print(astra.configuration.common_config.system) - -# %% [markdown] -# ##### Configure ASTRA-sim remote memory configuration - -# %% -astra.configuration.common_config.remote_memory.memory_type = astra.configuration.common_config.remote_memory.NO_MEMORY_EXPANSION -print(astra.configuration.common_config.remote_memory) - -# %% [markdown] -# ##### Configure the selected network backend and the topology (infragraph or nc_topology) - -# %% -# We need to configure the network backend here since we are translating the topology from infragraph and not creating it directly from the sdk. -astra.configuration.network_backend.choice = astra.configuration.network_backend.NS3 -astra.configuration.network_backend.ns3.topology.choice = astra.configuration.network_backend.ns3.topology.INFRAGRAPH -astra.configuration.network_backend.ns3.network.packet_payload_size = int(8192) -astra.configuration.network_backend.ns3.logical_topology.logical_dimensions = [8] -astra.configuration.network_backend.ns3.trace.trace_ids = [0, 1, 2, 3, 4, 5, 6, 7] - -# %% [markdown] -# ##### Creating Infrastructure with four host and one rack Device - -# %% -astra.configuration.infragraph.infrastructure.name = "1host-4ranks" - -server = Device() -server.deserialize((Server(npu_factor=1).serialize())) - -hosts = astra.configuration.infragraph.infrastructure.instances.add( - name="host", device=server.name, count=4 -) -switch = Device() -switch.deserialize(Switch(port_count=16).serialize()) - -rack_switch = astra.configuration.infragraph.infrastructure.instances.add( - name="rack_switch", device=switch.name, count=1 -) - -astra.configuration.infragraph.infrastructure.devices.append(server).append(switch) - - - -# %% [markdown] -# ##### Creating Links - -# %% -rack_link = astra.configuration.infragraph.infrastructure.links.add( - name="rack-link", - description="Link characteristics for connectivity between servers and rack switch", -) -rack_link.physical.bandwidth.gigabits_per_second = 200 - -# %% [markdown] -# ##### Adding edges and annotations - -# %% -host_component = InfraGraphService.get_component(server, Component.NIC) -switch_component = InfraGraphService.get_component(switch, Component.PORT) -# link each host to one leaf switch -for idx in range(hosts.count): - edge = astra.configuration.infragraph.infrastructure.edges.add( - scheme=InfrastructureEdge.ONE2ONE, link=rack_link.name - ) - edge.ep1.instance = f"{hosts.name}[{idx}]" - edge.ep1.component = f"{host_component.name}[0]" - edge.ep2.instance = f"{rack_switch.name}[0]" - edge.ep2.component = f"{switch_component.name}[{idx * 2}]" - edge = astra.configuration.infragraph.infrastructure.edges.add( - scheme=InfrastructureEdge.ONE2ONE, link=rack_link.name - ) - edge.ep1.instance = f"{hosts.name}[{idx}]" - edge.ep1.component = f"{host_component.name}[1]" - edge.ep2.instance = f"{rack_switch.name}[0]" - edge.ep2.component = f"{switch_component.name}[{idx * 2 + 1}]" - -# annotation -host_device_spec = astra_sim_kit.AnnotationDeviceSpecifications() -host_device_spec.device_bandwidth_gbps = 200 -host_device_spec.device_latency_ms = 0.05 -host_device_spec.device_name = "server" -host_device_spec.device_type = "host" -astra.configuration.infragraph.annotations.device_specifications.append(host_device_spec) - -switch_device_spec = astra_sim_kit.AnnotationDeviceSpecifications() -switch_device_spec.device_bandwidth_gbps = 200 -switch_device_spec.device_latency_ms = 0.05 -switch_device_spec.device_name = "switch" -switch_device_spec.device_type = "switch" -astra.configuration.infragraph.annotations.device_specifications.append( - switch_device_spec -) - -# %% [markdown] -# ##### Configure ASTRA-sim cmd parameters - -# %% -astra.configuration.common_config.cmd_parameters.comm_scale = 1 -astra.configuration.common_config.cmd_parameters.injection_scale = 1 -astra.configuration.common_config.cmd_parameters.rendezvous_protocol = False - -# %% [markdown] -# #### Start the simulation by specifying the network backend - -# %% -astra.run_simulation(NetworkBackend.NS3) - -# %% [markdown] -# ##### Download all the configurations as a zip - -# %% -astra.download_configuration() - -# %% [markdown] -# ##### Read output files - -# %% -import pandas as pd -import os -from common import FileFolderUtils -df = pd.read_csv(os.path.join(FileFolderUtils.get_instance().OUTPUT_DIR, "fct.csv")) -df.head() - -df = pd.read_csv(os.path.join(FileFolderUtils.get_instance().OUTPUT_DIR, "flow_stats.csv")) -df.head() - -# %% [markdown] -# ##### Save infragraph as a yaml - -# %% -import yaml -import os -from common import FileFolderUtils -with open(os.path.join(FileFolderUtils.get_instance().OUTPUT_DIR,"../infrastructure","ns3_single_tier_with_dgx"),"w") as f: - data = astra.configuration.infragraph.infrastructure.serialize("dict") - yaml.dump(data, f, default_flow_style=False, indent=4) - -print("saved yaml to:", os.path.join(FileFolderUtils.get_instance().OUTPUT_DIR,"..","ns3_single_tier_with_dgx.yaml")) diff --git a/client-scripts/notebooks/load_existing_et_example.ipynb b/client-scripts/notebooks/load_existing_et_example.ipynb new file mode 100644 index 0000000..ab30dae --- /dev/null +++ b/client-scripts/notebooks/load_existing_et_example.ipynb @@ -0,0 +1,267 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "16fbc12d", + "metadata": {}, + "source": [ + "##### Import the required modules and configure the system path to locate them" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "df1b7b72", + "metadata": {}, + "outputs": [], + "source": [ + "import sys\n", + "import os\n", + "import pandas as pd\n", + "sys.path.append(\"../utils\")\n", + "from common import FileFolderUtils\n", + "from astra_sim import AstraSim, NetworkBackend\n", + "from pathlib import Path" + ] + }, + { + "cell_type": "markdown", + "id": "0cc9f260", + "metadata": {}, + "source": [ + "##### Call the AstraSim client helper with the server endpoint and tag to connect to the ASTRA-sim gRPC server, initialize the SDK, and create a tagged folder for configs, results, and logs." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "73e5e3b2", + "metadata": {}, + "outputs": [], + "source": [ + "astra = AstraSim(server_endpoint=\"172.17.0.2:8989\", tag=\"load_existing_et_example\")" + ] + }, + { + "cell_type": "markdown", + "id": "4027ad0d", + "metadata": {}, + "source": [ + "##### Add existing workload execution traces by giving the path to the workload with basename included, mandatory for AstraSim workload configuration." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "4c96cc0d", + "metadata": {}, + "outputs": [], + "source": [ + "cwd = os.path.dirname(os.path.abspath(__file__)) if \"__file__\" in globals() else os.getcwd()\n", + "astra.configuration.common_config.workload = os.path.join(cwd, \"../resources/example_workload/workload/all_reduce\")\n", + "print(astra.configuration.common_config.workload)" + ] + }, + { + "cell_type": "markdown", + "id": "45ddaaa6", + "metadata": {}, + "source": [ + "##### Configure ASTRA-sim system config" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "b6ebb2d7", + "metadata": {}, + "outputs": [], + "source": [ + "astra.configuration.common_config.system.scheduling_policy = astra.configuration.common_config.system.LIFO\n", + "astra.configuration.common_config.system.endpoint_delay = 10\n", + "astra.configuration.common_config.system.active_chunks_per_dimension = 1\n", + "astra.configuration.common_config.system.all_gather_implementation = [astra.configuration.common_config.system.RING]\n", + "astra.configuration.common_config.system.all_to_all_implementation = [astra.configuration.common_config.system.DIRECT]\n", + "astra.configuration.common_config.system.all_reduce_implementation = [astra.configuration.common_config.system.ONERING]\n", + "astra.configuration.common_config.system.collective_optimization = astra.configuration.common_config.system.LOCALBWAWARE\n", + "astra.configuration.common_config.system.local_mem_bw = 1600\n", + "print(astra.configuration.common_config.system)" + ] + }, + { + "cell_type": "markdown", + "id": "2ae7c917", + "metadata": {}, + "source": [ + "##### Configure ASTRA-sim remote memory configuration" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e41016ce", + "metadata": {}, + "outputs": [], + "source": [ + "astra.configuration.common_config.remote_memory.memory_type = astra.configuration.common_config.remote_memory.NO_MEMORY_EXPANSION\n", + "print(astra.configuration.common_config.remote_memory)" + ] + }, + { + "cell_type": "markdown", + "id": "e9361e39", + "metadata": {}, + "source": [ + "##### Configure the network backend" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "a08892e0", + "metadata": {}, + "outputs": [], + "source": [ + "# astra.configuration.network_backend.choice = astra.configuration.network_backend.NS3\n", + "astra.configuration.network_backend.ns3.network.packet_payload_size = int(8192)\n", + "astra.configuration.network_backend.ns3.logical_topology.logical_dimensions = [8]\n", + "astra.configuration.network_backend.ns3.trace.trace_ids = [0, 1, 2, 3,4 ,5 ,6, 7]\n", + "print(\"network backend choice set to:\",astra.configuration.network_backend.ns3.topology.choice)\n", + "print(astra.configuration.network_backend.ns3.network.packet_payload_size)\n", + "print(astra.configuration.network_backend.ns3.logical_topology)\n", + "print(astra.configuration.network_backend.ns3.trace)" + ] + }, + { + "cell_type": "markdown", + "id": "37f3dda6", + "metadata": {}, + "source": [ + "##### Configure the network topology" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "787e8f1e", + "metadata": {}, + "outputs": [], + "source": [ + "# astra.configuration.network_backend.ns3.topology.choice = astra.configuration.network_backend.ns3.topology.NC_TOPOLOGY\n", + "# the topology configuration will be set automatically if we configure the nc_topology\n", + "astra.configuration.network_backend.ns3.topology.nc_topology.total_nodes = 9\n", + "astra.configuration.network_backend.ns3.topology.nc_topology.total_switches = 1\n", + "astra.configuration.network_backend.ns3.topology.nc_topology.total_links = 8\n", + "astra.configuration.network_backend.ns3.topology.nc_topology.switch_ids = [8]\n", + "astra.configuration.network_backend.ns3.topology.nc_topology.connections.clear()\n", + "astra.configuration.network_backend.ns3.topology.nc_topology.connections.add(0, 8, \"100Gbps\", \"0.005ms\", \"0\")\n", + "astra.configuration.network_backend.ns3.topology.nc_topology.connections.add(1, 8, \"100Gbps\", \"0.005ms\", \"0\")\n", + "astra.configuration.network_backend.ns3.topology.nc_topology.connections.add(2, 8, \"100Gbps\", \"0.005ms\", \"0\")\n", + "astra.configuration.network_backend.ns3.topology.nc_topology.connections.add(3, 8, \"100Gbps\", \"0.005ms\", \"0\")\n", + "astra.configuration.network_backend.ns3.topology.nc_topology.connections.add(4, 8, \"100Gbps\", \"0.005ms\", \"0\")\n", + "astra.configuration.network_backend.ns3.topology.nc_topology.connections.add(5, 8, \"100Gbps\", \"0.005ms\", \"0\")\n", + "astra.configuration.network_backend.ns3.topology.nc_topology.connections.add(6, 8, \"100Gbps\", \"0.005ms\", \"0\")\n", + "astra.configuration.network_backend.ns3.topology.nc_topology.connections.add(7, 8, \"100Gbps\", \"0.005ms\", \"0\")\n", + "print(astra.configuration.network_backend.ns3.topology.choice)\n", + "print(astra.configuration.network_backend.ns3.topology.nc_topology)\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "id": "0853b519", + "metadata": {}, + "source": [ + "##### Configure ASTRA-sim cmd parameters" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "06ac809f", + "metadata": {}, + "outputs": [], + "source": [ + "astra.configuration.common_config.cmd_parameters.comm_scale = 1\n", + "astra.configuration.common_config.cmd_parameters.injection_scale = 1\n", + "astra.configuration.common_config.cmd_parameters.rendezvous_protocol = False\n", + "\n", + "print(astra.configuration.common_config.cmd_parameters)" + ] + }, + { + "cell_type": "markdown", + "id": "4707a7fa", + "metadata": {}, + "source": [ + "#### Start the simulation by specifying the network backend" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "7a8b6ecb", + "metadata": {}, + "outputs": [], + "source": [ + "astra.run_simulation(NetworkBackend.NS3)" + ] + }, + { + "cell_type": "markdown", + "id": "fd3caa52", + "metadata": {}, + "source": [ + "##### Download all the configurations as a zip" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "12c3c1d4", + "metadata": { + "lines_to_next_cell": 2 + }, + "outputs": [], + "source": [ + "astra.download_configuration()" + ] + }, + { + "cell_type": "markdown", + "id": "b9027fe6", + "metadata": {}, + "source": [ + "##### Read output files" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "8a227cfd", + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "df = pd.read_csv(os.path.join(FileFolderUtils.get_instance().OUTPUT_DIR, \"fct.csv\"))\n", + "df.head()\n", + "\n", + "df = pd.read_csv(os.path.join(FileFolderUtils.get_instance().OUTPUT_DIR, \"flow_stats.csv\"))\n", + "df.head()" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "name": "python", + "version": "3.11.0" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/client-scripts/notebooks/load_existing_et_example.py b/client-scripts/notebooks/load_existing_et_example.py deleted file mode 100644 index 7607917..0000000 --- a/client-scripts/notebooks/load_existing_et_example.py +++ /dev/null @@ -1,131 +0,0 @@ -# --- -# jupyter: -# jupytext: -# text_representation: -# extension: .py -# format_name: percent -# format_version: '1.3' -# jupytext_version: 1.19.1 -# kernelspec: -# display_name: Python 3 -# language: python -# name: python3 -# --- - -# %% [markdown] -# ##### Import the required modules and configure the system path to locate them - -# %% -import sys -import os -import pandas as pd -sys.path.append("../utils") -from common import FileFolderUtils -from astra_sim import AstraSim, NetworkBackend -from pathlib import Path - -# %% [markdown] -# ##### Call the AstraSim client helper with the server endpoint and tag to connect to the ASTRA-sim gRPC server, initialize the SDK, and create a tagged folder for configs, results, and logs. - -# %% -astra = AstraSim(server_endpoint="172.17.0.2:8989", tag="load_existing_et_example") - -# %% [markdown] -# ##### Add existing workload execution traces by giving the path to the workload with basename included, mandatory for AstraSim workload configuration. - -# %% -cwd = os.path.dirname(os.path.abspath(__file__)) if "__file__" in globals() else os.getcwd() -astra.configuration.common_config.workload = os.path.join(cwd, "../resources/example_workload/workload/all_reduce") -print(astra.configuration.common_config.workload) - -# %% [markdown] -# ##### Configure ASTRA-sim system config - -# %% -astra.configuration.common_config.system.scheduling_policy = astra.configuration.common_config.system.LIFO -astra.configuration.common_config.system.endpoint_delay = 10 -astra.configuration.common_config.system.active_chunks_per_dimension = 1 -astra.configuration.common_config.system.all_gather_implementation = [astra.configuration.common_config.system.RING] -astra.configuration.common_config.system.all_to_all_implementation = [astra.configuration.common_config.system.DIRECT] -astra.configuration.common_config.system.all_reduce_implementation = [astra.configuration.common_config.system.ONERING] -astra.configuration.common_config.system.collective_optimization = astra.configuration.common_config.system.LOCALBWAWARE -astra.configuration.common_config.system.local_mem_bw = 1600 -print(astra.configuration.common_config.system) - -# %% [markdown] -# ##### Configure ASTRA-sim remote memory configuration - -# %% -astra.configuration.common_config.remote_memory.memory_type = astra.configuration.common_config.remote_memory.NO_MEMORY_EXPANSION -print(astra.configuration.common_config.remote_memory) - -# %% [markdown] -# ##### Configure the network backend - -# %% -# astra.configuration.network_backend.choice = astra.configuration.network_backend.NS3 -astra.configuration.network_backend.ns3.network.packet_payload_size = int(8192) -astra.configuration.network_backend.ns3.logical_topology.logical_dimensions = [8] -astra.configuration.network_backend.ns3.trace.trace_ids = [0, 1, 2, 3,4 ,5 ,6, 7] -print("network backend choice set to:",astra.configuration.network_backend.ns3.topology.choice) -print(astra.configuration.network_backend.ns3.network.packet_payload_size) -print(astra.configuration.network_backend.ns3.logical_topology) -print(astra.configuration.network_backend.ns3.trace) - -# %% [markdown] -# ##### Configure the network topology - -# %% -# astra.configuration.network_backend.ns3.topology.choice = astra.configuration.network_backend.ns3.topology.NC_TOPOLOGY -# the topology configuration will be set automatically if we configure the nc_topology -astra.configuration.network_backend.ns3.topology.nc_topology.total_nodes = 9 -astra.configuration.network_backend.ns3.topology.nc_topology.total_switches = 1 -astra.configuration.network_backend.ns3.topology.nc_topology.total_links = 8 -astra.configuration.network_backend.ns3.topology.nc_topology.switch_ids = [8] -astra.configuration.network_backend.ns3.topology.nc_topology.connections.clear() -astra.configuration.network_backend.ns3.topology.nc_topology.connections.add(0, 8, "100Gbps", "0.005ms", "0") -astra.configuration.network_backend.ns3.topology.nc_topology.connections.add(1, 8, "100Gbps", "0.005ms", "0") -astra.configuration.network_backend.ns3.topology.nc_topology.connections.add(2, 8, "100Gbps", "0.005ms", "0") -astra.configuration.network_backend.ns3.topology.nc_topology.connections.add(3, 8, "100Gbps", "0.005ms", "0") -astra.configuration.network_backend.ns3.topology.nc_topology.connections.add(4, 8, "100Gbps", "0.005ms", "0") -astra.configuration.network_backend.ns3.topology.nc_topology.connections.add(5, 8, "100Gbps", "0.005ms", "0") -astra.configuration.network_backend.ns3.topology.nc_topology.connections.add(6, 8, "100Gbps", "0.005ms", "0") -astra.configuration.network_backend.ns3.topology.nc_topology.connections.add(7, 8, "100Gbps", "0.005ms", "0") -print(astra.configuration.network_backend.ns3.topology.choice) -print(astra.configuration.network_backend.ns3.topology.nc_topology) - - - -# %% [markdown] -# ##### Configure ASTRA-sim cmd parameters - -# %% -astra.configuration.common_config.cmd_parameters.comm_scale = 1 -astra.configuration.common_config.cmd_parameters.injection_scale = 1 -astra.configuration.common_config.cmd_parameters.rendezvous_protocol = False - -print(astra.configuration.common_config.cmd_parameters) - -# %% [markdown] -# #### Start the simulation by specifying the network backend - -# %% -astra.run_simulation(NetworkBackend.NS3) - -# %% [markdown] -# ##### Download all the configurations as a zip - -# %% -astra.download_configuration() - - -# %% [markdown] -# ##### Read output files - -# %% - -df = pd.read_csv(os.path.join(FileFolderUtils.get_instance().OUTPUT_DIR, "fct.csv")) -df.head() - -df = pd.read_csv(os.path.join(FileFolderUtils.get_instance().OUTPUT_DIR, "flow_stats.csv")) -df.head() diff --git a/client-scripts/notebooks/ns3_sample.ipynb b/client-scripts/notebooks/ns3_sample.ipynb new file mode 100644 index 0000000..3d81c62 --- /dev/null +++ b/client-scripts/notebooks/ns3_sample.ipynb @@ -0,0 +1,273 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "cf24eda1", + "metadata": {}, + "source": [ + "##### Import the required modules and configure the system path to locate them" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "046d9232", + "metadata": {}, + "outputs": [], + "source": [ + "import sys\n", + "sys.path.append(\"../utils\")\n", + "import os\n", + "import pandas as pd\n", + "from common import FileFolderUtils\n", + "from astra_sim import AstraSim, Collective, NetworkBackend" + ] + }, + { + "cell_type": "markdown", + "id": "8bab4378", + "metadata": {}, + "source": [ + "##### Call the AstraSim client helper with the server endpoint and tag to connect to the ASTRA-sim gRPC server, initialize the SDK, and create a tagged folder for configs, results, and logs." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "7bc47b4e", + "metadata": {}, + "outputs": [], + "source": [ + "astra = AstraSim(server_endpoint=\"172.17.0.2:8989\", tag=\"ns3_sample\")" + ] + }, + { + "cell_type": "markdown", + "id": "877dfb68", + "metadata": {}, + "source": [ + "##### Generate workload execution traces for each rank and set the required data size for AstraSim configuration" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "3580b8b5", + "metadata": { + "lines_to_next_cell": 2 + }, + "outputs": [], + "source": [ + "astra.configuration.common_config.workload = astra.generate_collective(collective=Collective.ALLREDUCE, coll_size= 8 *1024*1024, npu_range=[0,8])\n", + "print(astra.configuration.common_config.workload)" + ] + }, + { + "cell_type": "markdown", + "id": "355542c0", + "metadata": {}, + "source": [ + "##### Configure ASTRA-sim system config" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "7b0259c1", + "metadata": {}, + "outputs": [], + "source": [ + "astra.configuration.common_config.system.scheduling_policy = astra.configuration.common_config.system.LIFO\n", + "astra.configuration.common_config.system.endpoint_delay = 10\n", + "astra.configuration.common_config.system.active_chunks_per_dimension = 1\n", + "astra.configuration.common_config.system.all_gather_implementation = [astra.configuration.common_config.system.RING]\n", + "astra.configuration.common_config.system.all_to_all_implementation = [astra.configuration.common_config.system.DIRECT]\n", + "astra.configuration.common_config.system.all_reduce_implementation = [astra.configuration.common_config.system.ONERING]\n", + "astra.configuration.common_config.system.collective_optimization = astra.configuration.common_config.system.LOCALBWAWARE\n", + "astra.configuration.common_config.system.local_mem_bw = 1600\n", + "print(astra.configuration.common_config.system)" + ] + }, + { + "cell_type": "markdown", + "id": "5d361352", + "metadata": {}, + "source": [ + "##### Configure ASTRA-sim remote memory configuration" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "5721dbdc", + "metadata": {}, + "outputs": [], + "source": [ + "astra.configuration.common_config.remote_memory.memory_type = astra.configuration.common_config.remote_memory.NO_MEMORY_EXPANSION\n", + "print(astra.configuration.common_config.remote_memory)" + ] + }, + { + "cell_type": "markdown", + "id": "bc30b6d8", + "metadata": {}, + "source": [ + "##### Configure the network backend" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "878495ee", + "metadata": {}, + "outputs": [], + "source": [ + "# astra.configuration.network_backend.choice = astra.configuration.network_backend.NS3\n", + "astra.configuration.network_backend.ns3.network.packet_payload_size = int(8192)\n", + "astra.configuration.network_backend.ns3.logical_topology.logical_dimensions = [8]\n", + "astra.configuration.network_backend.ns3.trace.trace_ids = [0, 1, 2, 3,4 ,5 ,6, 7]\n", + "print(\"network backend choice set to:\",astra.configuration.network_backend.ns3.topology.choice)\n", + "print(astra.configuration.network_backend.ns3.network.packet_payload_size)\n", + "print(astra.configuration.network_backend.ns3.logical_topology)\n", + "print(astra.configuration.network_backend.ns3.trace)" + ] + }, + { + "cell_type": "markdown", + "id": "a2b3d18f", + "metadata": {}, + "source": [ + "##### Set up the network topology" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ab2c1fe2", + "metadata": {}, + "outputs": [], + "source": [ + "# astra.configuration.network_backend.ns3.topology.choice = astra.configuration.network_backend.ns3.topology.NC_TOPOLOGY\n", + "# the topology configuration will be set automatically if we configure the nc_topology\n", + "astra.configuration.network_backend.ns3.topology.nc_topology.total_nodes = 9\n", + "astra.configuration.network_backend.ns3.topology.nc_topology.total_switches = 1\n", + "astra.configuration.network_backend.ns3.topology.nc_topology.total_links = 8\n", + "astra.configuration.network_backend.ns3.topology.nc_topology.switch_ids = [8]\n", + "astra.configuration.network_backend.ns3.topology.nc_topology.connections.clear()\n", + "astra.configuration.network_backend.ns3.topology.nc_topology.connections.add(0, 8, \"100Gbps\", \"0.005ms\", \"0\")\n", + "astra.configuration.network_backend.ns3.topology.nc_topology.connections.add(1, 8, \"100Gbps\", \"0.005ms\", \"0\")\n", + "astra.configuration.network_backend.ns3.topology.nc_topology.connections.add(2, 8, \"100Gbps\", \"0.005ms\", \"0\")\n", + "astra.configuration.network_backend.ns3.topology.nc_topology.connections.add(3, 8, \"100Gbps\", \"0.005ms\", \"0\")\n", + "astra.configuration.network_backend.ns3.topology.nc_topology.connections.add(4, 8, \"100Gbps\", \"0.005ms\", \"0\")\n", + "astra.configuration.network_backend.ns3.topology.nc_topology.connections.add(5, 8, \"100Gbps\", \"0.005ms\", \"0\")\n", + "astra.configuration.network_backend.ns3.topology.nc_topology.connections.add(6, 8, \"100Gbps\", \"0.005ms\", \"0\")\n", + "astra.configuration.network_backend.ns3.topology.nc_topology.connections.add(7, 8, \"100Gbps\", \"0.005ms\", \"0\")\n", + "print(astra.configuration.network_backend.ns3.topology.choice)\n", + "print(astra.configuration.network_backend.ns3.topology.nc_topology)\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "id": "3aad02f4", + "metadata": {}, + "source": [ + "##### Configure ASTRA-sim cmd parameters" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c0e32dd9", + "metadata": {}, + "outputs": [], + "source": [ + "astra.configuration.common_config.cmd_parameters.comm_scale = 1\n", + "astra.configuration.common_config.cmd_parameters.injection_scale = 1\n", + "astra.configuration.common_config.cmd_parameters.rendezvous_protocol = False\n", + "\n", + "print(astra.configuration.common_config.cmd_parameters)" + ] + }, + { + "cell_type": "markdown", + "id": "667d96a8", + "metadata": {}, + "source": [ + "#### Start the simulation by specifying the network backend" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "bd777341", + "metadata": {}, + "outputs": [], + "source": [ + "astra.run_simulation(NetworkBackend.NS3)" + ] + }, + { + "cell_type": "markdown", + "id": "ff25abde", + "metadata": {}, + "source": [ + "##### Download all the configurations as a zip" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "b7a10140", + "metadata": { + "lines_to_next_cell": 2 + }, + "outputs": [], + "source": [ + "astra.download_configuration()" + ] + }, + { + "cell_type": "markdown", + "id": "5e2a281b", + "metadata": {}, + "source": [ + "##### Read output files" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c05384f3", + "metadata": {}, + "outputs": [], + "source": [ + "df = pd.read_csv(os.path.join(FileFolderUtils.get_instance().OUTPUT_DIR, \"fct.csv\"))\n", + "df.head()\n", + "df = pd.read_csv(os.path.join(FileFolderUtils.get_instance().OUTPUT_DIR, \"flow_stats.csv\"))\n", + "df.head()" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.0" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/client-scripts/notebooks/ns3_sample.py b/client-scripts/notebooks/ns3_sample.py deleted file mode 100644 index 2938a33..0000000 --- a/client-scripts/notebooks/ns3_sample.py +++ /dev/null @@ -1,128 +0,0 @@ -# --- -# jupyter: -# jupytext: -# text_representation: -# extension: .py -# format_name: percent -# format_version: '1.3' -# jupytext_version: 1.19.1 -# kernelspec: -# display_name: Python 3 -# language: python -# name: python3 -# --- - -# %% [markdown] -# ##### Import the required modules and configure the system path to locate them - -# %% -import sys -sys.path.append("../utils") -from astra_sim import AstraSim, Collective, NetworkBackend - -# %% [markdown] -# ##### Call the AstraSim client helper with the server endpoint and tag to connect to the ASTRA-sim gRPC server, initialize the SDK, and create a tagged folder for configs, results, and logs. - -# %% -astra = AstraSim(server_endpoint="172.17.0.2:8989", tag="ns3_sample") - -# %% [markdown] -# ##### Generate workload execution traces for each rank and set the required data size for AstraSim configuration - -# %% -astra.configuration.common_config.workload = astra.generate_collective(collective=Collective.ALLREDUCE, coll_size= 8 *1024*1024, npu_range=[0,8]) -print(astra.configuration.common_config.workload) - - -# %% [markdown] -# ##### Configure ASTRA-sim system config - -# %% -astra.configuration.common_config.system.scheduling_policy = astra.configuration.common_config.system.LIFO -astra.configuration.common_config.system.endpoint_delay = 10 -astra.configuration.common_config.system.active_chunks_per_dimension = 1 -astra.configuration.common_config.system.all_gather_implementation = [astra.configuration.common_config.system.RING] -astra.configuration.common_config.system.all_to_all_implementation = [astra.configuration.common_config.system.DIRECT] -astra.configuration.common_config.system.all_reduce_implementation = [astra.configuration.common_config.system.ONERING] -astra.configuration.common_config.system.collective_optimization = astra.configuration.common_config.system.LOCALBWAWARE -astra.configuration.common_config.system.local_mem_bw = 1600 -print(astra.configuration.common_config.system) - -# %% [markdown] -# ##### Configure ASTRA-sim remote memory configuration - -# %% -astra.configuration.common_config.remote_memory.memory_type = astra.configuration.common_config.remote_memory.NO_MEMORY_EXPANSION -print(astra.configuration.common_config.remote_memory) - -# %% [markdown] -# ##### Configure the network backend - -# %% -# astra.configuration.network_backend.choice = astra.configuration.network_backend.NS3 -astra.configuration.network_backend.ns3.network.packet_payload_size = int(8192) -astra.configuration.network_backend.ns3.logical_topology.logical_dimensions = [8] -astra.configuration.network_backend.ns3.trace.trace_ids = [0, 1, 2, 3,4 ,5 ,6, 7] -print("network backend choice set to:",astra.configuration.network_backend.ns3.topology.choice) -print(astra.configuration.network_backend.ns3.network.packet_payload_size) -print(astra.configuration.network_backend.ns3.logical_topology) -print(astra.configuration.network_backend.ns3.trace) - -# %% [markdown] -# ##### Set up the network topology - -# %% -# astra.configuration.network_backend.ns3.topology.choice = astra.configuration.network_backend.ns3.topology.NC_TOPOLOGY -# the topology configuration will be set automatically if we configure the nc_topology -astra.configuration.network_backend.ns3.topology.nc_topology.total_nodes = 9 -astra.configuration.network_backend.ns3.topology.nc_topology.total_switches = 1 -astra.configuration.network_backend.ns3.topology.nc_topology.total_links = 8 -astra.configuration.network_backend.ns3.topology.nc_topology.switch_ids = [8] -astra.configuration.network_backend.ns3.topology.nc_topology.connections.clear() -astra.configuration.network_backend.ns3.topology.nc_topology.connections.add(0, 8, "100Gbps", "0.005ms", "0") -astra.configuration.network_backend.ns3.topology.nc_topology.connections.add(1, 8, "100Gbps", "0.005ms", "0") -astra.configuration.network_backend.ns3.topology.nc_topology.connections.add(2, 8, "100Gbps", "0.005ms", "0") -astra.configuration.network_backend.ns3.topology.nc_topology.connections.add(3, 8, "100Gbps", "0.005ms", "0") -astra.configuration.network_backend.ns3.topology.nc_topology.connections.add(4, 8, "100Gbps", "0.005ms", "0") -astra.configuration.network_backend.ns3.topology.nc_topology.connections.add(5, 8, "100Gbps", "0.005ms", "0") -astra.configuration.network_backend.ns3.topology.nc_topology.connections.add(6, 8, "100Gbps", "0.005ms", "0") -astra.configuration.network_backend.ns3.topology.nc_topology.connections.add(7, 8, "100Gbps", "0.005ms", "0") -print(astra.configuration.network_backend.ns3.topology.choice) -print(astra.configuration.network_backend.ns3.topology.nc_topology) - - - -# %% [markdown] -# ##### Configure ASTRA-sim cmd parameters - -# %% -astra.configuration.common_config.cmd_parameters.comm_scale = 1 -astra.configuration.common_config.cmd_parameters.injection_scale = 1 -astra.configuration.common_config.cmd_parameters.rendezvous_protocol = False - -print(astra.configuration.common_config.cmd_parameters) - -# %% [markdown] -# #### Start the simulation by specifying the network backend - -# %% -astra.run_simulation(NetworkBackend.NS3) - -# %% [markdown] -# ##### Download all the configurations as a zip - -# %% -astra.download_configuration() - - -# %% [markdown] -# ##### Read output files - -# %% -import pandas as pd -import os -from common import FileFolderUtils -df = pd.read_csv(os.path.join(FileFolderUtils.get_instance().OUTPUT_DIR, "fct.csv")) -df.head() -df = pd.read_csv(os.path.join(FileFolderUtils.get_instance().OUTPUT_DIR, "flow_stats.csv")) -df.head() diff --git a/service/tests/test-notebook/test_analytical_congestion_aware_sample.py b/service/tests/test-notebook/test_analytical_congestion_aware_sample.py deleted file mode 100644 index 5df6c53..0000000 --- a/service/tests/test-notebook/test_analytical_congestion_aware_sample.py +++ /dev/null @@ -1,65 +0,0 @@ -def test_analytical_congestion_aware_sample(port_number): - - try: - - # ##### Import the required modules and configure the system path to locate them - - import sys - sys.path.append("../client-scripts/utils") - sys.path.append("../../client-scripts/utils") - sys.path.append("./client-scripts/utils") - from astra_sim import AstraSim, Collective, NetworkBackend - - # ##### Call the AstraSim client helper with the server endpoint and tag to connect to the ASTRA-sim gRPC server, initialize the SDK, and create a tagged folder for configs, results, and logs. - - astra = AstraSim(f"0.0.0.0:{port_number}", tag = "analytical_congestion_aware_sample") - - # ##### Generate workload execution traces for each rank and set the required data size for AstraSim configuration - - astra.configuration.common_config.workload = astra.generate_collective(collective=Collective.ALLTOALL, coll_size= 8*1024*1024, npu_range=[0,8]) - print(astra.configuration.common_config.workload) - - # ##### Configure ASTRA-sim system config - - astra.configuration.common_config.system.scheduling_policy = astra.configuration.common_config.system.LIFO - astra.configuration.common_config.system.endpoint_delay = 10 - astra.configuration.common_config.system.active_chunks_per_dimension = 1 - astra.configuration.common_config.system.all_gather_implementation = [astra.configuration.common_config.system.RING] - astra.configuration.common_config.system.all_to_all_implementation = [astra.configuration.common_config.system.DIRECT] - astra.configuration.common_config.system.all_reduce_implementation = [astra.configuration.common_config.system.RING] - astra.configuration.common_config.system.collective_optimization = astra.configuration.common_config.system.LOCALBWAWARE - astra.configuration.common_config.system.local_mem_bw = 1600 - print(astra.configuration.common_config.system) - - # ##### Configure ASTRA-sim remote memory configuration - - astra.configuration.common_config.remote_memory.memory_type = astra.configuration.common_config.remote_memory.NO_MEMORY_EXPANSION - print(astra.configuration.common_config.remote_memory) - - # ##### Configure the network backend and topology - - # astra.configuration.network_backend.choice = astra.configuration.network_backend.ANALYTICAL_CONGESTION_AWARE - astra.configuration.network_backend.analytical_congestion_aware.topology.network.clear() - astra.configuration.network_backend.analytical_congestion_aware.topology.network.add("switch", 8, 100, 0.005) # add(type_of_topology, number_of_nodes, bandwidth_in_gbps, latency_in_ns) - print("Network backend set to", astra.configuration.network_backend.choice) - print("network backend choice set to:",astra.configuration.network_backend.analytical_congestion_aware.topology.choice) - - # ##### Configure ASTRA-sim cmd parameters - - astra.configuration.common_config.cmd_parameters.comm_scale = 1 - astra.configuration.common_config.cmd_parameters.rendezvous_protocol = False - astra.configuration.common_config.cmd_parameters.injection_scale = 1 - - print(astra.configuration.network_backend.analytical_congestion_aware.topology.network) - - # #### Start the simulation by specifying the network backend - - astra.run_simulation(NetworkBackend.ANALYTICAL_CONGESTION_AWARE) - - # ##### Download all the configurations as a zip - - astra.download_configuration() - - assert True - except Exception as e: - assert False, f'Unexpected exception: {e}' diff --git a/service/tests/test-notebook/test_analytical_congestion_unaware_sample.py b/service/tests/test-notebook/test_analytical_congestion_unaware_sample.py deleted file mode 100644 index d29c07b..0000000 --- a/service/tests/test-notebook/test_analytical_congestion_unaware_sample.py +++ /dev/null @@ -1,63 +0,0 @@ -def test_analytical_congestion_unaware_sample(port_number): - - try: - - # ##### Import the required modules and configure the system path to locate them - - import sys - sys.path.append("../client-scripts/utils") - sys.path.append("../../client-scripts/utils") - sys.path.append("./client-scripts/utils") - from astra_sim import AstraSim, Collective, NetworkBackend - - # ##### Call the AstraSim client helper with the server endpoint and tag to connect to the ASTRA-sim gRPC server, initialize the SDK, and create a tagged folder for configs, results, and logs. - - astra = AstraSim(f"0.0.0.0:{port_number}", tag = "analytical_congestion_unaware_sample") - - # ##### Generate workload execution traces for each rank and set the required data size for AstraSim configuration - - astra.configuration.common_config.workload = astra.generate_collective(collective=Collective.ALLREDUCE, coll_size= 1024*1024*1024, npu_range=[0,8]) - print(astra.configuration.common_config.workload) - - # ##### Configure ASTRA-sim system config - - astra.configuration.common_config.system.scheduling_policy = astra.configuration.common_config.system.LIFO - astra.configuration.common_config.system.endpoint_delay = 10 - astra.configuration.common_config.system.active_chunks_per_dimension = 1 - astra.configuration.common_config.system.all_gather_implementation = [astra.configuration.common_config.system.RING] - astra.configuration.common_config.system.all_to_all_implementation = [astra.configuration.common_config.system.DIRECT] - astra.configuration.common_config.system.all_reduce_implementation = [astra.configuration.common_config.system.RING] - astra.configuration.common_config.system.collective_optimization = astra.configuration.common_config.system.LOCALBWAWARE - astra.configuration.common_config.system.local_mem_bw = 1600 - print(astra.configuration.common_config.system) - - # ##### Configure ASTRA-sim remote memory configuration - - astra.configuration.common_config.remote_memory.memory_type = astra.configuration.common_config.remote_memory.NO_MEMORY_EXPANSION - print(astra.configuration.common_config.remote_memory) - - # ##### Configure the network backend and topology - - # astra.configuration.network_backend.choice = astra.configuration.network_backend.ANALYTICAL_CONGESTION_UNAWARE - astra.configuration.network_backend.analytical_congestion_aware.topology.network.clear() - astra.configuration.network_backend.analytical_congestion_unaware.topology.network.add("fullyconnected", 8, 100, 0.005) # add(type_of_topology, number_of_nodes, bandwidth_in_gbps, latency_in_ns) - print("Network backend set to", astra.configuration.network_backend.choice) - print("network backend choice set to:",astra.configuration.network_backend.analytical_congestion_unaware.topology.choice) - - # ##### Configure ASTRA-sim cmd parameters - - astra.configuration.common_config.cmd_parameters.comm_scale = 1 - astra.configuration.common_config.cmd_parameters.rendezvous_protocol = False - astra.configuration.common_config.cmd_parameters.injection_scale = 1 - - # #### Start the simulation by specifying the network backend - - astra.run_simulation(NetworkBackend.ANALYTICAL_CONGESTION_UNAWARE) - - # ##### Download all the configurations as a zip - - astra.download_configuration() - - assert True - except Exception as e: - assert False, f'Unexpected exception: {e}' diff --git a/service/tests/test-notebook/test_analytical_dgx_device.py b/service/tests/test-notebook/test_analytical_dgx_device.py deleted file mode 100644 index 9fbbf27..0000000 --- a/service/tests/test-notebook/test_analytical_dgx_device.py +++ /dev/null @@ -1,100 +0,0 @@ -def test_analytical_dgx_device(port_number): - - try: - - # ##### Import the required modules and configure the system path to locate them - - import sys - sys.path.append("../client-scripts/utils") - sys.path.append("../../client-scripts/utils") - sys.path.append("./client-scripts/utils") - import networkx - import astra_sim_sdk.astra_sim_sdk as astra_sim_kit - from astra_sim import AstraSim, Collective, NetworkBackend - from infragraph.infragraph_service import InfraGraphService - from infragraph.blueprints.devices.nvidia.dgx import NvidiaDGX, DgxProfile - from infragraph import Infrastructure - - # ##### Call the AstraSim client helper with the server endpoint and tag to connect to the ASTRA-sim gRPC server, initialize the SDK, and create a tagged folder for configs, results, and logs - - astra = AstraSim(f"0.0.0.0:{port_number}", tag = "analytical_dgx_device") - - # ##### Get all available DGX variants - - from typing import get_args - print(get_args(DgxProfile)) - - # ##### Create a Nvidia DGX device fabric using infragraph device blueprint - - server = NvidiaDGX() - infrastructure = Infrastructure() - infrastructure.devices.append(server) - infrastructure.instances.add(name=server.name, device=server.name, count=1) - astra.configuration.infragraph.infrastructure.deserialize(infrastructure.serialize()) - print(astra.configuration.infragraph.infrastructure) - - # ##### Initialize the Infragraph service, display the fabric topology, and retrieve/set the total number of NPUs to generate the collective - - service = InfraGraphService() - service.set_graph(infrastructure) - total_npus = service.get_component(device=server, type="xpu").count - g = service.get_networkx_graph() - print(networkx.write_network_text(g, vertical_chains=True)) - - # ##### Generate workload execution traces for each rank and set the required data size for AstraSim configuration - - astra.configuration.common_config.workload = astra.generate_collective(collective=Collective.ALLREDUCE, coll_size= 1 *1024*1024, npu_range=[0, total_npus]) - - # ##### Configure ASTRA-sim system config - - astra.configuration.common_config.system.scheduling_policy = astra.configuration.common_config.system.LIFO - astra.configuration.common_config.system.endpoint_delay = 10 - astra.configuration.common_config.system.active_chunks_per_dimension = 1 - astra.configuration.common_config.system.all_gather_implementation = [astra.configuration.common_config.system.RING] - astra.configuration.common_config.system.all_to_all_implementation = [astra.configuration.common_config.system.DIRECT] - astra.configuration.common_config.system.all_reduce_implementation = [astra.configuration.common_config.system.ONERING] - astra.configuration.common_config.system.collective_optimization = astra.configuration.common_config.system.LOCALBWAWARE - astra.configuration.common_config.system.local_mem_bw = 1600 - - # ##### Configure ASTRA-sim remote memory configuration - - astra.configuration.common_config.remote_memory.memory_type = astra.configuration.common_config.remote_memory.NO_MEMORY_EXPANSION - print(astra.configuration.common_config.remote_memory) - - # ##### Set ASTRA-sim network backend to ANALYTICAL_CONGESTION_AWARE - - astra.configuration.network_backend.analytical_congestion_aware.topology.choice = astra.configuration.network_backend.analytical_congestion_aware.topology.INFRAGRAPH - - # ##### Adding ASTRA-sim - Infragraph specific annotation - - host_device_spec = astra_sim_kit.AnnotationDeviceSpecifications() - host_device_spec.device_bandwidth_gbps = 100 - host_device_spec.device_latency_ms = 0.05 - host_device_spec.device_name = server.name - host_device_spec.device_type = "host" - astra.configuration.infragraph.annotations.device_specifications.append(host_device_spec) - - # ##### Configure ASTRA-sim cmd parameters - - astra.configuration.common_config.cmd_parameters.comm_scale = 1 - astra.configuration.common_config.cmd_parameters.injection_scale = 1 - astra.configuration.common_config.cmd_parameters.rendezvous_protocol = False - - # #### Start the simulation by specifying the network backend - - astra.run_simulation(NetworkBackend.ANALYTICAL_CONGESTION_AWARE) - - # ##### Save infragraph as a yaml - - import yaml - import os - from common import FileFolderUtils - with open(os.path.join(FileFolderUtils.get_instance().OUTPUT_DIR,"../infrastructure","analytical_dgx_device.yaml"),"w") as f: - data = infrastructure.serialize("dict") - yaml.dump(data, f, default_flow_style=False, indent=4) - - print("saved yaml to:", os.path.join(FileFolderUtils.get_instance().OUTPUT_DIR,"..","analytical_dgx_device.yaml")) - - assert True - except Exception as e: - assert False, f'Unexpected exception: {e}' diff --git a/service/tests/test-notebook/test_analytical_ironwood_rack.py b/service/tests/test-notebook/test_analytical_ironwood_rack.py deleted file mode 100644 index f685470..0000000 --- a/service/tests/test-notebook/test_analytical_ironwood_rack.py +++ /dev/null @@ -1,100 +0,0 @@ -def test_analytical_ironwood_rack(port_number): - - try: - - # ##### Import the required modules and configure the system path to locate them - - import sys - sys.path.append("../client-scripts/utils") - sys.path.append("../../client-scripts/utils") - sys.path.append("./client-scripts/utils") - import networkx - import astra_sim_sdk.astra_sim_sdk as astra_sim_kit - from astra_sim import AstraSim, Collective, NetworkBackend - from infragraph.infragraph_service import InfraGraphService - from infragraph.blueprints.devices.ironwood_rack import IronwoodRack - from infragraph import Infrastructure - - # ##### Call the AstraSim client helper with the server endpoint and tag to connect to the ASTRA-sim gRPC server, initialize the SDK, and create a tagged folder for configs, results, and logs - - astra = AstraSim(f"0.0.0.0:{port_number}", tag = "analytical_ironwood_rack") - - # ##### Create a ironwood rack device fabric using infragraph device blueprint - - server = IronwoodRack() - infrastructure = Infrastructure() - infrastructure.devices.append(server) - - infrastructure.instances.add(name=server.name, device=server.name, count=1) - astra.configuration.infragraph.infrastructure.deserialize(infrastructure.serialize()) - print(astra.configuration.infragraph.infrastructure) - - # ##### Initialize the Infragraph service, display the fabric topology, and retrieve/set the total number of NPUs to generate the collective - - service = InfraGraphService() - service.set_graph(infrastructure) - total_npus = service.get_component(device=server, type="xpu").count - g = service.get_networkx_graph() - print(networkx.write_network_text(g, vertical_chains=True)) - - # ##### Generate workload execution traces for each rank and set the required data size for AstraSim configuration - - astra.configuration.common_config.workload = astra.generate_collective(collective=Collective.ALLREDUCE, coll_size= 1 *1024*1024, npu_range=[0, total_npus]) - - # ##### Configure ASTRA-sim system config - - astra.configuration.common_config.system.scheduling_policy = astra.configuration.common_config.system.LIFO - astra.configuration.common_config.system.endpoint_delay = 10 - astra.configuration.common_config.system.active_chunks_per_dimension = 1 - astra.configuration.common_config.system.all_gather_implementation = [astra.configuration.common_config.system.RING, astra.configuration.common_config.system.RING, astra.configuration.common_config.system.RING] - astra.configuration.common_config.system.all_to_all_implementation = [astra.configuration.common_config.system.RING, astra.configuration.common_config.system.RING, astra.configuration.common_config.system.RING] - astra.configuration.common_config.system.all_reduce_implementation = [astra.configuration.common_config.system.RING, astra.configuration.common_config.system.RING, astra.configuration.common_config.system.RING] - astra.configuration.common_config.system.collective_optimization = astra.configuration.common_config.system.LOCALBWAWARE - astra.configuration.common_config.system.local_mem_bw = 1600 - - # ##### Configure ASTRA-sim remote memory configuration - - astra.configuration.common_config.remote_memory.memory_type = astra.configuration.common_config.remote_memory.NO_MEMORY_EXPANSION - print(astra.configuration.common_config.remote_memory) - - # ##### Configure network backend to ANALYTICAL_CONGESTION_AWARE - - astra.configuration.network_backend.analytical_congestion_unaware.topology.choice = astra.configuration.network_backend.analytical_congestion_unaware.topology.INFRAGRAPH - - # ##### Adding ASTRA-sim - Infragraph specific annotation - - host_device_spec = astra_sim_kit.AnnotationDeviceSpecifications() - host_device_spec.device_bandwidth_gbps = 100 - host_device_spec.device_latency_ms = 0.05 - host_device_spec.device_name = server.name - host_device_spec.device_type = "host" - astra.configuration.infragraph.annotations.device_specifications.append(host_device_spec) - - # ##### Configure ASTRA-sim cmd parameters - - astra.configuration.common_config.cmd_parameters.comm_scale = 1 - astra.configuration.common_config.cmd_parameters.injection_scale = 1 - astra.configuration.common_config.cmd_parameters.rendezvous_protocol = False - - # #### Start the simulation by specifying the network backend - - astra.run_simulation(NetworkBackend.ANALYTICAL_CONGESTION_UNAWARE) - - # ##### Download all the configurations as a zip - - astra.download_configuration() - - # ##### Save infragraph as a yaml - - import yaml - import os - from common import FileFolderUtils - with open(os.path.join(FileFolderUtils.get_instance().OUTPUT_DIR,"../infrastructure","analytical_dgx_device.yaml"),"w") as f: - data = infrastructure.serialize("dict") - yaml.dump(data, f, default_flow_style=False, indent=4) - - print("saved yaml to:", os.path.join(FileFolderUtils.get_instance().OUTPUT_DIR,"..","analytical_dgx_device.yaml")) - - assert True - except Exception as e: - assert False, f'Unexpected exception: {e}' diff --git a/service/tests/test-notebook/test_htsim_clos_fabric_2tier.py b/service/tests/test-notebook/test_htsim_clos_fabric_2tier.py deleted file mode 100644 index 4bb2f43..0000000 --- a/service/tests/test-notebook/test_htsim_clos_fabric_2tier.py +++ /dev/null @@ -1,121 +0,0 @@ -def test_htsim_clos_fabric_2tier(port_number): - - try: - - # ##### Import the required modules and configure the system path to locate them - - import sys - sys.path.append("../client-scripts/utils") - sys.path.append("../../client-scripts/utils") - sys.path.append("./client-scripts/utils") - import networkx - import astra_sim_sdk.astra_sim_sdk as astra_sim_kit - from astra_sim import AstraSim, Collective, NetworkBackend - from infragraph.infragraph_service import InfraGraphService - from infragraph.blueprints.fabrics.clos_fat_tree_fabric import ClosFatTreeFabric - from infragraph.blueprints.devices.generic.server import Server - from infragraph.blueprints.devices.generic.generic_switch import Switch - - # ##### Call the AstraSim client helper with the server endpoint and tag to connect to the ASTRA-sim gRPC server, initialize the SDK, and create a tagged folder for configs, results, and logs. - - astra = AstraSim(f"0.0.0.0:{port_number}", tag = "htsim_clos_fabric_2tier") - - # ##### Create a two-tier clos fabric using infragraph fabric blueprint - - server = Server() - switch = Switch(port_count=8) - infrastructure = ClosFatTreeFabric(switch, server, 2,[]) - astra.configuration.infragraph.infrastructure.deserialize(infrastructure.serialize()) - print(astra.configuration.infragraph.infrastructure) - - # ##### Initialize the Infragraph service, display the fabric topology, and retrieve/set the total number of NPUs to generate the collective - - service = InfraGraphService() - service.set_graph(infrastructure) - g = service.get_networkx_graph() - print(networkx.write_network_text(g, vertical_chains=True)) - total_npus = 16 - - # ##### Generate workload execution traces for each rank and set the required data size for AstraSim configuration - - astra.configuration.common_config.workload = astra.generate_collective(collective=Collective.ALLREDUCE, coll_size= 1 *1024*1024, npu_range=[0, total_npus]) - - # ##### Configure ASTRA-sim system config - - astra.configuration.common_config.system.scheduling_policy = astra.configuration.common_config.system.LIFO - astra.configuration.common_config.system.endpoint_delay = 10 - astra.configuration.common_config.system.active_chunks_per_dimension = 1 - astra.configuration.common_config.system.preferred_dataset_splits = 4 - astra.configuration.common_config.system.all_gather_implementation = [astra.configuration.common_config.system.RING] - astra.configuration.common_config.system.all_to_all_implementation = [astra.configuration.common_config.system.DIRECT] - astra.configuration.common_config.system.all_reduce_implementation = [astra.configuration.common_config.system.RING] - astra.configuration.common_config.system.collective_optimization = astra.configuration.common_config.system.LOCALBWAWARE - astra.configuration.common_config.system.local_mem_bw = 1600 - astra.configuration.common_config.system.peak_perf = 900 - astra.configuration.common_config.system.roofline_enabled = 0 - print(astra.configuration.common_config.system) - - # ##### Configure the remote memory configuration - - astra.configuration.common_config.remote_memory.memory_type = astra.configuration.common_config.remote_memory.NO_MEMORY_EXPANSION - print(astra.configuration.common_config.remote_memory) - - # ##### Configure the selected network backend and the topology (infragraph or network_topology_configuration) - - astra.configuration.network_backend.choice = astra.configuration.network_backend.HTSIM - astra.configuration.network_backend.htsim.topology.choice = astra.configuration.network_backend.htsim.topology.INFRAGRAPH - - # ##### Select htsim protocol - - astra.configuration.network_backend.htsim.htsim_protocol.choice = astra.configuration.network_backend.htsim.htsim_protocol.TCP - print("Network backend set to", astra.configuration.network_backend.choice) - print("network topology choice set to:",astra.configuration.network_backend.htsim.topology.choice) - print("protocol set to", astra.configuration.network_backend.htsim.htsim_protocol) - astra.configuration.network_backend.htsim.htsim_protocol.tcp.nodes = str(total_npus) - - # ##### Adding ASTRA-sim - Infragraph specific annotation - - host_device_spec = astra_sim_kit.AnnotationDeviceSpecifications() - host_device_spec.device_bandwidth_gbps = 1000 - host_device_spec.device_latency_ms = 0.005 - host_device_spec.device_name = "server" - host_device_spec.device_type = "host" - astra.configuration.infragraph.annotations.device_specifications.append(host_device_spec) - - switch_device_spec = astra_sim_kit.AnnotationDeviceSpecifications() - switch_device_spec.device_bandwidth_gbps = 1000 - switch_device_spec.device_latency_ms = 0.005 - switch_device_spec.device_name = "switch" - switch_device_spec.device_type = "switch" - astra.configuration.infragraph.annotations.device_specifications.append( - switch_device_spec - ) - - # ##### Configure ASTRA-sim cmd parameters - - astra.configuration.common_config.cmd_parameters.comm_scale = 1 - astra.configuration.common_config.cmd_parameters.injection_scale = 1 - astra.configuration.common_config.cmd_parameters.rendezvous_protocol = False - - # #### Start the simulation by specifying the network backend - - astra.run_simulation(NetworkBackend.HTSIM) - - # ##### Download all the configurations as a zip - - astra.download_configuration() - - # ##### Save infragraph as a yaml - - import yaml - import os - from common import FileFolderUtils - with open(os.path.join(FileFolderUtils.get_instance().OUTPUT_DIR,"../infrastructure","htsim_clos_fabric_2tier.yaml"),"w") as f: - data = infrastructure.serialize("dict") - yaml.dump(data, f, default_flow_style=False, indent=4) - - print("saved yaml to:", os.path.join(FileFolderUtils.get_instance().OUTPUT_DIR,"..","htsim_clos_fabric_2tier.yaml")) - - assert True - except Exception as e: - assert False, f'Unexpected exception: {e}' diff --git a/service/tests/test-notebook/test_htsim_clos_fabric_3tier.py b/service/tests/test-notebook/test_htsim_clos_fabric_3tier.py deleted file mode 100644 index 91ff932..0000000 --- a/service/tests/test-notebook/test_htsim_clos_fabric_3tier.py +++ /dev/null @@ -1,121 +0,0 @@ -def test_htsim_clos_fabric_3tier(port_number): - - try: - - # ##### Import the required modules and configure the system path to locate them - - import sys - sys.path.append("../client-scripts/utils") - sys.path.append("../../client-scripts/utils") - sys.path.append("./client-scripts/utils") - import networkx - import astra_sim_sdk.astra_sim_sdk as astra_sim_kit - from astra_sim import AstraSim, Collective, NetworkBackend - from infragraph.infragraph_service import InfraGraphService - from infragraph.blueprints.fabrics.clos_fat_tree_fabric import ClosFatTreeFabric - from infragraph.blueprints.devices.generic.server import Server - from infragraph.blueprints.devices.generic.generic_switch import Switch - - # ##### Call the AstraSim client helper with the server endpoint and tag to connect to the ASTRA-sim gRPC server, initialize the SDK, and create a tagged folder for configs, results, and logs - - astra = AstraSim(f"0.0.0.0:{port_number}", tag = "htsim_clos_fabric_3tier") - - # ##### Create a three-tier clos fabric using infragraph fabric blueprint - - server = Server() - switch = Switch(port_count=8) - infrastructure = ClosFatTreeFabric(switch, server, 3,[]) - astra.configuration.infragraph.infrastructure.deserialize(infrastructure.serialize()) - print(astra.configuration.infragraph.infrastructure) - - # ##### Initialize the Infragraph service, display the fabric topology, and retrieve/set the total number of NPUs to generate the collective - - service = InfraGraphService() - service.set_graph(infrastructure) - g = service.get_networkx_graph() - print(networkx.write_network_text(g, vertical_chains=True)) - total_npus = 64 - - # ##### Generate workload execution traces for each rank and set the required data size for AstraSim configuration - - astra.configuration.common_config.workload = astra.generate_collective(collective=Collective.ALLREDUCE, coll_size= 1 *1024*1024, npu_range=[0, total_npus]) - - # ##### Configure ASTRA-sim system config - - astra.configuration.common_config.system.scheduling_policy = astra.configuration.common_config.system.LIFO - astra.configuration.common_config.system.endpoint_delay = 10 - astra.configuration.common_config.system.active_chunks_per_dimension = 1 - astra.configuration.common_config.system.preferred_dataset_splits = 4 - astra.configuration.common_config.system.all_gather_implementation = [astra.configuration.common_config.system.RING] - astra.configuration.common_config.system.all_to_all_implementation = [astra.configuration.common_config.system.DIRECT] - astra.configuration.common_config.system.all_reduce_implementation = [astra.configuration.common_config.system.RING] - astra.configuration.common_config.system.collective_optimization = astra.configuration.common_config.system.LOCALBWAWARE - astra.configuration.common_config.system.local_mem_bw = 1600 - astra.configuration.common_config.system.peak_perf = 900 - astra.configuration.common_config.system.roofline_enabled = 0 - print(astra.configuration.common_config.system) - - # ##### Configure ASTRA-sim remote memory configuration - - astra.configuration.common_config.remote_memory.memory_type = astra.configuration.common_config.remote_memory.NO_MEMORY_EXPANSION - print(astra.configuration.common_config.remote_memory) - - # ##### Configure the selected network backend and the topology (infragraph or network_topology_configuration) - - astra.configuration.network_backend.choice = astra.configuration.network_backend.HTSIM - astra.configuration.network_backend.htsim.topology.choice = astra.configuration.network_backend.htsim.topology.INFRAGRAPH - - # ##### Select htsim protocol - - astra.configuration.network_backend.htsim.htsim_protocol.choice = astra.configuration.network_backend.htsim.htsim_protocol.TCP - print("Network backend set to", astra.configuration.network_backend.choice) - print("network topology choice set to:",astra.configuration.network_backend.htsim.topology.choice) - print("protocol set to", astra.configuration.network_backend.htsim.htsim_protocol) - astra.configuration.network_backend.htsim.htsim_protocol.tcp.nodes = str(total_npus) - - # ##### Adding ASTRA-sim - Infragraph specific annotation - - host_device_spec = astra_sim_kit.AnnotationDeviceSpecifications() - host_device_spec.device_bandwidth_gbps = 1000 - host_device_spec.device_latency_ms = 0.005 - host_device_spec.device_name = "server" - host_device_spec.device_type = "host" - astra.configuration.infragraph.annotations.device_specifications.append(host_device_spec) - - switch_device_spec = astra_sim_kit.AnnotationDeviceSpecifications() - switch_device_spec.device_bandwidth_gbps = 1000 - switch_device_spec.device_latency_ms = 0.005 - switch_device_spec.device_name = "switch" - switch_device_spec.device_type = "switch" - astra.configuration.infragraph.annotations.device_specifications.append( - switch_device_spec - ) - - # ##### Configure ASTRA-sim cmd parameters - - astra.configuration.common_config.cmd_parameters.comm_scale = 1 - astra.configuration.common_config.cmd_parameters.injection_scale = 1 - astra.configuration.common_config.cmd_parameters.rendezvous_protocol = False - - # #### Start the simulation by specifying the network backend - - astra.run_simulation(NetworkBackend.HTSIM) - - # ##### Download all the configurations as a zip - - astra.download_configuration() - - # ##### Save infragraph as a yaml - - import yaml - import os - from common import FileFolderUtils - with open(os.path.join(FileFolderUtils.get_instance().OUTPUT_DIR,"../infrastructure","htsim_clos_fabric_3tier.yaml"),"w") as f: - data = infrastructure.serialize("dict") - yaml.dump(data, f, default_flow_style=False, indent=4) - - print("saved yaml to:", os.path.join(FileFolderUtils.get_instance().OUTPUT_DIR,"..","htsim_clos_fabric_3tier.yaml")) - - assert True - except Exception as e: - assert False, f'Unexpected exception: {e}' diff --git a/service/tests/test-notebook/test_htsim_sample.py b/service/tests/test-notebook/test_htsim_sample.py deleted file mode 100644 index 9309d71..0000000 --- a/service/tests/test-notebook/test_htsim_sample.py +++ /dev/null @@ -1,97 +0,0 @@ -def test_htsim_sample(port_number): - - try: - - # ##### Import the required modules and configure the system path to locate them - - import sys - sys.path.append("../client-scripts/utils") - sys.path.append("../../client-scripts/utils") - sys.path.append("./client-scripts/utils") - from astra_sim import AstraSim, Collective, NetworkBackend - - # ##### Call the AstraSim client helper with the server endpoint and tag to connect to the ASTRA-sim gRPC server, initialize the SDK, and create a tagged folder for configs, results, and logs. - - astra = AstraSim(f"0.0.0.0:{port_number}",tag = "htsim_sample") - - # ##### Generate workload execution traces for each rank and set the required data size for AstraSim configuration - - astra.configuration.common_config.workload = astra.generate_collective(collective=Collective.ALLREDUCE, coll_size= 1 * 1024 * 1024, npu_range=[0, 8]) - print(astra.configuration.common_config.workload) - - # ##### Configure ASTRA-sim system config - - astra.configuration.common_config.system.scheduling_policy = astra.configuration.common_config.system.LIFO - astra.configuration.common_config.system.endpoint_delay = 10 - astra.configuration.common_config.system.active_chunks_per_dimension = 1 - astra.configuration.common_config.system.preferred_dataset_splits = 4 - astra.configuration.common_config.system.all_gather_implementation = [astra.configuration.common_config.system.RING] - astra.configuration.common_config.system.all_to_all_implementation = [astra.configuration.common_config.system.DIRECT] - astra.configuration.common_config.system.all_reduce_implementation = [astra.configuration.common_config.system.RING] - astra.configuration.common_config.system.collective_optimization = astra.configuration.common_config.system.LOCALBWAWARE - astra.configuration.common_config.system.local_mem_bw = 1600 - astra.configuration.common_config.system.peak_perf = 900 - astra.configuration.common_config.system.roofline_enabled = 0 - print(astra.configuration.common_config.system) - - # ##### Configure ASTRA-sim remote memory configuration - - astra.configuration.common_config.remote_memory.memory_type = astra.configuration.common_config.remote_memory.NO_MEMORY_EXPANSION - print(astra.configuration.common_config.remote_memory) - - # ##### Configure the network backend, htsim protocol and topology - - astra.configuration.network_backend.htsim.topology.network_topology_configuration.network.clear() - astra.configuration.network_backend.htsim.topology.network_topology_configuration.network.add("ring", 8, 100, 0.005) # add(type_of_topology, number_of_nodes, bandwidth_in_gbps, latency_in_ns) - astra.configuration.network_backend.htsim.htsim_protocol.choice = astra.configuration.network_backend.htsim.htsim_protocol.TCP - print("Network backend set to", astra.configuration.network_backend.choice) - print("network backend choice set to:",astra.configuration.network_backend.htsim.topology.choice) - print("protocol set to", astra.configuration.network_backend.htsim.htsim_protocol.choice) - - # ##### Configure the fat tree topology. - - # Configuring topo file - astra.configuration.network_backend.htsim.topology.network_topology_configuration.htsim_topology.fat_tree.nodes = 8 - astra.configuration.network_backend.htsim.topology.network_topology_configuration.htsim_topology.fat_tree.podsize = 4 - astra.configuration.network_backend.htsim.topology.network_topology_configuration.htsim_topology.fat_tree.tiers = 3 - - # Configuring values for each tiers - # Configuring values for tier 0 - astra.configuration.network_backend.htsim.topology.network_topology_configuration.htsim_topology.fat_tree.tier_0.set( - downlink_speed_gbps=200 - ) - astra.configuration.network_backend.htsim.topology.network_topology_configuration.htsim_topology.fat_tree.tier_0.radix_down = 2 - astra.configuration.network_backend.htsim.topology.network_topology_configuration.htsim_topology.fat_tree.tier_0.radix_up = 2 - astra.configuration.network_backend.htsim.topology.network_topology_configuration.htsim_topology.fat_tree.tier_0.downlink_latency_ns = 1000 - - # Configuring values for tier 1 - astra.configuration.network_backend.htsim.topology.network_topology_configuration.htsim_topology.fat_tree.tier_1.set( - downlink_speed_gbps=200 - ) - astra.configuration.network_backend.htsim.topology.network_topology_configuration.htsim_topology.fat_tree.tier_1.radix_down = 2 - astra.configuration.network_backend.htsim.topology.network_topology_configuration.htsim_topology.fat_tree.tier_1.radix_up = 4 - astra.configuration.network_backend.htsim.topology.network_topology_configuration.htsim_topology.fat_tree.tier_1.downlink_latency_ns = 1000 - astra.configuration.network_backend.htsim.topology.network_topology_configuration.htsim_topology.fat_tree.tier_1.bundle = 1 - - # Configuring values for tier 2 - astra.configuration.network_backend.htsim.topology.network_topology_configuration.htsim_topology.fat_tree.tier_2.set( - downlink_speed_gbps=100 - ) - astra.configuration.network_backend.htsim.topology.network_topology_configuration.htsim_topology.fat_tree.tier_2.radix_down = 4 - astra.configuration.network_backend.htsim.topology.network_topology_configuration.htsim_topology.fat_tree.tier_2.downlink_latency_ns = 1000 - astra.configuration.network_backend.htsim.topology.network_topology_configuration.htsim_topology.fat_tree.tier_2.bundle = 2 - - astra.configuration.network_backend.htsim.htsim_protocol.tcp.nodes = "8" - print(astra.configuration.network_backend.htsim.topology.network_topology_configuration) - - # #### Start the simulation by specifying the network backend - - astra.run_simulation(NetworkBackend.HTSIM) - - # ##### Download all the configurations as a zip - - astra.download_configuration() - - assert True - except Exception as e: - assert False, f'Unexpected exception: {e}' diff --git a/service/tests/test-notebook/test_load_existing_et_example.py b/service/tests/test-notebook/test_load_existing_et_example.py deleted file mode 100644 index 077a245..0000000 --- a/service/tests/test-notebook/test_load_existing_et_example.py +++ /dev/null @@ -1,101 +0,0 @@ -def test_load_existing_et_example(port_number): - - try: - - # ##### Import the required modules and configure the system path to locate them - - import sys - import os - import pandas as pd - sys.path.append("../client-scripts/utils") - sys.path.append("../../client-scripts/utils") - sys.path.append("./client-scripts/utils") - from common import FileFolderUtils - from astra_sim import AstraSim, NetworkBackend - from pathlib import Path - - # ##### Call the AstraSim client helper with the server endpoint and tag to connect to the ASTRA-sim gRPC server, initialize the SDK, and create a tagged folder for configs, results, and logs. - - astra = AstraSim(f"0.0.0.0:{port_number}", tag="load_existing_et_example") - - # ##### Add existing workload execution traces by giving the path to the workload with basename included, mandatory for AstraSim workload configuration. - - cwd = os.path.dirname(os.path.abspath(__file__)) if "__file__" in globals() else os.getcwd() - astra.configuration.common_config.workload = os.path.join(cwd, "../resources/example_workload/workload/all_reduce") - print(astra.configuration.common_config.workload) - - # ##### Configure ASTRA-sim system config - - astra.configuration.common_config.system.scheduling_policy = astra.configuration.common_config.system.LIFO - astra.configuration.common_config.system.endpoint_delay = 10 - astra.configuration.common_config.system.active_chunks_per_dimension = 1 - astra.configuration.common_config.system.all_gather_implementation = [astra.configuration.common_config.system.RING] - astra.configuration.common_config.system.all_to_all_implementation = [astra.configuration.common_config.system.DIRECT] - astra.configuration.common_config.system.all_reduce_implementation = [astra.configuration.common_config.system.ONERING] - astra.configuration.common_config.system.collective_optimization = astra.configuration.common_config.system.LOCALBWAWARE - astra.configuration.common_config.system.local_mem_bw = 1600 - print(astra.configuration.common_config.system) - - # ##### Configure ASTRA-sim remote memory configuration - - astra.configuration.common_config.remote_memory.memory_type = astra.configuration.common_config.remote_memory.NO_MEMORY_EXPANSION - print(astra.configuration.common_config.remote_memory) - - # ##### Configure the network backend - - # astra.configuration.network_backend.choice = astra.configuration.network_backend.NS3 - astra.configuration.network_backend.ns3.network.packet_payload_size = int(8192) - astra.configuration.network_backend.ns3.logical_topology.logical_dimensions = [8] - astra.configuration.network_backend.ns3.trace.trace_ids = [0, 1, 2, 3,4 ,5 ,6, 7] - print("network backend choice set to:",astra.configuration.network_backend.ns3.topology.choice) - print(astra.configuration.network_backend.ns3.network.packet_payload_size) - print(astra.configuration.network_backend.ns3.logical_topology) - print(astra.configuration.network_backend.ns3.trace) - - # ##### Configure the network topology - - # astra.configuration.network_backend.ns3.topology.choice = astra.configuration.network_backend.ns3.topology.NC_TOPOLOGY - # the topology configuration will be set automatically if we configure the nc_topology - astra.configuration.network_backend.ns3.topology.nc_topology.total_nodes = 9 - astra.configuration.network_backend.ns3.topology.nc_topology.total_switches = 1 - astra.configuration.network_backend.ns3.topology.nc_topology.total_links = 8 - astra.configuration.network_backend.ns3.topology.nc_topology.switch_ids = [8] - astra.configuration.network_backend.ns3.topology.nc_topology.connections.clear() - astra.configuration.network_backend.ns3.topology.nc_topology.connections.add(0, 8, "100Gbps", "0.005ms", "0") - astra.configuration.network_backend.ns3.topology.nc_topology.connections.add(1, 8, "100Gbps", "0.005ms", "0") - astra.configuration.network_backend.ns3.topology.nc_topology.connections.add(2, 8, "100Gbps", "0.005ms", "0") - astra.configuration.network_backend.ns3.topology.nc_topology.connections.add(3, 8, "100Gbps", "0.005ms", "0") - astra.configuration.network_backend.ns3.topology.nc_topology.connections.add(4, 8, "100Gbps", "0.005ms", "0") - astra.configuration.network_backend.ns3.topology.nc_topology.connections.add(5, 8, "100Gbps", "0.005ms", "0") - astra.configuration.network_backend.ns3.topology.nc_topology.connections.add(6, 8, "100Gbps", "0.005ms", "0") - astra.configuration.network_backend.ns3.topology.nc_topology.connections.add(7, 8, "100Gbps", "0.005ms", "0") - print(astra.configuration.network_backend.ns3.topology.choice) - print(astra.configuration.network_backend.ns3.topology.nc_topology) - - # ##### Configure ASTRA-sim cmd parameters - - astra.configuration.common_config.cmd_parameters.comm_scale = 1 - astra.configuration.common_config.cmd_parameters.injection_scale = 1 - astra.configuration.common_config.cmd_parameters.rendezvous_protocol = False - - print(astra.configuration.common_config.cmd_parameters) - - # #### Start the simulation by specifying the network backend - - astra.run_simulation(NetworkBackend.NS3) - - # ##### Download all the configurations as a zip - - astra.download_configuration() - - # ##### Read output files - - df = pd.read_csv(os.path.join(FileFolderUtils.get_instance().OUTPUT_DIR, "fct.csv")) - df.head() - - df = pd.read_csv(os.path.join(FileFolderUtils.get_instance().OUTPUT_DIR, "flow_stats.csv")) - df.head() - - assert True - except Exception as e: - assert False, f'Unexpected exception: {e}' diff --git a/service/tests/test-notebook/test_ns3_clos_fabric_2tier.py b/service/tests/test-notebook/test_ns3_clos_fabric_2tier.py deleted file mode 100644 index ecfb49e..0000000 --- a/service/tests/test-notebook/test_ns3_clos_fabric_2tier.py +++ /dev/null @@ -1,128 +0,0 @@ -def test_ns3_clos_fabric_2tier(port_number): - - try: - - # ##### Import the required modules and configure the system path to locate them - - import sys - sys.path.append("../client-scripts/utils") - sys.path.append("../../client-scripts/utils") - sys.path.append("./client-scripts/utils") - import networkx - import astra_sim_sdk.astra_sim_sdk as astra_sim_kit - from astra_sim import AstraSim, Collective, NetworkBackend - from infragraph.infragraph_service import InfraGraphService - from infragraph.blueprints.fabrics.clos_fat_tree_fabric import ClosFatTreeFabric - from infragraph.blueprints.devices.generic.server import Server - from infragraph.blueprints.devices.generic.generic_switch import Switch - - # ##### Call the AstraSim client helper with the server endpoint and tag to connect to the ASTRA-sim gRPC server, initialize the SDK, and create a tagged folder for configs, results, and logs - - astra = AstraSim(f"0.0.0.0:{port_number}", tag = "ns3_clos_fabric_2tier") - - # ##### Create a two-tier clos fabric using infragraph fabric blueprint - - server = Server() - switch = Switch(port_count=8) - infrastructure = ClosFatTreeFabric(switch, server, 2,[]) - astra.configuration.infragraph.infrastructure.deserialize(infrastructure.serialize()) - print(astra.configuration.infragraph.infrastructure) - - # ##### Initialize the Infragraph service, display the fabric topology, and retrieve/set the total number of NPUs to generate the collective - - service = InfraGraphService() - service.set_graph(infrastructure) - g = service.get_networkx_graph() - print(networkx.write_network_text(g, vertical_chains=True)) - total_npus = 32 - - # ##### Generate workload execution traces for each rank and set the required data size for AstraSim configuration - - astra.configuration.common_config.workload = astra.generate_collective(collective=Collective.ALLREDUCE, coll_size= 8 *1024*1024, npu_range=[0, total_npus]) - - # ##### Configure ASTRA-sim system config - - astra.configuration.common_config.system.scheduling_policy = astra.configuration.common_config.system.LIFO - astra.configuration.common_config.system.endpoint_delay = 10 - astra.configuration.common_config.system.active_chunks_per_dimension = 1 - astra.configuration.common_config.system.all_gather_implementation = [astra.configuration.common_config.system.RING] - astra.configuration.common_config.system.all_to_all_implementation = [astra.configuration.common_config.system.DIRECT] - astra.configuration.common_config.system.all_reduce_implementation = [astra.configuration.common_config.system.ONERING] - astra.configuration.common_config.system.collective_optimization = astra.configuration.common_config.system.LOCALBWAWARE - astra.configuration.common_config.system.local_mem_bw = 1600 - - # ##### Configure ASTRA-sim remote memory configuration - - astra.configuration.common_config.remote_memory.memory_type = astra.configuration.common_config.remote_memory.NO_MEMORY_EXPANSION - print(astra.configuration.common_config.remote_memory) - - # ##### Configure the selected network backend and the topology (infragraph or nc_topology) - - astra.configuration.network_backend.choice = astra.configuration.network_backend.NS3 - astra.configuration.network_backend.ns3.topology.choice = astra.configuration.network_backend.ns3.topology.INFRAGRAPH - astra.configuration.network_backend.ns3.network.packet_payload_size = int(8192) - - # ##### Adding ns3 trace and logical dimension - - astra.configuration.network_backend.ns3.logical_topology.logical_dimensions = [total_npus] - astra.configuration.network_backend.ns3.trace.trace_ids = [] - for i in range(0, total_npus): - astra.configuration.network_backend.ns3.trace.trace_ids.append(i) - - # ##### Adding ASTRA-sim - Infragraph specific annotation - - host_device_spec = astra_sim_kit.AnnotationDeviceSpecifications() - host_device_spec.device_bandwidth_gbps = 100 - host_device_spec.device_latency_ms = 0.05 - host_device_spec.device_name = "server" - host_device_spec.device_type = "host" - astra.configuration.infragraph.annotations.device_specifications.append(host_device_spec) - - switch_device_spec = astra_sim_kit.AnnotationDeviceSpecifications() - switch_device_spec.device_bandwidth_gbps = 100 - switch_device_spec.device_latency_ms = 0.05 - switch_device_spec.device_name = "switch" - switch_device_spec.device_type = "switch" - astra.configuration.infragraph.annotations.device_specifications.append( - switch_device_spec - ) - - # ##### Configure ASTRA-sim cmd parameters - - astra.configuration.common_config.cmd_parameters.comm_scale = 1 - astra.configuration.common_config.cmd_parameters.injection_scale = 1 - astra.configuration.common_config.cmd_parameters.rendezvous_protocol = False - - # #### Start the simulation by specifying the network backend - - astra.run_simulation(NetworkBackend.NS3) - - # ##### Download all the configurations as a zip - - astra.download_configuration() - - # ##### Read output files - - import pandas as pd - import os - from common import FileFolderUtils - df = pd.read_csv(os.path.join(FileFolderUtils.get_instance().OUTPUT_DIR, "fct.csv")) - df.head() - - df = pd.read_csv(os.path.join(FileFolderUtils.get_instance().OUTPUT_DIR, "flow_stats.csv")) - df.head() - - # ##### Save infragraph as a yaml - - import yaml - import os - from common import FileFolderUtils - with open(os.path.join(FileFolderUtils.get_instance().OUTPUT_DIR,"../infrastructure","ns3_clos_fabric_2tier.yaml"),"w") as f: - data = infrastructure.serialize("dict") - yaml.dump(data, f, default_flow_style=False, indent=4) - - print("saved yaml to:", os.path.join(FileFolderUtils.get_instance().OUTPUT_DIR,"..","ns3_clos_fabric_2tier.yaml")) - - assert True - except Exception as e: - assert False, f'Unexpected exception: {e}' diff --git a/service/tests/test-notebook/test_ns3_clos_fabric_3tier.py b/service/tests/test-notebook/test_ns3_clos_fabric_3tier.py deleted file mode 100644 index 5a7fd93..0000000 --- a/service/tests/test-notebook/test_ns3_clos_fabric_3tier.py +++ /dev/null @@ -1,125 +0,0 @@ -def test_ns3_clos_fabric_3tier(port_number): - - try: - - # ##### Import the required modules and configure the system path to locate them - - import sys - sys.path.append("../client-scripts/utils") - sys.path.append("../../client-scripts/utils") - sys.path.append("./client-scripts/utils") - import networkx - import astra_sim_sdk.astra_sim_sdk as astra_sim_kit - from astra_sim import AstraSim, Collective, NetworkBackend - from infragraph.infragraph_service import InfraGraphService - from infragraph.blueprints.fabrics.clos_fat_tree_fabric import ClosFatTreeFabric - from infragraph.blueprints.devices.generic.server import Server - from infragraph.blueprints.devices.generic.generic_switch import Switch - - # ##### Call the AstraSim client helper with the server endpoint and tag to connect to the ASTRA-sim gRPC server, initialize the SDK, and create a tagged folder for configs, results, and logs - - astra = AstraSim(f"0.0.0.0:{port_number}", tag = "ns3_clos_fabric_3tier") - - # ##### Create a three-tier clos fabric using infragraph fabric blueprint - - server = Server() - switch = Switch(port_count=4) - infrastructure = ClosFatTreeFabric(switch, server, 3,[]) - astra.configuration.infragraph.infrastructure.deserialize(infrastructure.serialize()) - print(astra.configuration.infragraph.infrastructure) - - # ##### Initialize the Infragraph service, display the fabric topology, and retrieve/set the total number of NPUs to generate the collective - - service = InfraGraphService() - service.set_graph(infrastructure) - g = service.get_networkx_graph() - print(networkx.write_network_text(g, vertical_chains=True)) - total_npus = 16 - - # ##### Generate workload execution traces for each rank and set the required data size for AstraSim configuration - - astra.configuration.common_config.workload = astra.generate_collective(collective=Collective.ALLREDUCE, coll_size= 1 *1024*1024, npu_range=[0, total_npus]) - - # ##### Configure ASTRA-sim system config - - astra.configuration.common_config.system.scheduling_policy = astra.configuration.common_config.system.LIFO - astra.configuration.common_config.system.endpoint_delay = 10 - astra.configuration.common_config.system.active_chunks_per_dimension = 1 - astra.configuration.common_config.system.all_gather_implementation = [astra.configuration.common_config.system.RING] - astra.configuration.common_config.system.all_to_all_implementation = [astra.configuration.common_config.system.DIRECT] - astra.configuration.common_config.system.all_reduce_implementation = [astra.configuration.common_config.system.ONERING] - astra.configuration.common_config.system.collective_optimization = astra.configuration.common_config.system.LOCALBWAWARE - astra.configuration.common_config.system.local_mem_bw = 1600 - - # ##### Configure ASTRA-sim remote memory configuration - - astra.configuration.common_config.remote_memory.memory_type = astra.configuration.common_config.remote_memory.NO_MEMORY_EXPANSION - print(astra.configuration.common_config.remote_memory) - - # ##### Configure the selected network backend and the topology (infragraph or nc_topology) - - astra.configuration.network_backend.choice = astra.configuration.network_backend.NS3 - astra.configuration.network_backend.ns3.topology.choice = astra.configuration.network_backend.ns3.topology.INFRAGRAPH - astra.configuration.network_backend.ns3.network.packet_payload_size = int(8192) - - # ##### Adding ns3 trace and logical dimension - - astra.configuration.network_backend.ns3.logical_topology.logical_dimensions = [total_npus] - astra.configuration.network_backend.ns3.trace.trace_ids = [] - for i in range(0, total_npus): - astra.configuration.network_backend.ns3.trace.trace_ids.append(i) - - # ##### Adding ASTRA-sim - Infragraph specific annotation - - host_device_spec = astra_sim_kit.AnnotationDeviceSpecifications() - host_device_spec.device_bandwidth_gbps = 100 - host_device_spec.device_latency_ms = 0.05 - host_device_spec.device_name = "server" - host_device_spec.device_type = "host" - astra.configuration.infragraph.annotations.device_specifications.append(host_device_spec) - - switch_device_spec = astra_sim_kit.AnnotationDeviceSpecifications() - switch_device_spec.device_bandwidth_gbps = 100 - switch_device_spec.device_latency_ms = 0.05 - switch_device_spec.device_name = "switch" - switch_device_spec.device_type = "switch" - astra.configuration.infragraph.annotations.device_specifications.append( - switch_device_spec - ) - - # ##### Configure ASTRA-sim cmd parameters - - astra.configuration.common_config.cmd_parameters.comm_scale = 1 - astra.configuration.common_config.cmd_parameters.injection_scale = 1 - astra.configuration.common_config.cmd_parameters.rendezvous_protocol = False - - # #### Start the simulation by specifying the network backend - - astra.run_simulation(NetworkBackend.NS3) - - # ##### Download all the configurations as a zip - - astra.download_configuration() - - # ##### Read output files - - import pandas as pd - import os - from common import FileFolderUtils - df = pd.read_csv(os.path.join(FileFolderUtils.get_instance().OUTPUT_DIR, "fct.csv")) - df.head() - - # ##### Save infragraph as a yaml - - import yaml - import os - from common import FileFolderUtils - with open(os.path.join(FileFolderUtils.get_instance().OUTPUT_DIR,"../infrastructure","ns3_clos_fabric_3tier"),"w") as f: - data = infrastructure.serialize("dict") - yaml.dump(data, f, default_flow_style=False, indent=4) - - print("saved yaml to:", os.path.join(FileFolderUtils.get_instance().OUTPUT_DIR,"..","ns3_clos_fabric_3tier.yaml")) - - assert True - except Exception as e: - assert False, f'Unexpected exception: {e}' diff --git a/service/tests/test-notebook/test_ns3_sample.py b/service/tests/test-notebook/test_ns3_sample.py deleted file mode 100644 index bdcdbdd..0000000 --- a/service/tests/test-notebook/test_ns3_sample.py +++ /dev/null @@ -1,98 +0,0 @@ -def test_ns3_sample(port_number): - - try: - - # ##### Import the required modules and configure the system path to locate them - - import sys - sys.path.append("../client-scripts/utils") - sys.path.append("../../client-scripts/utils") - sys.path.append("./client-scripts/utils") - from astra_sim import AstraSim, Collective, NetworkBackend - - # ##### Call the AstraSim client helper with the server endpoint and tag to connect to the ASTRA-sim gRPC server, initialize the SDK, and create a tagged folder for configs, results, and logs. - - astra = AstraSim(f"0.0.0.0:{port_number}", tag="ns3_sample") - - # ##### Generate workload execution traces for each rank and set the required data size for AstraSim configuration - - astra.configuration.common_config.workload = astra.generate_collective(collective=Collective.ALLREDUCE, coll_size= 8 *1024*1024, npu_range=[0,8]) - print(astra.configuration.common_config.workload) - - # ##### Configure ASTRA-sim system config - - astra.configuration.common_config.system.scheduling_policy = astra.configuration.common_config.system.LIFO - astra.configuration.common_config.system.endpoint_delay = 10 - astra.configuration.common_config.system.active_chunks_per_dimension = 1 - astra.configuration.common_config.system.all_gather_implementation = [astra.configuration.common_config.system.RING] - astra.configuration.common_config.system.all_to_all_implementation = [astra.configuration.common_config.system.DIRECT] - astra.configuration.common_config.system.all_reduce_implementation = [astra.configuration.common_config.system.ONERING] - astra.configuration.common_config.system.collective_optimization = astra.configuration.common_config.system.LOCALBWAWARE - astra.configuration.common_config.system.local_mem_bw = 1600 - print(astra.configuration.common_config.system) - - # ##### Configure ASTRA-sim remote memory configuration - - astra.configuration.common_config.remote_memory.memory_type = astra.configuration.common_config.remote_memory.NO_MEMORY_EXPANSION - print(astra.configuration.common_config.remote_memory) - - # ##### Configure the network backend - - # astra.configuration.network_backend.choice = astra.configuration.network_backend.NS3 - astra.configuration.network_backend.ns3.network.packet_payload_size = int(8192) - astra.configuration.network_backend.ns3.logical_topology.logical_dimensions = [8] - astra.configuration.network_backend.ns3.trace.trace_ids = [0, 1, 2, 3,4 ,5 ,6, 7] - print("network backend choice set to:",astra.configuration.network_backend.ns3.topology.choice) - print(astra.configuration.network_backend.ns3.network.packet_payload_size) - print(astra.configuration.network_backend.ns3.logical_topology) - print(astra.configuration.network_backend.ns3.trace) - - # ##### Set up the network topology - - # astra.configuration.network_backend.ns3.topology.choice = astra.configuration.network_backend.ns3.topology.NC_TOPOLOGY - # the topology configuration will be set automatically if we configure the nc_topology - astra.configuration.network_backend.ns3.topology.nc_topology.total_nodes = 9 - astra.configuration.network_backend.ns3.topology.nc_topology.total_switches = 1 - astra.configuration.network_backend.ns3.topology.nc_topology.total_links = 8 - astra.configuration.network_backend.ns3.topology.nc_topology.switch_ids = [8] - astra.configuration.network_backend.ns3.topology.nc_topology.connections.clear() - astra.configuration.network_backend.ns3.topology.nc_topology.connections.add(0, 8, "100Gbps", "0.005ms", "0") - astra.configuration.network_backend.ns3.topology.nc_topology.connections.add(1, 8, "100Gbps", "0.005ms", "0") - astra.configuration.network_backend.ns3.topology.nc_topology.connections.add(2, 8, "100Gbps", "0.005ms", "0") - astra.configuration.network_backend.ns3.topology.nc_topology.connections.add(3, 8, "100Gbps", "0.005ms", "0") - astra.configuration.network_backend.ns3.topology.nc_topology.connections.add(4, 8, "100Gbps", "0.005ms", "0") - astra.configuration.network_backend.ns3.topology.nc_topology.connections.add(5, 8, "100Gbps", "0.005ms", "0") - astra.configuration.network_backend.ns3.topology.nc_topology.connections.add(6, 8, "100Gbps", "0.005ms", "0") - astra.configuration.network_backend.ns3.topology.nc_topology.connections.add(7, 8, "100Gbps", "0.005ms", "0") - print(astra.configuration.network_backend.ns3.topology.choice) - print(astra.configuration.network_backend.ns3.topology.nc_topology) - - # ##### Configure ASTRA-sim cmd parameters - - astra.configuration.common_config.cmd_parameters.comm_scale = 1 - astra.configuration.common_config.cmd_parameters.injection_scale = 1 - astra.configuration.common_config.cmd_parameters.rendezvous_protocol = False - - print(astra.configuration.common_config.cmd_parameters) - - # #### Start the simulation by specifying the network backend - - astra.run_simulation(NetworkBackend.NS3) - - # ##### Download all the configurations as a zip - - astra.download_configuration() - - # ##### Read output files - - import pandas as pd - import os - from common import FileFolderUtils - df = pd.read_csv(os.path.join(FileFolderUtils.get_instance().OUTPUT_DIR, "fct.csv")) - df.head() - df = pd.read_csv(os.path.join(FileFolderUtils.get_instance().OUTPUT_DIR, "flow_stats.csv")) - df.head() - - assert True - except Exception as e: - assert False, f'Unexpected exception: {e}' diff --git a/service/tests/test-notebook/test_ns3_single_dgx_device.py b/service/tests/test-notebook/test_ns3_single_dgx_device.py deleted file mode 100644 index 7e9dbf7..0000000 --- a/service/tests/test-notebook/test_ns3_single_dgx_device.py +++ /dev/null @@ -1,121 +0,0 @@ -def test_ns3_single_dgx_device(port_number): - - try: - - # ##### Import the required modules and configure the system path to locate them - - import sys - sys.path.append("../client-scripts/utils") - sys.path.append("../../client-scripts/utils") - sys.path.append("./client-scripts/utils") - import networkx - import astra_sim_sdk.astra_sim_sdk as astra_sim_kit - from astra_sim import AstraSim, Collective, NetworkBackend - from infragraph.infragraph_service import InfraGraphService - from infragraph.blueprints.devices.nvidia.dgx import NvidiaDGX, DgxProfile - from infragraph import Infrastructure - - # ##### Call the AstraSim client helper with the server endpoint and tag to connect to the ASTRA-sim gRPC server, initialize the SDK, and create a tagged folder for configs, results, and logs - - astra = AstraSim(f"0.0.0.0:{port_number}", tag = "ns3_single_dgx") - - # ##### Get all available DGX variants - - from typing import get_args - print(get_args(DgxProfile)) - - # ##### Create a Nvidia DGX device fabric using infragraph device blueprint - - server = NvidiaDGX("dgx_h100") - infrastructure = Infrastructure() - infrastructure.devices.append(server) - infrastructure.instances.add(name=server.name, device=server.name, count=1) - astra.configuration.infragraph.infrastructure.deserialize(infrastructure.serialize()) - print(astra.configuration.infragraph.infrastructure) - - # ##### Initialize the Infragraph service, display the fabric topology, and retrieve/set the total number of NPUs to generate the collective - - service = InfraGraphService() - service.set_graph(infrastructure) - total_npus = service.get_component(device=server, type="xpu").count - g = service.get_networkx_graph() - print(networkx.write_network_text(g, vertical_chains=True)) - - # ##### Generate workload execution traces for each rank and set the required data size for AstraSim configuration - - astra.configuration.common_config.workload = astra.generate_collective(collective=Collective.ALLREDUCE, coll_size= 1 *1024*1024, npu_range=[0, total_npus]) - - # ##### Configure ASTRA-sim system config - - astra.configuration.common_config.system.scheduling_policy = astra.configuration.common_config.system.LIFO - astra.configuration.common_config.system.endpoint_delay = 10 - astra.configuration.common_config.system.active_chunks_per_dimension = 1 - astra.configuration.common_config.system.all_gather_implementation = [astra.configuration.common_config.system.RING] - astra.configuration.common_config.system.all_to_all_implementation = [astra.configuration.common_config.system.DIRECT] - astra.configuration.common_config.system.all_reduce_implementation = [astra.configuration.common_config.system.ONERING] - astra.configuration.common_config.system.collective_optimization = astra.configuration.common_config.system.LOCALBWAWARE - astra.configuration.common_config.system.local_mem_bw = 1600 - - # ##### Configure ASTRA-sim remote memory configuration - - astra.configuration.common_config.remote_memory.memory_type = astra.configuration.common_config.remote_memory.NO_MEMORY_EXPANSION - print(astra.configuration.common_config.remote_memory) - - # ##### Configure the selected network backend and the topology (infragraph or nc_topology) - - astra.configuration.network_backend.choice = astra.configuration.network_backend.NS3 - astra.configuration.network_backend.ns3.topology.choice = astra.configuration.network_backend.ns3.topology.INFRAGRAPH - astra.configuration.network_backend.ns3.network.packet_payload_size = int(8192) - - # ##### Adding ns3 trace and logical dimension - - astra.configuration.network_backend.ns3.logical_topology.logical_dimensions = [total_npus] - astra.configuration.network_backend.ns3.trace.trace_ids = [] - for i in range(0, total_npus): - astra.configuration.network_backend.ns3.trace.trace_ids.append(i) - - # ##### Adding ASTRA-sim - Infragraph specific annotation for Nvidia DGX - - host_device_spec = astra_sim_kit.AnnotationDeviceSpecifications() - host_device_spec.device_bandwidth_gbps = 100 - host_device_spec.device_latency_ms = 0.05 - host_device_spec.device_name = server.name - host_device_spec.device_type = "host" - astra.configuration.infragraph.annotations.device_specifications.append(host_device_spec) - - # ##### Configure ASTRA-sim cmd parameters - - astra.configuration.common_config.cmd_parameters.comm_scale = 1 - astra.configuration.common_config.cmd_parameters.injection_scale = 1 - astra.configuration.common_config.cmd_parameters.rendezvous_protocol = False - - # #### Start the simulation by specifying the network backend - - astra.run_simulation(NetworkBackend.NS3) - - # ##### Download all the configurations as a zip - - astra.download_configuration() - - # ##### Read output files - - import pandas as pd - import os - from common import FileFolderUtils - df = pd.read_csv(os.path.join(FileFolderUtils.get_instance().OUTPUT_DIR, "fct.csv")) - df.head() - - # ##### Save infragraph as a yaml - - import yaml - import os - from common import FileFolderUtils - with open(os.path.join(FileFolderUtils.get_instance().OUTPUT_DIR,"../infrastructure","ns3_single_dgx"),"w") as f: - data = infrastructure.serialize("dict") - yaml.dump(data, f, default_flow_style=False, indent=4) - - print("saved yaml to:", os.path.join(FileFolderUtils.get_instance().OUTPUT_DIR,"..","ns3_single_dgx.yaml")) - - assert True - except Exception as e: - assert False, f'Unexpected exception: {e}' diff --git a/service/tests/test-notebook/test_ns3_single_ironwood_device.py b/service/tests/test-notebook/test_ns3_single_ironwood_device.py deleted file mode 100644 index c298204..0000000 --- a/service/tests/test-notebook/test_ns3_single_ironwood_device.py +++ /dev/null @@ -1,117 +0,0 @@ -def test_ns3_single_ironwood_device(port_number): - - try: - - # ##### Import the required modules and configure the system path to locate them - - import sys - sys.path.append("../client-scripts/utils") - sys.path.append("../../client-scripts/utils") - sys.path.append("./client-scripts/utils") - import networkx - import astra_sim_sdk.astra_sim_sdk as astra_sim_kit - from astra_sim import AstraSim, Collective, NetworkBackend - from infragraph.infragraph_service import InfraGraphService - from infragraph.blueprints.devices.ironwood_rack import IronwoodRack - from infragraph import Infrastructure - - # ##### Call the AstraSim client helper with the server endpoint and tag to connect to the ASTRA-sim gRPC server, initialize the SDK, and create a tagged folder for configs, results, and logs - - astra = AstraSim(f"0.0.0.0:{port_number}", tag = "ns3_single_ironwood") - - # ##### Create a ironwood rack device fabric using infragraph device blueprint - - server = IronwoodRack() - infrastructure = Infrastructure() - infrastructure.devices.append(server) - infrastructure.instances.add(name=server.name, device=server.name, count=1) - astra.configuration.infragraph.infrastructure.deserialize(infrastructure.serialize()) - print(astra.configuration.infragraph.infrastructure) - - # ##### Initialize the Infragraph service, display the fabric topology, and retrieve/set the total number of NPUs to generate the collective - - service = InfraGraphService() - service.set_graph(infrastructure) - g = service.get_networkx_graph() - print(networkx.write_network_text(g, vertical_chains=True)) - total_npus = service.get_component(server, "xpu").count - print(total_npus) - - # ##### Generate workload execution traces for each rank and set the required data size for AstraSim configuration - - astra.configuration.common_config.workload = astra.generate_collective(collective=Collective.ALLREDUCE, coll_size= 1 *1024*1024, npu_range=[0, total_npus]) - - # ##### Configure ASTRA-sim system config - - astra.configuration.common_config.system.scheduling_policy = astra.configuration.common_config.system.LIFO - astra.configuration.common_config.system.endpoint_delay = 10 - astra.configuration.common_config.system.active_chunks_per_dimension = 1 - astra.configuration.common_config.system.all_gather_implementation = [astra.configuration.common_config.system.RING, astra.configuration.common_config.system.RING, astra.configuration.common_config.system.RING] - astra.configuration.common_config.system.all_to_all_implementation = [astra.configuration.common_config.system.RING, astra.configuration.common_config.system.RING, astra.configuration.common_config.system.RING] - astra.configuration.common_config.system.all_reduce_implementation = [astra.configuration.common_config.system.RING, astra.configuration.common_config.system.RING, astra.configuration.common_config.system.RING] - astra.configuration.common_config.system.collective_optimization = astra.configuration.common_config.system.LOCALBWAWARE - astra.configuration.common_config.system.local_mem_bw = 1600 - - # ##### Configure ASTRA-sim remote memory configuration - - astra.configuration.common_config.remote_memory.memory_type = astra.configuration.common_config.remote_memory.NO_MEMORY_EXPANSION - print(astra.configuration.common_config.remote_memory) - - # ##### Configure the selected network backend and the topology (infragraph or nc_topology) - - astra.configuration.network_backend.choice = astra.configuration.network_backend.NS3 - astra.configuration.network_backend.ns3.topology.choice = astra.configuration.network_backend.ns3.topology.INFRAGRAPH - astra.configuration.network_backend.ns3.network.packet_payload_size = int(8192) - - # ##### Adding ns3 trace and logical dimension - - astra.configuration.network_backend.ns3.logical_topology.logical_dimensions = [4, 4, 4] - astra.configuration.network_backend.ns3.trace.trace_ids = [] - for i in range(0, total_npus): - astra.configuration.network_backend.ns3.trace.trace_ids.append(i) - - # ##### Adding ASTRA-sim - Infragraph specific annotation - - host_device_spec = astra_sim_kit.AnnotationDeviceSpecifications() - host_device_spec.device_bandwidth_gbps = 100 - host_device_spec.device_latency_ms = 0.05 - host_device_spec.device_name = server.name - host_device_spec.device_type = "host" - astra.configuration.infragraph.annotations.device_specifications.append(host_device_spec) - - # ##### Configure ASTRA-sim cmd parameters - - astra.configuration.common_config.cmd_parameters.comm_scale = 1 - astra.configuration.common_config.cmd_parameters.injection_scale = 1 - astra.configuration.common_config.cmd_parameters.rendezvous_protocol = False - - # #### Start the simulation by specifying the network backend - - astra.run_simulation(NetworkBackend.NS3) - - # ##### Download all the configurations as a zip - - astra.download_configuration() - - # ##### Read output files - - import pandas as pd - import os - from common import FileFolderUtils - df = pd.read_csv(os.path.join(FileFolderUtils.get_instance().OUTPUT_DIR, "fct.csv")) - df.head() - - # ##### Save infragraph as a yaml - - import yaml - import os - from common import FileFolderUtils - with open(os.path.join(FileFolderUtils.get_instance().OUTPUT_DIR,"../infrastructure","ns3_single_ironwood"),"w") as f: - data = infrastructure.serialize("dict") - yaml.dump(data, f, default_flow_style=False, indent=4) - - print("saved yaml to:", os.path.join(FileFolderUtils.get_instance().OUTPUT_DIR,"..","ns3_single_ironwood.yaml")) - - assert True - except Exception as e: - assert False, f'Unexpected exception: {e}' diff --git a/service/tests/test-notebook/test_ns3_single_tier_with_dgx.py b/service/tests/test-notebook/test_ns3_single_tier_with_dgx.py deleted file mode 100644 index 7509ca2..0000000 --- a/service/tests/test-notebook/test_ns3_single_tier_with_dgx.py +++ /dev/null @@ -1,126 +0,0 @@ -def test_ns3_single_tier_with_dgx(port_number): - - try: - - # ##### Import the required modules and configure the system path to locate them - - import sys - sys.path.append("../client-scripts/utils") - sys.path.append("../../client-scripts/utils") - sys.path.append("./client-scripts/utils") - from astra_sim import AstraSim, Collective, NetworkBackend - from infragraph.blueprints.devices.nvidia.dgx import NvidiaDGX - from infragraph.blueprints.fabrics.single_tier_fabric import SingleTierFabric - import networkx - from infragraph.infragraph_service import InfraGraphService - import astra_sim_sdk.astra_sim_sdk as astra_sim_kit - - # ##### Call the AstraSim client helper with the server endpoint and tag to connect to the ASTRA-sim gRPC server, initialize the SDK, and create a tagged folder for configs, results, and logs - - astra = AstraSim(f"0.0.0.0:{port_number}", tag = "ns3_single_tier_with_dgx") - - # ##### Create a single tier rack device with two Nvidia DGX and a single switch using infragraph device, fabric blueprint - - dgx_count = 2 - server = NvidiaDGX() - infrastructure = SingleTierFabric(server, dgx_count) - astra.configuration.infragraph.infrastructure.deserialize(infrastructure.serialize()) - - # ##### Initialize the Infragraph service, display the fabric topology, and retrieve/set the total number of NPUs to generate the collective - - service = InfraGraphService() - service.set_graph(infrastructure) - - g = service.get_networkx_graph() - print(networkx.write_network_text(g, vertical_chains=True)) - - total_npus = service.get_component(server, "xpu").count * dgx_count - print(total_npus) - - # ##### Generate workload execution traces for each rank and set the required data size for AstraSim configuration - - astra.configuration.common_config.workload = astra.generate_collective(collective=Collective.ALLREDUCE, coll_size= 8 *1024*1024, npu_range=[0, total_npus]) - - # ##### Configure ASTRA-sim system config - - astra.configuration.common_config.system.scheduling_policy = astra.configuration.common_config.system.LIFO - astra.configuration.common_config.system.endpoint_delay = 10 - astra.configuration.common_config.system.active_chunks_per_dimension = 1 - astra.configuration.common_config.system.all_gather_implementation = [astra.configuration.common_config.system.RING] - astra.configuration.common_config.system.all_to_all_implementation = [astra.configuration.common_config.system.DIRECT] - astra.configuration.common_config.system.all_reduce_implementation = [astra.configuration.common_config.system.ONERING] - astra.configuration.common_config.system.collective_optimization = astra.configuration.common_config.system.LOCALBWAWARE - astra.configuration.common_config.system.local_mem_bw = 1600 - - # ##### Configure ASTRA-sim remote memory configuration - - astra.configuration.common_config.remote_memory.memory_type = astra.configuration.common_config.remote_memory.NO_MEMORY_EXPANSION - print(astra.configuration.common_config.remote_memory) - - # ##### Configure the selected network backend and the topology (infragraph or nc_topology) - - astra.configuration.network_backend.choice = astra.configuration.network_backend.NS3 - astra.configuration.network_backend.ns3.topology.choice = astra.configuration.network_backend.ns3.topology.INFRAGRAPH - astra.configuration.network_backend.ns3.network.packet_payload_size = int(8192) - - # ##### Adding ns3 trace and logical dimension - - astra.configuration.network_backend.ns3.logical_topology.logical_dimensions = [total_npus] - astra.configuration.network_backend.ns3.trace.trace_ids = [] - for i in range(0, total_npus): - astra.configuration.network_backend.ns3.trace.trace_ids.append(i) - - # ##### Adding ASTRA-sim - Infragraph specific annotation - - host_device_spec = astra_sim_kit.AnnotationDeviceSpecifications() - host_device_spec.device_bandwidth_gbps = 100 - host_device_spec.device_latency_ms = 0.05 - host_device_spec.device_name = server.name - host_device_spec.device_type = "host" - astra.configuration.infragraph.annotations.device_specifications.append(host_device_spec) - - switch_device_spec = astra_sim_kit.AnnotationDeviceSpecifications() - switch_device_spec.device_bandwidth_gbps = 100 - switch_device_spec.device_latency_ms = 0.05 - switch_device_spec.device_name = "switch" - switch_device_spec.device_type = "switch" - astra.configuration.infragraph.annotations.device_specifications.append( - switch_device_spec - ) - - # ##### Configure ASTRA-sim cmd parameters - - astra.configuration.common_config.cmd_parameters.comm_scale = 1 - astra.configuration.common_config.cmd_parameters.injection_scale = 1 - astra.configuration.common_config.cmd_parameters.rendezvous_protocol = False - - # #### Start the simulation by specifying the network backend - - astra.run_simulation(NetworkBackend.NS3) - - # ##### Download all the configurations as a zip - - astra.download_configuration() - - # ##### Read output files - - import pandas as pd - import os - from common import FileFolderUtils - df = pd.read_csv(os.path.join(FileFolderUtils.get_instance().OUTPUT_DIR, "fct.csv")) - df.head() - - # ##### Save infragraph as a yaml - - import yaml - import os - from common import FileFolderUtils - with open(os.path.join(FileFolderUtils.get_instance().OUTPUT_DIR,"../infrastructure","ns3_single_tier_with_dgx"),"w") as f: - data = infrastructure.serialize("dict") - yaml.dump(data, f, default_flow_style=False, indent=4) - - print("saved yaml to:", os.path.join(FileFolderUtils.get_instance().OUTPUT_DIR,"..","ns3_single_tier_with_dgx.yaml")) - - assert True - except Exception as e: - assert False, f'Unexpected exception: {e}' diff --git a/service/tests/test-notebook/test_ns3_single_tier_with_generic_server.py b/service/tests/test-notebook/test_ns3_single_tier_with_generic_server.py deleted file mode 100644 index 932cf1d..0000000 --- a/service/tests/test-notebook/test_ns3_single_tier_with_generic_server.py +++ /dev/null @@ -1,157 +0,0 @@ -def test_ns3_single_tier_with_generic_server(port_number): - - try: - - # ##### Import the required modules and configure the system path to locate them - - import sys - sys.path.append("../client-scripts/utils") - sys.path.append("../../client-scripts/utils") - sys.path.append("./client-scripts/utils") - from astra_sim import AstraSim, Collective, NetworkBackend - from astra_sim_sdk import Device, Component - from infragraph import Component, InfrastructureEdge - from infragraph.infragraph_service import InfraGraphService - from infragraph.blueprints.devices.generic.server import Server - from infragraph.blueprints.devices.generic.generic_switch import Switch - import astra_sim_sdk.astra_sim_sdk as astra_sim_kit - - # ##### Call the AstraSim client helper with the server endpoint and tag to connect to the ASTRA-sim gRPC server, initialize the SDK, and create a tagged folder for configs, results, and logs - - astra = AstraSim(f"0.0.0.0:{port_number}", tag = "ns3_single_tier_with_generic_server") - - # ##### Generate workload execution traces for each rank and set the required data size for AstraSim configuration - - astra.configuration.common_config.workload = astra.generate_collective(collective=Collective.ALLREDUCE, coll_size= 8 *1024*1024, npu_range=[0,8]) - print(astra.configuration.common_config.workload) - - # ##### Configure the ASTRA-sim system config - - astra.configuration.common_config.system.scheduling_policy = astra.configuration.common_config.system.LIFO - astra.configuration.common_config.system.endpoint_delay = 10 - astra.configuration.common_config.system.active_chunks_per_dimension = 1 - astra.configuration.common_config.system.all_gather_implementation = [astra.configuration.common_config.system.RING] - astra.configuration.common_config.system.all_to_all_implementation = [astra.configuration.common_config.system.DIRECT] - astra.configuration.common_config.system.all_reduce_implementation = [astra.configuration.common_config.system.ONERING] - astra.configuration.common_config.system.collective_optimization = astra.configuration.common_config.system.LOCALBWAWARE - astra.configuration.common_config.system.local_mem_bw = 1600 - print(astra.configuration.common_config.system) - - # ##### Configure ASTRA-sim remote memory configuration - - astra.configuration.common_config.remote_memory.memory_type = astra.configuration.common_config.remote_memory.NO_MEMORY_EXPANSION - print(astra.configuration.common_config.remote_memory) - - # ##### Configure the selected network backend and the topology (infragraph or nc_topology) - - # We need to configure the network backend here since we are translating the topology from infragraph and not creating it directly from the sdk. - astra.configuration.network_backend.choice = astra.configuration.network_backend.NS3 - astra.configuration.network_backend.ns3.topology.choice = astra.configuration.network_backend.ns3.topology.INFRAGRAPH - astra.configuration.network_backend.ns3.network.packet_payload_size = int(8192) - astra.configuration.network_backend.ns3.logical_topology.logical_dimensions = [8] - astra.configuration.network_backend.ns3.trace.trace_ids = [0, 1, 2, 3, 4, 5, 6, 7] - - # ##### Creating Infrastructure with four host and one rack Device - - astra.configuration.infragraph.infrastructure.name = "1host-4ranks" - - server = Device() - server.deserialize((Server(npu_factor=1).serialize())) - - hosts = astra.configuration.infragraph.infrastructure.instances.add( - name="host", device=server.name, count=4 - ) - switch = Device() - switch.deserialize(Switch(port_count=16).serialize()) - - rack_switch = astra.configuration.infragraph.infrastructure.instances.add( - name="rack_switch", device=switch.name, count=1 - ) - - astra.configuration.infragraph.infrastructure.devices.append(server).append(switch) - - # ##### Creating Links - - rack_link = astra.configuration.infragraph.infrastructure.links.add( - name="rack-link", - description="Link characteristics for connectivity between servers and rack switch", - ) - rack_link.physical.bandwidth.gigabits_per_second = 200 - - # ##### Adding edges and annotations - - host_component = InfraGraphService.get_component(server, Component.NIC) - switch_component = InfraGraphService.get_component(switch, Component.PORT) - # link each host to one leaf switch - for idx in range(hosts.count): - edge = astra.configuration.infragraph.infrastructure.edges.add( - scheme=InfrastructureEdge.ONE2ONE, link=rack_link.name - ) - edge.ep1.instance = f"{hosts.name}[{idx}]" - edge.ep1.component = f"{host_component.name}[0]" - edge.ep2.instance = f"{rack_switch.name}[0]" - edge.ep2.component = f"{switch_component.name}[{idx * 2}]" - edge = astra.configuration.infragraph.infrastructure.edges.add( - scheme=InfrastructureEdge.ONE2ONE, link=rack_link.name - ) - edge.ep1.instance = f"{hosts.name}[{idx}]" - edge.ep1.component = f"{host_component.name}[1]" - edge.ep2.instance = f"{rack_switch.name}[0]" - edge.ep2.component = f"{switch_component.name}[{idx * 2 + 1}]" - - # annotation - host_device_spec = astra_sim_kit.AnnotationDeviceSpecifications() - host_device_spec.device_bandwidth_gbps = 200 - host_device_spec.device_latency_ms = 0.05 - host_device_spec.device_name = "server" - host_device_spec.device_type = "host" - astra.configuration.infragraph.annotations.device_specifications.append(host_device_spec) - - switch_device_spec = astra_sim_kit.AnnotationDeviceSpecifications() - switch_device_spec.device_bandwidth_gbps = 200 - switch_device_spec.device_latency_ms = 0.05 - switch_device_spec.device_name = "switch" - switch_device_spec.device_type = "switch" - astra.configuration.infragraph.annotations.device_specifications.append( - switch_device_spec - ) - - # ##### Configure ASTRA-sim cmd parameters - - astra.configuration.common_config.cmd_parameters.comm_scale = 1 - astra.configuration.common_config.cmd_parameters.injection_scale = 1 - astra.configuration.common_config.cmd_parameters.rendezvous_protocol = False - - # #### Start the simulation by specifying the network backend - - astra.run_simulation(NetworkBackend.NS3) - - # ##### Download all the configurations as a zip - - astra.download_configuration() - - # ##### Read output files - - import pandas as pd - import os - from common import FileFolderUtils - df = pd.read_csv(os.path.join(FileFolderUtils.get_instance().OUTPUT_DIR, "fct.csv")) - df.head() - - df = pd.read_csv(os.path.join(FileFolderUtils.get_instance().OUTPUT_DIR, "flow_stats.csv")) - df.head() - - # ##### Save infragraph as a yaml - - import yaml - import os - from common import FileFolderUtils - with open(os.path.join(FileFolderUtils.get_instance().OUTPUT_DIR,"../infrastructure","ns3_single_tier_with_dgx"),"w") as f: - data = astra.configuration.infragraph.infrastructure.serialize("dict") - yaml.dump(data, f, default_flow_style=False, indent=4) - - print("saved yaml to:", os.path.join(FileFolderUtils.get_instance().OUTPUT_DIR,"..","ns3_single_tier_with_dgx.yaml")) - - assert True - except Exception as e: - assert False, f'Unexpected exception: {e}' From b6817aaafef0485cedb1ee3aed5f1c279cacc3fa Mon Sep 17 00:00:00 2001 From: amosrai0 Date: Mon, 13 Apr 2026 07:11:20 +0000 Subject: [PATCH 2/6] fixing tests --- service/Makefile | 4 ---- 1 file changed, 4 deletions(-) diff --git a/service/Makefile b/service/Makefile index 20705d3..b5ae915 100644 --- a/service/Makefile +++ b/service/Makefile @@ -5,7 +5,6 @@ BRANCH ?= $(shell git rev-parse --abbrev-ref HEAD) PACKAGE_NAME := astra_server ASTRA_SIM_SERVICE_IMAGE := astra_sim_service GENERATED_VERSION := $(shell cat ../.VERSION) -NOTEBOOK_DIR := ../client-scripts/notebooks export PATH:=$(PY_PATHS):$(PATH) help: @@ -60,11 +59,8 @@ version: ## Generate build version .PHONY: pre-test pre-test: rm -rf tests/test-notebook - find $(NOTEBOOK_DIR) -name "*.py" -exec jupytext --to notebook {} \; python3 convert_nb_to_script.py cp -r ../client-scripts/resources tests - rm -f $(NOTEBOOK_DIR)/*.ipynb - rm -f $(NOTEBOOK_DIR)/infragraph/*.ipynb .PHONY: post-test post-test: From c1d49afd4fd30f5afc9ce79906a32479135662a9 Mon Sep 17 00:00:00 2001 From: amosrai0 Date: Tue, 14 Apr 2026 09:11:24 +0000 Subject: [PATCH 3/6] added visualizer to notebook and bug fixes --- Dockerfile.devenv | 1 + .../infragraph/analytical_dgx_device.ipynb | 460 +- .../infragraph/analytical_ironwood_rack.ipynb | 93 +- .../infragraph/htsim_clos_fabric_2tier.ipynb | 91 +- .../infragraph/htsim_clos_fabric_3tier.ipynb | 5553 +---------------- .../infragraph/ns3_clos_fabric_2tier.ipynb | 101 +- .../infragraph/ns3_clos_fabric_3tier.ipynb | 101 +- .../infragraph/ns3_single_dgx_device.ipynb | 616 +- .../ns3_single_ironwood_device.ipynb | 2347 +------ .../infragraph/ns3_single_tier_with_dgx.ipynb | 520 +- .../ns3_single_tier_with_generic_server.ipynb | 419 +- client-scripts/utils/common.py | 4 +- service/convert_nb_to_script.py | 6 +- 13 files changed, 841 insertions(+), 9471 deletions(-) diff --git a/Dockerfile.devenv b/Dockerfile.devenv index cdbff7a..cca15bb 100644 --- a/Dockerfile.devenv +++ b/Dockerfile.devenv @@ -14,6 +14,7 @@ RUN apt-get update && apt-get install -y \ g++-11 \ make \ cmake \ + lsof \ clang-format \ libboost-dev \ libboost-program-options-dev \ diff --git a/client-scripts/notebooks/infragraph/analytical_dgx_device.ipynb b/client-scripts/notebooks/infragraph/analytical_dgx_device.ipynb index 5438f93..12c7a39 100644 --- a/client-scripts/notebooks/infragraph/analytical_dgx_device.ipynb +++ b/client-scripts/notebooks/infragraph/analytical_dgx_device.ipynb @@ -10,7 +10,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": null, "id": "7c7bf2c9", "metadata": {}, "outputs": [], @@ -20,8 +20,10 @@ "import networkx\n", "import yaml\n", "import os\n", + "import subprocess\n", "import astra_sim_sdk.astra_sim_sdk as astra_sim_kit\n", "from common import FileFolderUtils\n", + "from IPython.display import IFrame\n", "from astra_sim import AstraSim, Collective, NetworkBackend\n", "from infragraph.infragraph_service import InfraGraphService\n", "from infragraph.blueprints.devices.nvidia.dgx import NvidiaDGX, DgxProfile\n", @@ -39,18 +41,10 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": null, "id": "c4ff237b", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Successfully connected to gRPC server at 172.17.0.2:8989\n" - ] - } - ], + "outputs": [], "source": [ "astra = AstraSim(server_endpoint = \"172.17.0.2:8989\", tag = \"analytical_dgx_device\")" ] @@ -65,18 +59,10 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": null, "id": "dccce3c9", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "('dgx1', 'dgx2', 'dgx_a100', 'dgx_h100', 'dgx_gb200')\n" - ] - } - ], + "outputs": [], "source": [ "from typing import get_args\n", "print(get_args(DgxProfile))" @@ -92,204 +78,10 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": null, "id": "8a0b157d", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "devices:\n", - "- components:\n", - " - choice: cpu\n", - " count: 2\n", - " description: AMD EPYC 9654 (Genoa)\n", - " name: cpu\n", - " - choice: xpu\n", - " count: 8\n", - " description: NVIDIA H100 / H200 SXM5\n", - " name: xpu\n", - " - choice: switch\n", - " count: 4\n", - " description: NVIDIA NVSwitch\n", - " name: nvsw\n", - " - choice: switch\n", - " count: 3\n", - " description: Broadcom PCIe Gen5 Switch\n", - " name: pciesw\n", - " - choice: custom\n", - " count: 8\n", - " custom:\n", - " type: pcie_slot\n", - " description: PCIe Gen5 x16 slots (ConnectX / BlueField)\n", - " name: pciesl\n", - " - choice: nic\n", - " count: 8\n", - " description: NVIDIA ConnectX / BlueField\n", - " name: cx7\n", - " description: NVIDIA DGX System\n", - " edges:\n", - " - ep1:\n", - " component: cpu\n", - " ep2:\n", - " component: cpu\n", - " link: cpu_fabric\n", - " scheme: many2many\n", - " - ep1:\n", - " component: cpu[0]\n", - " ep2:\n", - " component: pciesl[0:3]\n", - " link: pcie\n", - " scheme: many2many\n", - " - ep1:\n", - " component: cpu[1]\n", - " ep2:\n", - " component: pciesl[4:7]\n", - " link: pcie\n", - " scheme: many2many\n", - " - ep1:\n", - " component: cpu[0]\n", - " ep2:\n", - " component: pciesw[0]\n", - " link: pcie\n", - " scheme: one2one\n", - " - ep1:\n", - " component: cpu[1]\n", - " ep2:\n", - " component: pciesw[1]\n", - " link: pcie\n", - " scheme: one2one\n", - " - ep1:\n", - " component: pciesl[0]\n", - " ep2:\n", - " component: xpu[0]\n", - " link: pcie\n", - " scheme: one2one\n", - " - ep1:\n", - " component: pciesl[1]\n", - " ep2:\n", - " component: xpu[1]\n", - " link: pcie\n", - " scheme: one2one\n", - " - ep1:\n", - " component: pciesl[2]\n", - " ep2:\n", - " component: xpu[2]\n", - " link: pcie\n", - " scheme: one2one\n", - " - ep1:\n", - " component: pciesl[3]\n", - " ep2:\n", - " component: xpu[3]\n", - " link: pcie\n", - " scheme: one2one\n", - " - ep1:\n", - " component: pciesl[4]\n", - " ep2:\n", - " component: xpu[4]\n", - " link: pcie\n", - " scheme: one2one\n", - " - ep1:\n", - " component: pciesl[5]\n", - " ep2:\n", - " component: xpu[5]\n", - " link: pcie\n", - " scheme: one2one\n", - " - ep1:\n", - " component: pciesl[6]\n", - " ep2:\n", - " component: xpu[6]\n", - " link: pcie\n", - " scheme: one2one\n", - " - ep1:\n", - " component: pciesl[7]\n", - " ep2:\n", - " component: xpu[7]\n", - " link: pcie\n", - " scheme: one2one\n", - " - ep1:\n", - " component: nvsw[0:4]\n", - " ep2:\n", - " component: pciesw[2]\n", - " link: pcie\n", - " scheme: many2many\n", - " - ep1:\n", - " component: cpu[0]\n", - " ep2:\n", - " component: pciesw[2]\n", - " link: pcie\n", - " scheme: one2one\n", - " - ep1:\n", - " component: nvsw[0:4]\n", - " ep2:\n", - " component: xpu[0:8]\n", - " link: xpu_fabric\n", - " scheme: many2many\n", - " - ep1:\n", - " component: pciesl[0]\n", - " ep2:\n", - " component: cx7[0]\n", - " link: pcie\n", - " scheme: one2one\n", - " - ep1:\n", - " component: pciesl[1]\n", - " ep2:\n", - " component: cx7[1]\n", - " link: pcie\n", - " scheme: one2one\n", - " - ep1:\n", - " component: pciesl[2]\n", - " ep2:\n", - " component: cx7[2]\n", - " link: pcie\n", - " scheme: one2one\n", - " - ep1:\n", - " component: pciesl[3]\n", - " ep2:\n", - " component: cx7[3]\n", - " link: pcie\n", - " scheme: one2one\n", - " - ep1:\n", - " component: pciesl[4]\n", - " ep2:\n", - " component: cx7[4]\n", - " link: pcie\n", - " scheme: one2one\n", - " - ep1:\n", - " component: pciesl[5]\n", - " ep2:\n", - " component: cx7[5]\n", - " link: pcie\n", - " scheme: one2one\n", - " - ep1:\n", - " component: pciesl[6]\n", - " ep2:\n", - " component: cx7[6]\n", - " link: pcie\n", - " scheme: one2one\n", - " - ep1:\n", - " component: pciesl[7]\n", - " ep2:\n", - " component: cx7[7]\n", - " link: pcie\n", - " scheme: one2one\n", - " links:\n", - " - description: infinity_fabric\n", - " name: cpu_fabric\n", - " - description: nvlink_4\n", - " name: xpu_fabric\n", - " - description: PCI Express PCIE_GEN5 x16\n", - " name: pcie\n", - " name: dgx_h100\n", - "instances:\n", - "- count: 1\n", - " device: dgx_h100\n", - " name: dgx_h100\n", - "\n" - ] - } - ], + "outputs": [], "source": [ "server = NvidiaDGX()\n", "infrastructure = Infrastructure()\n", @@ -309,72 +101,10 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": null, "id": "24921fe9", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "╙── dgx_h100.0.cx7.3\n", - " │\n", - " dgx_h100.0.pciesl.3\n", - " │\n", - " dgx_h100.0.xpu.3\n", - " ├── dgx_h100.0.nvsw.0\n", - " │ ├── dgx_h100.0.pciesw.2\n", - " │ │ ├── dgx_h100.0.cpu.0\n", - " │ │ │ ├── dgx_h100.0.cpu.1\n", - " │ │ │ │ ├── dgx_h100.0.pciesl.4\n", - " │ │ │ │ │ ├── dgx_h100.0.xpu.4 ─ dgx_h100.0.nvsw.0\n", - " │ │ │ │ │ │ ├── dgx_h100.0.nvsw.1 ─ dgx_h100.0.pciesw.2, dgx_h100.0.xpu.3\n", - " │ │ │ │ │ │ │ ├── dgx_h100.0.xpu.0 ─ dgx_h100.0.nvsw.0\n", - " │ │ │ │ │ │ │ │ ├── dgx_h100.0.pciesl.0 ─ dgx_h100.0.cpu.0\n", - " │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ dgx_h100.0.cx7.0\n", - " │ │ │ │ │ │ │ │ ├── dgx_h100.0.nvsw.2 ─ dgx_h100.0.pciesw.2, dgx_h100.0.xpu.3, dgx_h100.0.xpu.4\n", - " │ │ │ │ │ │ │ │ │ ├── dgx_h100.0.xpu.1 ─ dgx_h100.0.nvsw.0, dgx_h100.0.nvsw.1\n", - " │ │ │ │ │ │ │ │ │ │ ├── dgx_h100.0.pciesl.1 ─ dgx_h100.0.cpu.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ dgx_h100.0.cx7.1\n", - " │ │ │ │ │ │ │ │ │ │ └── dgx_h100.0.nvsw.3 ─ dgx_h100.0.pciesw.2, dgx_h100.0.xpu.0, dgx_h100.0.xpu.3, dgx_h100.0.xpu.4\n", - " │ │ │ │ │ │ │ │ │ │ ├── dgx_h100.0.xpu.2 ─ dgx_h100.0.nvsw.0, dgx_h100.0.nvsw.1, dgx_h100.0.nvsw.2\n", - " │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ dgx_h100.0.pciesl.2 ─ dgx_h100.0.cpu.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ dgx_h100.0.cx7.2\n", - " │ │ │ │ │ │ │ │ │ │ ├── dgx_h100.0.xpu.5 ─ dgx_h100.0.nvsw.0, dgx_h100.0.nvsw.1, dgx_h100.0.nvsw.2\n", - " │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ dgx_h100.0.pciesl.5 ─ dgx_h100.0.cpu.1\n", - " │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ dgx_h100.0.cx7.5\n", - " │ │ │ │ │ │ │ │ │ │ ├── dgx_h100.0.xpu.6 ─ dgx_h100.0.nvsw.0, dgx_h100.0.nvsw.1, dgx_h100.0.nvsw.2\n", - " │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ dgx_h100.0.pciesl.6 ─ dgx_h100.0.cpu.1\n", - " │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ dgx_h100.0.cx7.6\n", - " │ │ │ │ │ │ │ │ │ │ └── dgx_h100.0.xpu.7 ─ dgx_h100.0.nvsw.0, dgx_h100.0.nvsw.1, dgx_h100.0.nvsw.2\n", - " │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ dgx_h100.0.pciesl.7\n", - " │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ dgx_h100.0.cx7.7\n", - " │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ └── dgx_h100.0.cx7.4\n", - " │ │ │ │ ├── dgx_h100.0.pciesw.1\n", - " │ │ │ │ └── ...\n", - " │ │ │ ├── dgx_h100.0.pciesw.0\n", - " │ │ │ └── ...\n", - " │ │ └── ...\n", - " │ └── ...\n", - " └── ...\n", - "None\n" - ] - } - ], + "outputs": [], "source": [ "service = InfraGraphService()\n", "service.set_graph(infrastructure)\n", @@ -393,19 +123,10 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": null, "id": "793d7563", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "All contents of the folder /workspaces/astra_sim_service/client-scripts/utils/../trial/analytical_dgx_device/configuration/workload have been deleted.\n", - "Generated 8 et in /workspaces/astra_sim_service/client-scripts/utils/../trial/analytical_dgx_device/configuration/workload\n" - ] - } - ], + "outputs": [], "source": [ "astra.configuration.common_config.workload = astra.generate_collective(collective=Collective.ALLREDUCE, coll_size= 1 *1024*1024, npu_range=[0, total_npus])" ] @@ -420,7 +141,7 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": null, "id": "b56c38cf", "metadata": {}, "outputs": [], @@ -445,21 +166,10 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": null, "id": "36490835", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "memory_type: NO_MEMORY_EXPANSION\n", - "remote_mem_bw: 0\n", - "remote_mem_latency: 0\n", - "\n" - ] - } - ], + "outputs": [], "source": [ "astra.configuration.common_config.remote_memory.memory_type = astra.configuration.common_config.remote_memory.NO_MEMORY_EXPANSION\n", "print(astra.configuration.common_config.remote_memory)" @@ -475,7 +185,7 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": null, "id": "1efef83a", "metadata": {}, "outputs": [], @@ -493,21 +203,10 @@ }, { "cell_type": "code", - "execution_count": 23, + "execution_count": null, "id": "70bf271e", "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 23, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "host_device_spec = astra_sim_kit.AnnotationDeviceSpecifications()\n", "host_device_spec.device_bandwidth_gbps = 100\n", @@ -519,92 +218,107 @@ }, { "cell_type": "markdown", - "id": "e146c4a2", + "id": "cd0bc41f", "metadata": {}, "source": [ - "##### Configure ASTRA-sim cmd parameters" + "##### Save infragraph as a yaml" ] }, { "cell_type": "code", - "execution_count": 24, - "id": "3c096641", + "execution_count": null, + "id": "d13f9225", "metadata": {}, "outputs": [], "source": [ - "astra.configuration.common_config.cmd_parameters.comm_scale = 1\n", - "astra.configuration.common_config.cmd_parameters.injection_scale = 1\n", - "astra.configuration.common_config.cmd_parameters.rendezvous_protocol = False" + "with open(os.path.join(FileFolderUtils.get_instance().OUTPUT_DIR,\"../infrastructure\",f\"{astra.tag}.yaml\"),\"w\") as f:\n", + " data = infrastructure.serialize(\"dict\")\n", + " yaml.dump(data, f, default_flow_style=False, indent=4)\n", + "\n", + "print(\"saved yaml to:\", os.path.join(FileFolderUtils.get_instance().OUTPUT_DIR,\"..\",f\"{astra.tag}.yaml\"))" ] }, { "cell_type": "markdown", - "id": "080a8923", + "id": "94ac0705", "metadata": {}, "source": [ - "#### Start the simulation by specifying the network backend" + "##### Visualize the Infragraph" ] }, { "cell_type": "code", - "execution_count": 25, - "id": "fbcb30d1", + "execution_count": null, + "id": "9aa872cb", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Generating Configuration ZIP now\n", - "output_path: /workspaces/astra_sim_service/client-scripts/utils/../trial/analytical_dgx_device/config.zip\n", - "folder_path: /workspaces/astra_sim_service/client-scripts/utils/../trial/analytical_dgx_device/configuration/workload/..\n", - "pack_zip complete\n", - "message: 'Configuration applied successfully. warnings: Unable to generate communicator\n", - " group message from schema - communicator group configuration empty'\n", - "\n", - "message: Simulation started successfully\n", - "\n", - "astra-sim server Status: running\n", - "Downloading Output files....\n", - "Transferring Files from ASTRA-sim server\n", - "Downloading file: simulation.log\n", - "All files downloaded Successfully\n", - "Simulation completed\n" - ] - } - ], + "outputs": [], "source": [ - "astra.run_simulation(NetworkBackend.ANALYTICAL_CONGESTION_AWARE)" + "# VISUALIZER_START\n", + "PORT = 8765\n", + "\n", + "subprocess.run(\n", + " f\"lsof -ti:{PORT} | xargs -r kill -9\",\n", + " shell=True\n", + ")\n", + "\n", + "infra_yaml_path = os.path.join(\n", + " FileFolderUtils.get_instance().OUTPUT_DIR,\n", + " \"../infrastructure\",\n", + " f\"{astra.tag}.yaml\"\n", + ")\n", + "\n", + "infra_dir = os.path.dirname(infra_yaml_path)\n", + "visual_output_dir = os.path.normpath(os.path.join(infra_dir, \"../visuals\"))\n", + "\n", + "subprocess.run(\n", + " [\"infragraph\", \"visualize\", \"--input\", infra_yaml_path, \"--output\", visual_output_dir],\n", + " check=True\n", + ")\n", + "\n", + "subprocess.Popen(\n", + " [\"python3\", \"-m\", \"http.server\", f\"{PORT}\"],\n", + " cwd=visual_output_dir\n", + ")\n", + "IFrame(f\"http://localhost:{PORT}/index.html\", width=\"100%\", height=700)\n", + "# VISUALIZER_END" ] }, { "cell_type": "markdown", - "id": "866b346f", + "id": "e146c4a2", "metadata": {}, "source": [ - "##### Save infragraph as a yaml" + "##### Configure ASTRA-sim cmd parameters" ] }, { "cell_type": "code", - "execution_count": 26, - "id": "71901931", + "execution_count": null, + "id": "3c096641", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "saved yaml to: /workspaces/astra_sim_service/client-scripts/utils/../trial/analytical_dgx_device/output/../analytical_dgx_device.yaml\n" - ] - } - ], + "outputs": [], "source": [ - "with open(os.path.join(FileFolderUtils.get_instance().OUTPUT_DIR,\"../infrastructure\",\"analytical_dgx_device.yaml\"),\"w\") as f:\n", - " data = infrastructure.serialize(\"dict\")\n", - " yaml.dump(data, f, default_flow_style=False, indent=4)\n", - "\n", - "print(\"saved yaml to:\", os.path.join(FileFolderUtils.get_instance().OUTPUT_DIR,\"..\",\"analytical_dgx_device.yaml\"))" + "astra.configuration.common_config.cmd_parameters.comm_scale = 1\n", + "astra.configuration.common_config.cmd_parameters.injection_scale = 1\n", + "astra.configuration.common_config.cmd_parameters.rendezvous_protocol = False" + ] + }, + { + "cell_type": "markdown", + "id": "080a8923", + "metadata": {}, + "source": [ + "#### Start the simulation by specifying the network backend" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "fbcb30d1", + "metadata": {}, + "outputs": [], + "source": [ + "astra.run_simulation(NetworkBackend.ANALYTICAL_CONGESTION_AWARE)" ] } ], diff --git a/client-scripts/notebooks/infragraph/analytical_ironwood_rack.ipynb b/client-scripts/notebooks/infragraph/analytical_ironwood_rack.ipynb index 1d7e639..6e082a4 100644 --- a/client-scripts/notebooks/infragraph/analytical_ironwood_rack.ipynb +++ b/client-scripts/notebooks/infragraph/analytical_ironwood_rack.ipynb @@ -20,8 +20,10 @@ "import networkx\n", "import yaml\n", "import os\n", + "import subprocess\n", "import astra_sim_sdk.astra_sim_sdk as astra_sim_kit\n", "from common import FileFolderUtils\n", + "from IPython.display import IFrame\n", "from astra_sim import AstraSim, Collective, NetworkBackend\n", "from infragraph.infragraph_service import InfraGraphService\n", "from infragraph.blueprints.devices.ironwood_rack import IronwoodRack\n", @@ -199,80 +201,125 @@ }, { "cell_type": "markdown", - "id": "0f9a2c48", + "id": "88e593c6", "metadata": {}, "source": [ - "##### Configure ASTRA-sim cmd parameters" + "##### Save infragraph as a yaml" ] }, { "cell_type": "code", "execution_count": null, - "id": "1628a250", + "id": "d283686b", "metadata": {}, "outputs": [], "source": [ - "astra.configuration.common_config.cmd_parameters.comm_scale = 1\n", - "astra.configuration.common_config.cmd_parameters.injection_scale = 1\n", - "astra.configuration.common_config.cmd_parameters.rendezvous_protocol = False" + "with open(os.path.join(FileFolderUtils.get_instance().OUTPUT_DIR,\"../infrastructure\",f\"{astra.tag}.yaml\"),\"w\") as f:\n", + " data = infrastructure.serialize(\"dict\")\n", + " yaml.dump(data, f, default_flow_style=False, indent=4)\n", + "\n", + "print(\"saved yaml to:\", os.path.join(FileFolderUtils.get_instance().OUTPUT_DIR,\"..\",f\"{astra.tag}.yaml\"))" ] }, { "cell_type": "markdown", - "id": "d99092a6", + "id": "700ecdd2", "metadata": {}, "source": [ - "#### Start the simulation by specifying the network backend" + "##### Visualize the Infragraph" ] }, { "cell_type": "code", "execution_count": null, - "id": "46c2a21b", + "id": "7e49b253", "metadata": {}, "outputs": [], "source": [ - "astra.run_simulation(NetworkBackend.ANALYTICAL_CONGESTION_UNAWARE)" + "# VISUALIZER_START\n", + "PORT = 8765\n", + "\n", + "subprocess.run(\n", + " f\"lsof -ti:{PORT} | xargs -r kill -9\",\n", + " shell=True\n", + ")\n", + "\n", + "infra_yaml_path = os.path.join(\n", + " FileFolderUtils.get_instance().OUTPUT_DIR,\n", + " \"../infrastructure\",\n", + " f\"{astra.tag}.yaml\"\n", + ")\n", + "\n", + "infra_dir = os.path.dirname(infra_yaml_path)\n", + "visual_output_dir = os.path.normpath(os.path.join(infra_dir, \"../visuals\"))\n", + "\n", + "subprocess.run(\n", + " [\"infragraph\", \"visualize\", \"--input\", infra_yaml_path, \"--output\", visual_output_dir],\n", + " check=True\n", + ")\n", + "\n", + "subprocess.Popen(\n", + " [\"python3\", \"-m\", \"http.server\", f\"{PORT}\"],\n", + " cwd=visual_output_dir\n", + ")\n", + "IFrame(f\"http://localhost:{PORT}/index.html\", width=\"100%\", height=700)\n", + "# VISUALIZER_END" ] }, { "cell_type": "markdown", - "id": "45269b28", + "id": "0f9a2c48", "metadata": {}, "source": [ - "##### Download all the configurations as a zip" + "##### Configure ASTRA-sim cmd parameters" ] }, { "cell_type": "code", "execution_count": null, - "id": "2adbbcda", + "id": "1628a250", "metadata": {}, "outputs": [], "source": [ - "astra.download_configuration()" + "astra.configuration.common_config.cmd_parameters.comm_scale = 1\n", + "astra.configuration.common_config.cmd_parameters.injection_scale = 1\n", + "astra.configuration.common_config.cmd_parameters.rendezvous_protocol = False" ] }, { "cell_type": "markdown", - "id": "09548149", + "id": "d99092a6", "metadata": {}, "source": [ - "##### Save infragraph as a yaml" + "#### Start the simulation by specifying the network backend" ] }, { "cell_type": "code", "execution_count": null, - "id": "ed9f3910", + "id": "46c2a21b", "metadata": {}, "outputs": [], "source": [ - "with open(os.path.join(FileFolderUtils.get_instance().OUTPUT_DIR,\"../infrastructure\",\"analytical_dgx_device.yaml\"),\"w\") as f:\n", - " data = infrastructure.serialize(\"dict\")\n", - " yaml.dump(data, f, default_flow_style=False, indent=4)\n", - "\n", - "print(\"saved yaml to:\", os.path.join(FileFolderUtils.get_instance().OUTPUT_DIR,\"..\",\"analytical_dgx_device.yaml\"))" + "astra.run_simulation(NetworkBackend.ANALYTICAL_CONGESTION_UNAWARE)" + ] + }, + { + "cell_type": "markdown", + "id": "45269b28", + "metadata": {}, + "source": [ + "##### Download all the configurations as a zip" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "2adbbcda", + "metadata": {}, + "outputs": [], + "source": [ + "astra.download_configuration()" ] } ], @@ -292,7 +339,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.11.0rc1" + "version": "3.11.0" } }, "nbformat": 4, diff --git a/client-scripts/notebooks/infragraph/htsim_clos_fabric_2tier.ipynb b/client-scripts/notebooks/infragraph/htsim_clos_fabric_2tier.ipynb index 1d2f6a0..cf4a3a0 100644 --- a/client-scripts/notebooks/infragraph/htsim_clos_fabric_2tier.ipynb +++ b/client-scripts/notebooks/infragraph/htsim_clos_fabric_2tier.ipynb @@ -19,9 +19,11 @@ "sys.path.append(\"../../utils\")\n", "import networkx\n", "import yaml\n", + "import subprocess\n", "import os\n", "import astra_sim_sdk.astra_sim_sdk as astra_sim_kit\n", "from common import FileFolderUtils\n", + "from IPython.display import IFrame\n", "from astra_sim import AstraSim, Collective, NetworkBackend\n", "from infragraph.infragraph_service import InfraGraphService\n", "from infragraph.blueprints.fabrics.clos_fat_tree_fabric import ClosFatTreeFabric\n", @@ -235,80 +237,125 @@ }, { "cell_type": "markdown", - "id": "dfe625b5", + "id": "2c97616a", "metadata": {}, "source": [ - "##### Configure ASTRA-sim cmd parameters" + "##### Save infragraph as a yaml" ] }, { "cell_type": "code", "execution_count": null, - "id": "1e99a61a", + "id": "09917a91", "metadata": {}, "outputs": [], "source": [ - "astra.configuration.common_config.cmd_parameters.comm_scale = 1\n", - "astra.configuration.common_config.cmd_parameters.injection_scale = 1\n", - "astra.configuration.common_config.cmd_parameters.rendezvous_protocol = False" + "with open(os.path.join(FileFolderUtils.get_instance().OUTPUT_DIR,\"../infrastructure\",f\"{astra.tag}.yaml\"),\"w\") as f:\n", + " data = infrastructure.serialize(\"dict\")\n", + " yaml.dump(data, f, default_flow_style=False, indent=4)\n", + "\n", + "print(\"saved yaml to:\", os.path.join(FileFolderUtils.get_instance().OUTPUT_DIR,\"..\",f\"{astra.tag}.yaml\"))" ] }, { "cell_type": "markdown", - "id": "bf92ca9b", + "id": "69fddfae", "metadata": {}, "source": [ - "#### Start the simulation by specifying the network backend" + "##### Visualize the Infragraph" ] }, { "cell_type": "code", "execution_count": null, - "id": "4e3b4263", + "id": "304516db", "metadata": {}, "outputs": [], "source": [ - "astra.run_simulation(NetworkBackend.HTSIM)" + "# VISUALIZER_START\n", + "PORT = 8765\n", + "\n", + "subprocess.run(\n", + " f\"lsof -ti:{PORT} | xargs -r kill -9\",\n", + " shell=True\n", + ")\n", + "\n", + "infra_yaml_path = os.path.join(\n", + " FileFolderUtils.get_instance().OUTPUT_DIR,\n", + " \"../infrastructure\",\n", + " f\"{astra.tag}.yaml\"\n", + ")\n", + "\n", + "infra_dir = os.path.dirname(infra_yaml_path)\n", + "visual_output_dir = os.path.normpath(os.path.join(infra_dir, \"../visuals\"))\n", + "\n", + "subprocess.run(\n", + " [\"infragraph\", \"visualize\", \"--input\", infra_yaml_path, \"--output\", visual_output_dir],\n", + " check=True\n", + ")\n", + "\n", + "subprocess.Popen(\n", + " [\"python3\", \"-m\", \"http.server\", f\"{PORT}\"],\n", + " cwd=visual_output_dir\n", + ")\n", + "IFrame(f\"http://localhost:{PORT}/index.html\", width=\"100%\", height=700)\n", + "# VISUALIZER_END" ] }, { "cell_type": "markdown", - "id": "fcb4b56e", + "id": "dfe625b5", "metadata": {}, "source": [ - "##### Download all the configurations as a zip" + "##### Configure ASTRA-sim cmd parameters" ] }, { "cell_type": "code", "execution_count": null, - "id": "1f9f13ee", + "id": "1e99a61a", "metadata": {}, "outputs": [], "source": [ - "astra.download_configuration()" + "astra.configuration.common_config.cmd_parameters.comm_scale = 1\n", + "astra.configuration.common_config.cmd_parameters.injection_scale = 1\n", + "astra.configuration.common_config.cmd_parameters.rendezvous_protocol = False" ] }, { "cell_type": "markdown", - "id": "0917b124", + "id": "bf92ca9b", "metadata": {}, "source": [ - "##### Save infragraph as a yaml" + "#### Start the simulation by specifying the network backend" ] }, { "cell_type": "code", "execution_count": null, - "id": "42271c43", + "id": "4e3b4263", "metadata": {}, "outputs": [], "source": [ - "with open(os.path.join(FileFolderUtils.get_instance().OUTPUT_DIR,\"../infrastructure\",\"htsim_clos_fabric_2tier.yaml\"),\"w\") as f:\n", - " data = infrastructure.serialize(\"dict\")\n", - " yaml.dump(data, f, default_flow_style=False, indent=4)\n", - "\n", - "print(\"saved yaml to:\", os.path.join(FileFolderUtils.get_instance().OUTPUT_DIR,\"..\",\"htsim_clos_fabric_2tier.yaml\"))" + "astra.run_simulation(NetworkBackend.HTSIM)" + ] + }, + { + "cell_type": "markdown", + "id": "fcb4b56e", + "metadata": {}, + "source": [ + "##### Download all the configurations as a zip" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "1f9f13ee", + "metadata": {}, + "outputs": [], + "source": [ + "astra.download_configuration()" ] } ], diff --git a/client-scripts/notebooks/infragraph/htsim_clos_fabric_3tier.ipynb b/client-scripts/notebooks/infragraph/htsim_clos_fabric_3tier.ipynb index de97c01..ca64d2b 100644 --- a/client-scripts/notebooks/infragraph/htsim_clos_fabric_3tier.ipynb +++ b/client-scripts/notebooks/infragraph/htsim_clos_fabric_3tier.ipynb @@ -10,7 +10,7 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": null, "id": "ff8f875a", "metadata": {}, "outputs": [], @@ -20,8 +20,10 @@ "import networkx\n", "import yaml\n", "import os\n", + "import subprocess\n", "import astra_sim_sdk.astra_sim_sdk as astra_sim_kit\n", "from common import FileFolderUtils\n", + "from IPython.display import IFrame\n", "from astra_sim import AstraSim, Collective, NetworkBackend\n", "from infragraph.infragraph_service import InfraGraphService\n", "from infragraph.blueprints.fabrics.clos_fat_tree_fabric import ClosFatTreeFabric\n", @@ -39,19 +41,10 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": null, "id": "bdd78f3c", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Resetting test directory\n", - "Successfully connected to gRPC server at 172.17.0.2:8989\n" - ] - } - ], + "outputs": [], "source": [ "astra = AstraSim(server_endpoint = \"172.17.0.2:8989\", tag = \"htsim_clos_fabric_3tier\")" ] @@ -66,3218 +59,10 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": null, "id": "f73252d5", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "description: Clos Fat Tree Fabric\n", - "devices:\n", - "- components:\n", - " - choice: cpu\n", - " count: 1\n", - " description: Generic CPU\n", - " name: cpu\n", - " - choice: xpu\n", - " count: 2\n", - " description: Generic GPU/XPU\n", - " name: xpu\n", - " - choice: switch\n", - " count: 1\n", - " description: NVLink Switch\n", - " name: nvlsw\n", - " - choice: switch\n", - " count: 1\n", - " description: PCI Express Switch Gen 4\n", - " name: pciesw\n", - " - choice: nic\n", - " count: 2\n", - " description: Generic Nic\n", - " name: nic\n", - " - choice: custom\n", - " count: 1\n", - " custom:\n", - " type: mgmt-nic\n", - " description: Mgmt Nic\n", - " name: mgmt\n", - " description: A generic server with npu_factor * 4 xpu(s)\n", - " edges:\n", - " - ep1:\n", - " component: mgmt\n", - " ep2:\n", - " component: cpu[0]\n", - " link: pcie\n", - " scheme: one2one\n", - " - ep1:\n", - " component: cpu\n", - " ep2:\n", - " component: cpu\n", - " link: fabric\n", - " scheme: many2many\n", - " - ep1:\n", - " component: xpu\n", - " ep2:\n", - " component: nvlsw\n", - " link: nvlink\n", - " scheme: many2many\n", - " - ep1:\n", - " component: cpu[0]\n", - " ep2:\n", - " component: pciesw[0]\n", - " link: pcie\n", - " scheme: many2many\n", - " - ep1:\n", - " component: xpu[0:2]\n", - " ep2:\n", - " component: pciesw[0]\n", - " link: pcie\n", - " scheme: many2many\n", - " - ep1:\n", - " component: nic[0:2]\n", - " ep2:\n", - " component: pciesw[0]\n", - " link: pcie\n", - " scheme: many2many\n", - " links:\n", - " - description: CPU Fabric\n", - " name: fabric\n", - " - name: nvlink\n", - " - name: pcie\n", - " name: server\n", - "- components:\n", - " - choice: cpu\n", - " count: 1\n", - " description: Generic ASIC\n", - " name: asic\n", - " - choice: port\n", - " count: 8\n", - " description: Generic port\n", - " name: port\n", - " description: A generic switch\n", - " edges:\n", - " - ep1:\n", - " component: asic\n", - " ep2:\n", - " component: port\n", - " link: ic\n", - " scheme: many2many\n", - " links:\n", - " - description: Generic integrated circuitry\n", - " name: ic\n", - " name: switch\n", - "edges:\n", - "- ep1:\n", - " component: nic[0]\n", - " instance: server[0]\n", - " ep2:\n", - " component: port[0]\n", - " instance: tier_0[0]\n", - " link: tier_0_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: nic[1]\n", - " instance: server[0]\n", - " ep2:\n", - " component: port[1]\n", - " instance: tier_0[0]\n", - " link: tier_0_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: nic[0]\n", - " instance: server[1]\n", - " ep2:\n", - " component: port[2]\n", - " instance: tier_0[0]\n", - " link: tier_0_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: nic[1]\n", - " instance: server[1]\n", - " ep2:\n", - " component: port[3]\n", - " instance: tier_0[0]\n", - " link: tier_0_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: nic[0]\n", - " instance: server[2]\n", - " ep2:\n", - " component: port[0]\n", - " instance: tier_0[1]\n", - " link: tier_0_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: nic[1]\n", - " instance: server[2]\n", - " ep2:\n", - " component: port[1]\n", - " instance: tier_0[1]\n", - " link: tier_0_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: nic[0]\n", - " instance: server[3]\n", - " ep2:\n", - " component: port[2]\n", - " instance: tier_0[1]\n", - " link: tier_0_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: nic[1]\n", - " instance: server[3]\n", - " ep2:\n", - " component: port[3]\n", - " instance: tier_0[1]\n", - " link: tier_0_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: nic[0]\n", - " instance: server[4]\n", - " ep2:\n", - " component: port[0]\n", - " instance: tier_0[2]\n", - " link: tier_0_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: nic[1]\n", - " instance: server[4]\n", - " ep2:\n", - " component: port[1]\n", - " instance: tier_0[2]\n", - " link: tier_0_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: nic[0]\n", - " instance: server[5]\n", - " ep2:\n", - " component: port[2]\n", - " instance: tier_0[2]\n", - " link: tier_0_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: nic[1]\n", - " instance: server[5]\n", - " ep2:\n", - " component: port[3]\n", - " instance: tier_0[2]\n", - " link: tier_0_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: nic[0]\n", - " instance: server[6]\n", - " ep2:\n", - " component: port[0]\n", - " instance: tier_0[3]\n", - " link: tier_0_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: nic[1]\n", - " instance: server[6]\n", - " ep2:\n", - " component: port[1]\n", - " instance: tier_0[3]\n", - " link: tier_0_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: nic[0]\n", - " instance: server[7]\n", - " ep2:\n", - " component: port[2]\n", - " instance: tier_0[3]\n", - " link: tier_0_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: nic[1]\n", - " instance: server[7]\n", - " ep2:\n", - " component: port[3]\n", - " instance: tier_0[3]\n", - " link: tier_0_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: nic[0]\n", - " instance: server[8]\n", - " ep2:\n", - " component: port[0]\n", - " instance: tier_0[4]\n", - " link: tier_0_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: nic[1]\n", - " instance: server[8]\n", - " ep2:\n", - " component: port[1]\n", - " instance: tier_0[4]\n", - " link: tier_0_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: nic[0]\n", - " instance: server[9]\n", - " ep2:\n", - " component: port[2]\n", - " instance: tier_0[4]\n", - " link: tier_0_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: nic[1]\n", - " instance: server[9]\n", - " ep2:\n", - " component: port[3]\n", - " instance: tier_0[4]\n", - " link: tier_0_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: nic[0]\n", - " instance: server[10]\n", - " ep2:\n", - " component: port[0]\n", - " instance: tier_0[5]\n", - " link: tier_0_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: nic[1]\n", - " instance: server[10]\n", - " ep2:\n", - " component: port[1]\n", - " instance: tier_0[5]\n", - " link: tier_0_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: nic[0]\n", - " instance: server[11]\n", - " ep2:\n", - " component: port[2]\n", - " instance: tier_0[5]\n", - " link: tier_0_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: nic[1]\n", - " instance: server[11]\n", - " ep2:\n", - " component: port[3]\n", - " instance: tier_0[5]\n", - " link: tier_0_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: nic[0]\n", - " instance: server[12]\n", - " ep2:\n", - " component: port[0]\n", - " instance: tier_0[6]\n", - " link: tier_0_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: nic[1]\n", - " instance: server[12]\n", - " ep2:\n", - " component: port[1]\n", - " instance: tier_0[6]\n", - " link: tier_0_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: nic[0]\n", - " instance: server[13]\n", - " ep2:\n", - " component: port[2]\n", - " instance: tier_0[6]\n", - " link: tier_0_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: nic[1]\n", - " instance: server[13]\n", - " ep2:\n", - " component: port[3]\n", - " instance: tier_0[6]\n", - " link: tier_0_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: nic[0]\n", - " instance: server[14]\n", - " ep2:\n", - " component: port[0]\n", - " instance: tier_0[7]\n", - " link: tier_0_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: nic[1]\n", - " instance: server[14]\n", - " ep2:\n", - " component: port[1]\n", - " instance: tier_0[7]\n", - " link: tier_0_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: nic[0]\n", - " instance: server[15]\n", - " ep2:\n", - " component: port[2]\n", - " instance: tier_0[7]\n", - " link: tier_0_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: nic[1]\n", - " instance: server[15]\n", - " ep2:\n", - " component: port[3]\n", - " instance: tier_0[7]\n", - " link: tier_0_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: nic[0]\n", - " instance: server[16]\n", - " ep2:\n", - " component: port[0]\n", - " instance: tier_0[8]\n", - " link: tier_0_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: nic[1]\n", - " instance: server[16]\n", - " ep2:\n", - " component: port[1]\n", - " instance: tier_0[8]\n", - " link: tier_0_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: nic[0]\n", - " instance: server[17]\n", - " ep2:\n", - " component: port[2]\n", - " instance: tier_0[8]\n", - " link: tier_0_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: nic[1]\n", - " instance: server[17]\n", - " ep2:\n", - " component: port[3]\n", - " instance: tier_0[8]\n", - " link: tier_0_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: nic[0]\n", - " instance: server[18]\n", - " ep2:\n", - " component: port[0]\n", - " instance: tier_0[9]\n", - " link: tier_0_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: nic[1]\n", - " instance: server[18]\n", - " ep2:\n", - " component: port[1]\n", - " instance: tier_0[9]\n", - " link: tier_0_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: nic[0]\n", - " instance: server[19]\n", - " ep2:\n", - " component: port[2]\n", - " instance: tier_0[9]\n", - " link: tier_0_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: nic[1]\n", - " instance: server[19]\n", - " ep2:\n", - " component: port[3]\n", - " instance: tier_0[9]\n", - " link: tier_0_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: nic[0]\n", - " instance: server[20]\n", - " ep2:\n", - " component: port[0]\n", - " instance: tier_0[10]\n", - " link: tier_0_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: nic[1]\n", - " instance: server[20]\n", - " ep2:\n", - " component: port[1]\n", - " instance: tier_0[10]\n", - " link: tier_0_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: nic[0]\n", - " instance: server[21]\n", - " ep2:\n", - " component: port[2]\n", - " instance: tier_0[10]\n", - " link: tier_0_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: nic[1]\n", - " instance: server[21]\n", - " ep2:\n", - " component: port[3]\n", - " instance: tier_0[10]\n", - " link: tier_0_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: nic[0]\n", - " instance: server[22]\n", - " ep2:\n", - " component: port[0]\n", - " instance: tier_0[11]\n", - " link: tier_0_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: nic[1]\n", - " instance: server[22]\n", - " ep2:\n", - " component: port[1]\n", - " instance: tier_0[11]\n", - " link: tier_0_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: nic[0]\n", - " instance: server[23]\n", - " ep2:\n", - " component: port[2]\n", - " instance: tier_0[11]\n", - " link: tier_0_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: nic[1]\n", - " instance: server[23]\n", - " ep2:\n", - " component: port[3]\n", - " instance: tier_0[11]\n", - " link: tier_0_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: nic[0]\n", - " instance: server[24]\n", - " ep2:\n", - " component: port[0]\n", - " instance: tier_0[12]\n", - " link: tier_0_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: nic[1]\n", - " instance: server[24]\n", - " ep2:\n", - " component: port[1]\n", - " instance: tier_0[12]\n", - " link: tier_0_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: nic[0]\n", - " instance: server[25]\n", - " ep2:\n", - " component: port[2]\n", - " instance: tier_0[12]\n", - " link: tier_0_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: nic[1]\n", - " instance: server[25]\n", - " ep2:\n", - " component: port[3]\n", - " instance: tier_0[12]\n", - " link: tier_0_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: nic[0]\n", - " instance: server[26]\n", - " ep2:\n", - " component: port[0]\n", - " instance: tier_0[13]\n", - " link: tier_0_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: nic[1]\n", - " instance: server[26]\n", - " ep2:\n", - " component: port[1]\n", - " instance: tier_0[13]\n", - " link: tier_0_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: nic[0]\n", - " instance: server[27]\n", - " ep2:\n", - " component: port[2]\n", - " instance: tier_0[13]\n", - " link: tier_0_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: nic[1]\n", - " instance: server[27]\n", - " ep2:\n", - " component: port[3]\n", - " instance: tier_0[13]\n", - " link: tier_0_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: nic[0]\n", - " instance: server[28]\n", - " ep2:\n", - " component: port[0]\n", - " instance: tier_0[14]\n", - " link: tier_0_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: nic[1]\n", - " instance: server[28]\n", - " ep2:\n", - " component: port[1]\n", - " instance: tier_0[14]\n", - " link: tier_0_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: nic[0]\n", - " instance: server[29]\n", - " ep2:\n", - " component: port[2]\n", - " instance: tier_0[14]\n", - " link: tier_0_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: nic[1]\n", - " instance: server[29]\n", - " ep2:\n", - " component: port[3]\n", - " instance: tier_0[14]\n", - " link: tier_0_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: nic[0]\n", - " instance: server[30]\n", - " ep2:\n", - " component: port[0]\n", - " instance: tier_0[15]\n", - " link: tier_0_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: nic[1]\n", - " instance: server[30]\n", - " ep2:\n", - " component: port[1]\n", - " instance: tier_0[15]\n", - " link: tier_0_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: nic[0]\n", - " instance: server[31]\n", - " ep2:\n", - " component: port[2]\n", - " instance: tier_0[15]\n", - " link: tier_0_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: nic[1]\n", - " instance: server[31]\n", - " ep2:\n", - " component: port[3]\n", - " instance: tier_0[15]\n", - " link: tier_0_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: nic[0]\n", - " instance: server[32]\n", - " ep2:\n", - " component: port[0]\n", - " instance: tier_0[16]\n", - " link: tier_0_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: nic[1]\n", - " instance: server[32]\n", - " ep2:\n", - " component: port[1]\n", - " instance: tier_0[16]\n", - " link: tier_0_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: nic[0]\n", - " instance: server[33]\n", - " ep2:\n", - " component: port[2]\n", - " instance: tier_0[16]\n", - " link: tier_0_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: nic[1]\n", - " instance: server[33]\n", - " ep2:\n", - " component: port[3]\n", - " instance: tier_0[16]\n", - " link: tier_0_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: nic[0]\n", - " instance: server[34]\n", - " ep2:\n", - " component: port[0]\n", - " instance: tier_0[17]\n", - " link: tier_0_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: nic[1]\n", - " instance: server[34]\n", - " ep2:\n", - " component: port[1]\n", - " instance: tier_0[17]\n", - " link: tier_0_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: nic[0]\n", - " instance: server[35]\n", - " ep2:\n", - " component: port[2]\n", - " instance: tier_0[17]\n", - " link: tier_0_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: nic[1]\n", - " instance: server[35]\n", - " ep2:\n", - " component: port[3]\n", - " instance: tier_0[17]\n", - " link: tier_0_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: nic[0]\n", - " instance: server[36]\n", - " ep2:\n", - " component: port[0]\n", - " instance: tier_0[18]\n", - " link: tier_0_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: nic[1]\n", - " instance: server[36]\n", - " ep2:\n", - " component: port[1]\n", - " instance: tier_0[18]\n", - " link: tier_0_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: nic[0]\n", - " instance: server[37]\n", - " ep2:\n", - " component: port[2]\n", - " instance: tier_0[18]\n", - " link: tier_0_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: nic[1]\n", - " instance: server[37]\n", - " ep2:\n", - " component: port[3]\n", - " instance: tier_0[18]\n", - " link: tier_0_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: nic[0]\n", - " instance: server[38]\n", - " ep2:\n", - " component: port[0]\n", - " instance: tier_0[19]\n", - " link: tier_0_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: nic[1]\n", - " instance: server[38]\n", - " ep2:\n", - " component: port[1]\n", - " instance: tier_0[19]\n", - " link: tier_0_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: nic[0]\n", - " instance: server[39]\n", - " ep2:\n", - " component: port[2]\n", - " instance: tier_0[19]\n", - " link: tier_0_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: nic[1]\n", - " instance: server[39]\n", - " ep2:\n", - " component: port[3]\n", - " instance: tier_0[19]\n", - " link: tier_0_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: nic[0]\n", - " instance: server[40]\n", - " ep2:\n", - " component: port[0]\n", - " instance: tier_0[20]\n", - " link: tier_0_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: nic[1]\n", - " instance: server[40]\n", - " ep2:\n", - " component: port[1]\n", - " instance: tier_0[20]\n", - " link: tier_0_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: nic[0]\n", - " instance: server[41]\n", - " ep2:\n", - " component: port[2]\n", - " instance: tier_0[20]\n", - " link: tier_0_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: nic[1]\n", - " instance: server[41]\n", - " ep2:\n", - " component: port[3]\n", - " instance: tier_0[20]\n", - " link: tier_0_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: nic[0]\n", - " instance: server[42]\n", - " ep2:\n", - " component: port[0]\n", - " instance: tier_0[21]\n", - " link: tier_0_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: nic[1]\n", - " instance: server[42]\n", - " ep2:\n", - " component: port[1]\n", - " instance: tier_0[21]\n", - " link: tier_0_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: nic[0]\n", - " instance: server[43]\n", - " ep2:\n", - " component: port[2]\n", - " instance: tier_0[21]\n", - " link: tier_0_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: nic[1]\n", - " instance: server[43]\n", - " ep2:\n", - " component: port[3]\n", - " instance: tier_0[21]\n", - " link: tier_0_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: nic[0]\n", - " instance: server[44]\n", - " ep2:\n", - " component: port[0]\n", - " instance: tier_0[22]\n", - " link: tier_0_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: nic[1]\n", - " instance: server[44]\n", - " ep2:\n", - " component: port[1]\n", - " instance: tier_0[22]\n", - " link: tier_0_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: nic[0]\n", - " instance: server[45]\n", - " ep2:\n", - " component: port[2]\n", - " instance: tier_0[22]\n", - " link: tier_0_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: nic[1]\n", - " instance: server[45]\n", - " ep2:\n", - " component: port[3]\n", - " instance: tier_0[22]\n", - " link: tier_0_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: nic[0]\n", - " instance: server[46]\n", - " ep2:\n", - " component: port[0]\n", - " instance: tier_0[23]\n", - " link: tier_0_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: nic[1]\n", - " instance: server[46]\n", - " ep2:\n", - " component: port[1]\n", - " instance: tier_0[23]\n", - " link: tier_0_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: nic[0]\n", - " instance: server[47]\n", - " ep2:\n", - " component: port[2]\n", - " instance: tier_0[23]\n", - " link: tier_0_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: nic[1]\n", - " instance: server[47]\n", - " ep2:\n", - " component: port[3]\n", - " instance: tier_0[23]\n", - " link: tier_0_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: nic[0]\n", - " instance: server[48]\n", - " ep2:\n", - " component: port[0]\n", - " instance: tier_0[24]\n", - " link: tier_0_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: nic[1]\n", - " instance: server[48]\n", - " ep2:\n", - " component: port[1]\n", - " instance: tier_0[24]\n", - " link: tier_0_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: nic[0]\n", - " instance: server[49]\n", - " ep2:\n", - " component: port[2]\n", - " instance: tier_0[24]\n", - " link: tier_0_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: nic[1]\n", - " instance: server[49]\n", - " ep2:\n", - " component: port[3]\n", - " instance: tier_0[24]\n", - " link: tier_0_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: nic[0]\n", - " instance: server[50]\n", - " ep2:\n", - " component: port[0]\n", - " instance: tier_0[25]\n", - " link: tier_0_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: nic[1]\n", - " instance: server[50]\n", - " ep2:\n", - " component: port[1]\n", - " instance: tier_0[25]\n", - " link: tier_0_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: nic[0]\n", - " instance: server[51]\n", - " ep2:\n", - " component: port[2]\n", - " instance: tier_0[25]\n", - " link: tier_0_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: nic[1]\n", - " instance: server[51]\n", - " ep2:\n", - " component: port[3]\n", - " instance: tier_0[25]\n", - " link: tier_0_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: nic[0]\n", - " instance: server[52]\n", - " ep2:\n", - " component: port[0]\n", - " instance: tier_0[26]\n", - " link: tier_0_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: nic[1]\n", - " instance: server[52]\n", - " ep2:\n", - " component: port[1]\n", - " instance: tier_0[26]\n", - " link: tier_0_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: nic[0]\n", - " instance: server[53]\n", - " ep2:\n", - " component: port[2]\n", - " instance: tier_0[26]\n", - " link: tier_0_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: nic[1]\n", - " instance: server[53]\n", - " ep2:\n", - " component: port[3]\n", - " instance: tier_0[26]\n", - " link: tier_0_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: nic[0]\n", - " instance: server[54]\n", - " ep2:\n", - " component: port[0]\n", - " instance: tier_0[27]\n", - " link: tier_0_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: nic[1]\n", - " instance: server[54]\n", - " ep2:\n", - " component: port[1]\n", - " instance: tier_0[27]\n", - " link: tier_0_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: nic[0]\n", - " instance: server[55]\n", - " ep2:\n", - " component: port[2]\n", - " instance: tier_0[27]\n", - " link: tier_0_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: nic[1]\n", - " instance: server[55]\n", - " ep2:\n", - " component: port[3]\n", - " instance: tier_0[27]\n", - " link: tier_0_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: nic[0]\n", - " instance: server[56]\n", - " ep2:\n", - " component: port[0]\n", - " instance: tier_0[28]\n", - " link: tier_0_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: nic[1]\n", - " instance: server[56]\n", - " ep2:\n", - " component: port[1]\n", - " instance: tier_0[28]\n", - " link: tier_0_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: nic[0]\n", - " instance: server[57]\n", - " ep2:\n", - " component: port[2]\n", - " instance: tier_0[28]\n", - " link: tier_0_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: nic[1]\n", - " instance: server[57]\n", - " ep2:\n", - " component: port[3]\n", - " instance: tier_0[28]\n", - " link: tier_0_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: nic[0]\n", - " instance: server[58]\n", - " ep2:\n", - " component: port[0]\n", - " instance: tier_0[29]\n", - " link: tier_0_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: nic[1]\n", - " instance: server[58]\n", - " ep2:\n", - " component: port[1]\n", - " instance: tier_0[29]\n", - " link: tier_0_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: nic[0]\n", - " instance: server[59]\n", - " ep2:\n", - " component: port[2]\n", - " instance: tier_0[29]\n", - " link: tier_0_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: nic[1]\n", - " instance: server[59]\n", - " ep2:\n", - " component: port[3]\n", - " instance: tier_0[29]\n", - " link: tier_0_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: nic[0]\n", - " instance: server[60]\n", - " ep2:\n", - " component: port[0]\n", - " instance: tier_0[30]\n", - " link: tier_0_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: nic[1]\n", - " instance: server[60]\n", - " ep2:\n", - " component: port[1]\n", - " instance: tier_0[30]\n", - " link: tier_0_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: nic[0]\n", - " instance: server[61]\n", - " ep2:\n", - " component: port[2]\n", - " instance: tier_0[30]\n", - " link: tier_0_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: nic[1]\n", - " instance: server[61]\n", - " ep2:\n", - " component: port[3]\n", - " instance: tier_0[30]\n", - " link: tier_0_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: nic[0]\n", - " instance: server[62]\n", - " ep2:\n", - " component: port[0]\n", - " instance: tier_0[31]\n", - " link: tier_0_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: nic[1]\n", - " instance: server[62]\n", - " ep2:\n", - " component: port[1]\n", - " instance: tier_0[31]\n", - " link: tier_0_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: nic[0]\n", - " instance: server[63]\n", - " ep2:\n", - " component: port[2]\n", - " instance: tier_0[31]\n", - " link: tier_0_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: nic[1]\n", - " instance: server[63]\n", - " ep2:\n", - " component: port[3]\n", - " instance: tier_0[31]\n", - " link: tier_0_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[0]\n", - " instance: tier_1[0]\n", - " ep2:\n", - " component: port[4]\n", - " instance: tier_0[0]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[1]\n", - " instance: tier_1[0]\n", - " ep2:\n", - " component: port[4]\n", - " instance: tier_0[1]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[2]\n", - " instance: tier_1[0]\n", - " ep2:\n", - " component: port[4]\n", - " instance: tier_0[2]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[3]\n", - " instance: tier_1[0]\n", - " ep2:\n", - " component: port[4]\n", - " instance: tier_0[3]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[0]\n", - " instance: tier_1[1]\n", - " ep2:\n", - " component: port[5]\n", - " instance: tier_0[0]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[1]\n", - " instance: tier_1[1]\n", - " ep2:\n", - " component: port[5]\n", - " instance: tier_0[1]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[2]\n", - " instance: tier_1[1]\n", - " ep2:\n", - " component: port[5]\n", - " instance: tier_0[2]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[3]\n", - " instance: tier_1[1]\n", - " ep2:\n", - " component: port[5]\n", - " instance: tier_0[3]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[0]\n", - " instance: tier_1[2]\n", - " ep2:\n", - " component: port[6]\n", - " instance: tier_0[0]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[1]\n", - " instance: tier_1[2]\n", - " ep2:\n", - " component: port[6]\n", - " instance: tier_0[1]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[2]\n", - " instance: tier_1[2]\n", - " ep2:\n", - " component: port[6]\n", - " instance: tier_0[2]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[3]\n", - " instance: tier_1[2]\n", - " ep2:\n", - " component: port[6]\n", - " instance: tier_0[3]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[0]\n", - " instance: tier_1[3]\n", - " ep2:\n", - " component: port[7]\n", - " instance: tier_0[0]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[1]\n", - " instance: tier_1[3]\n", - " ep2:\n", - " component: port[7]\n", - " instance: tier_0[1]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[2]\n", - " instance: tier_1[3]\n", - " ep2:\n", - " component: port[7]\n", - " instance: tier_0[2]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[3]\n", - " instance: tier_1[3]\n", - " ep2:\n", - " component: port[7]\n", - " instance: tier_0[3]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[0]\n", - " instance: tier_1[4]\n", - " ep2:\n", - " component: port[4]\n", - " instance: tier_0[4]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[1]\n", - " instance: tier_1[4]\n", - " ep2:\n", - " component: port[4]\n", - " instance: tier_0[5]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[2]\n", - " instance: tier_1[4]\n", - " ep2:\n", - " component: port[4]\n", - " instance: tier_0[6]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[3]\n", - " instance: tier_1[4]\n", - " ep2:\n", - " component: port[4]\n", - " instance: tier_0[7]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[0]\n", - " instance: tier_1[5]\n", - " ep2:\n", - " component: port[5]\n", - " instance: tier_0[4]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[1]\n", - " instance: tier_1[5]\n", - " ep2:\n", - " component: port[5]\n", - " instance: tier_0[5]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[2]\n", - " instance: tier_1[5]\n", - " ep2:\n", - " component: port[5]\n", - " instance: tier_0[6]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[3]\n", - " instance: tier_1[5]\n", - " ep2:\n", - " component: port[5]\n", - " instance: tier_0[7]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[0]\n", - " instance: tier_1[6]\n", - " ep2:\n", - " component: port[6]\n", - " instance: tier_0[4]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[1]\n", - " instance: tier_1[6]\n", - " ep2:\n", - " component: port[6]\n", - " instance: tier_0[5]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[2]\n", - " instance: tier_1[6]\n", - " ep2:\n", - " component: port[6]\n", - " instance: tier_0[6]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[3]\n", - " instance: tier_1[6]\n", - " ep2:\n", - " component: port[6]\n", - " instance: tier_0[7]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[0]\n", - " instance: tier_1[7]\n", - " ep2:\n", - " component: port[7]\n", - " instance: tier_0[4]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[1]\n", - " instance: tier_1[7]\n", - " ep2:\n", - " component: port[7]\n", - " instance: tier_0[5]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[2]\n", - " instance: tier_1[7]\n", - " ep2:\n", - " component: port[7]\n", - " instance: tier_0[6]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[3]\n", - " instance: tier_1[7]\n", - " ep2:\n", - " component: port[7]\n", - " instance: tier_0[7]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[0]\n", - " instance: tier_1[8]\n", - " ep2:\n", - " component: port[4]\n", - " instance: tier_0[8]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[1]\n", - " instance: tier_1[8]\n", - " ep2:\n", - " component: port[4]\n", - " instance: tier_0[9]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[2]\n", - " instance: tier_1[8]\n", - " ep2:\n", - " component: port[4]\n", - " instance: tier_0[10]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[3]\n", - " instance: tier_1[8]\n", - " ep2:\n", - " component: port[4]\n", - " instance: tier_0[11]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[0]\n", - " instance: tier_1[9]\n", - " ep2:\n", - " component: port[5]\n", - " instance: tier_0[8]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[1]\n", - " instance: tier_1[9]\n", - " ep2:\n", - " component: port[5]\n", - " instance: tier_0[9]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[2]\n", - " instance: tier_1[9]\n", - " ep2:\n", - " component: port[5]\n", - " instance: tier_0[10]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[3]\n", - " instance: tier_1[9]\n", - " ep2:\n", - " component: port[5]\n", - " instance: tier_0[11]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[0]\n", - " instance: tier_1[10]\n", - " ep2:\n", - " component: port[6]\n", - " instance: tier_0[8]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[1]\n", - " instance: tier_1[10]\n", - " ep2:\n", - " component: port[6]\n", - " instance: tier_0[9]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[2]\n", - " instance: tier_1[10]\n", - " ep2:\n", - " component: port[6]\n", - " instance: tier_0[10]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[3]\n", - " instance: tier_1[10]\n", - " ep2:\n", - " component: port[6]\n", - " instance: tier_0[11]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[0]\n", - " instance: tier_1[11]\n", - " ep2:\n", - " component: port[7]\n", - " instance: tier_0[8]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[1]\n", - " instance: tier_1[11]\n", - " ep2:\n", - " component: port[7]\n", - " instance: tier_0[9]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[2]\n", - " instance: tier_1[11]\n", - " ep2:\n", - " component: port[7]\n", - " instance: tier_0[10]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[3]\n", - " instance: tier_1[11]\n", - " ep2:\n", - " component: port[7]\n", - " instance: tier_0[11]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[0]\n", - " instance: tier_1[12]\n", - " ep2:\n", - " component: port[4]\n", - " instance: tier_0[12]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[1]\n", - " instance: tier_1[12]\n", - " ep2:\n", - " component: port[4]\n", - " instance: tier_0[13]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[2]\n", - " instance: tier_1[12]\n", - " ep2:\n", - " component: port[4]\n", - " instance: tier_0[14]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[3]\n", - " instance: tier_1[12]\n", - " ep2:\n", - " component: port[4]\n", - " instance: tier_0[15]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[0]\n", - " instance: tier_1[13]\n", - " ep2:\n", - " component: port[5]\n", - " instance: tier_0[12]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[1]\n", - " instance: tier_1[13]\n", - " ep2:\n", - " component: port[5]\n", - " instance: tier_0[13]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[2]\n", - " instance: tier_1[13]\n", - " ep2:\n", - " component: port[5]\n", - " instance: tier_0[14]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[3]\n", - " instance: tier_1[13]\n", - " ep2:\n", - " component: port[5]\n", - " instance: tier_0[15]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[0]\n", - " instance: tier_1[14]\n", - " ep2:\n", - " component: port[6]\n", - " instance: tier_0[12]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[1]\n", - " instance: tier_1[14]\n", - " ep2:\n", - " component: port[6]\n", - " instance: tier_0[13]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[2]\n", - " instance: tier_1[14]\n", - " ep2:\n", - " component: port[6]\n", - " instance: tier_0[14]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[3]\n", - " instance: tier_1[14]\n", - " ep2:\n", - " component: port[6]\n", - " instance: tier_0[15]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[0]\n", - " instance: tier_1[15]\n", - " ep2:\n", - " component: port[7]\n", - " instance: tier_0[12]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[1]\n", - " instance: tier_1[15]\n", - " ep2:\n", - " component: port[7]\n", - " instance: tier_0[13]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[2]\n", - " instance: tier_1[15]\n", - " ep2:\n", - " component: port[7]\n", - " instance: tier_0[14]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[3]\n", - " instance: tier_1[15]\n", - " ep2:\n", - " component: port[7]\n", - " instance: tier_0[15]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[0]\n", - " instance: tier_1[16]\n", - " ep2:\n", - " component: port[4]\n", - " instance: tier_0[16]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[1]\n", - " instance: tier_1[16]\n", - " ep2:\n", - " component: port[4]\n", - " instance: tier_0[17]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[2]\n", - " instance: tier_1[16]\n", - " ep2:\n", - " component: port[4]\n", - " instance: tier_0[18]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[3]\n", - " instance: tier_1[16]\n", - " ep2:\n", - " component: port[4]\n", - " instance: tier_0[19]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[0]\n", - " instance: tier_1[17]\n", - " ep2:\n", - " component: port[5]\n", - " instance: tier_0[16]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[1]\n", - " instance: tier_1[17]\n", - " ep2:\n", - " component: port[5]\n", - " instance: tier_0[17]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[2]\n", - " instance: tier_1[17]\n", - " ep2:\n", - " component: port[5]\n", - " instance: tier_0[18]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[3]\n", - " instance: tier_1[17]\n", - " ep2:\n", - " component: port[5]\n", - " instance: tier_0[19]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[0]\n", - " instance: tier_1[18]\n", - " ep2:\n", - " component: port[6]\n", - " instance: tier_0[16]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[1]\n", - " instance: tier_1[18]\n", - " ep2:\n", - " component: port[6]\n", - " instance: tier_0[17]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[2]\n", - " instance: tier_1[18]\n", - " ep2:\n", - " component: port[6]\n", - " instance: tier_0[18]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[3]\n", - " instance: tier_1[18]\n", - " ep2:\n", - " component: port[6]\n", - " instance: tier_0[19]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[0]\n", - " instance: tier_1[19]\n", - " ep2:\n", - " component: port[7]\n", - " instance: tier_0[16]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[1]\n", - " instance: tier_1[19]\n", - " ep2:\n", - " component: port[7]\n", - " instance: tier_0[17]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[2]\n", - " instance: tier_1[19]\n", - " ep2:\n", - " component: port[7]\n", - " instance: tier_0[18]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[3]\n", - " instance: tier_1[19]\n", - " ep2:\n", - " component: port[7]\n", - " instance: tier_0[19]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[0]\n", - " instance: tier_1[20]\n", - " ep2:\n", - " component: port[4]\n", - " instance: tier_0[20]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[1]\n", - " instance: tier_1[20]\n", - " ep2:\n", - " component: port[4]\n", - " instance: tier_0[21]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[2]\n", - " instance: tier_1[20]\n", - " ep2:\n", - " component: port[4]\n", - " instance: tier_0[22]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[3]\n", - " instance: tier_1[20]\n", - " ep2:\n", - " component: port[4]\n", - " instance: tier_0[23]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[0]\n", - " instance: tier_1[21]\n", - " ep2:\n", - " component: port[5]\n", - " instance: tier_0[20]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[1]\n", - " instance: tier_1[21]\n", - " ep2:\n", - " component: port[5]\n", - " instance: tier_0[21]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[2]\n", - " instance: tier_1[21]\n", - " ep2:\n", - " component: port[5]\n", - " instance: tier_0[22]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[3]\n", - " instance: tier_1[21]\n", - " ep2:\n", - " component: port[5]\n", - " instance: tier_0[23]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[0]\n", - " instance: tier_1[22]\n", - " ep2:\n", - " component: port[6]\n", - " instance: tier_0[20]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[1]\n", - " instance: tier_1[22]\n", - " ep2:\n", - " component: port[6]\n", - " instance: tier_0[21]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[2]\n", - " instance: tier_1[22]\n", - " ep2:\n", - " component: port[6]\n", - " instance: tier_0[22]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[3]\n", - " instance: tier_1[22]\n", - " ep2:\n", - " component: port[6]\n", - " instance: tier_0[23]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[0]\n", - " instance: tier_1[23]\n", - " ep2:\n", - " component: port[7]\n", - " instance: tier_0[20]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[1]\n", - " instance: tier_1[23]\n", - " ep2:\n", - " component: port[7]\n", - " instance: tier_0[21]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[2]\n", - " instance: tier_1[23]\n", - " ep2:\n", - " component: port[7]\n", - " instance: tier_0[22]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[3]\n", - " instance: tier_1[23]\n", - " ep2:\n", - " component: port[7]\n", - " instance: tier_0[23]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[0]\n", - " instance: tier_1[24]\n", - " ep2:\n", - " component: port[4]\n", - " instance: tier_0[24]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[1]\n", - " instance: tier_1[24]\n", - " ep2:\n", - " component: port[4]\n", - " instance: tier_0[25]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[2]\n", - " instance: tier_1[24]\n", - " ep2:\n", - " component: port[4]\n", - " instance: tier_0[26]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[3]\n", - " instance: tier_1[24]\n", - " ep2:\n", - " component: port[4]\n", - " instance: tier_0[27]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[0]\n", - " instance: tier_1[25]\n", - " ep2:\n", - " component: port[5]\n", - " instance: tier_0[24]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[1]\n", - " instance: tier_1[25]\n", - " ep2:\n", - " component: port[5]\n", - " instance: tier_0[25]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[2]\n", - " instance: tier_1[25]\n", - " ep2:\n", - " component: port[5]\n", - " instance: tier_0[26]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[3]\n", - " instance: tier_1[25]\n", - " ep2:\n", - " component: port[5]\n", - " instance: tier_0[27]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[0]\n", - " instance: tier_1[26]\n", - " ep2:\n", - " component: port[6]\n", - " instance: tier_0[24]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[1]\n", - " instance: tier_1[26]\n", - " ep2:\n", - " component: port[6]\n", - " instance: tier_0[25]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[2]\n", - " instance: tier_1[26]\n", - " ep2:\n", - " component: port[6]\n", - " instance: tier_0[26]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[3]\n", - " instance: tier_1[26]\n", - " ep2:\n", - " component: port[6]\n", - " instance: tier_0[27]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[0]\n", - " instance: tier_1[27]\n", - " ep2:\n", - " component: port[7]\n", - " instance: tier_0[24]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[1]\n", - " instance: tier_1[27]\n", - " ep2:\n", - " component: port[7]\n", - " instance: tier_0[25]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[2]\n", - " instance: tier_1[27]\n", - " ep2:\n", - " component: port[7]\n", - " instance: tier_0[26]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[3]\n", - " instance: tier_1[27]\n", - " ep2:\n", - " component: port[7]\n", - " instance: tier_0[27]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[0]\n", - " instance: tier_1[28]\n", - " ep2:\n", - " component: port[4]\n", - " instance: tier_0[28]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[1]\n", - " instance: tier_1[28]\n", - " ep2:\n", - " component: port[4]\n", - " instance: tier_0[29]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[2]\n", - " instance: tier_1[28]\n", - " ep2:\n", - " component: port[4]\n", - " instance: tier_0[30]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[3]\n", - " instance: tier_1[28]\n", - " ep2:\n", - " component: port[4]\n", - " instance: tier_0[31]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[0]\n", - " instance: tier_1[29]\n", - " ep2:\n", - " component: port[5]\n", - " instance: tier_0[28]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[1]\n", - " instance: tier_1[29]\n", - " ep2:\n", - " component: port[5]\n", - " instance: tier_0[29]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[2]\n", - " instance: tier_1[29]\n", - " ep2:\n", - " component: port[5]\n", - " instance: tier_0[30]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[3]\n", - " instance: tier_1[29]\n", - " ep2:\n", - " component: port[5]\n", - " instance: tier_0[31]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[0]\n", - " instance: tier_1[30]\n", - " ep2:\n", - " component: port[6]\n", - " instance: tier_0[28]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[1]\n", - " instance: tier_1[30]\n", - " ep2:\n", - " component: port[6]\n", - " instance: tier_0[29]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[2]\n", - " instance: tier_1[30]\n", - " ep2:\n", - " component: port[6]\n", - " instance: tier_0[30]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[3]\n", - " instance: tier_1[30]\n", - " ep2:\n", - " component: port[6]\n", - " instance: tier_0[31]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[0]\n", - " instance: tier_1[31]\n", - " ep2:\n", - " component: port[7]\n", - " instance: tier_0[28]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[1]\n", - " instance: tier_1[31]\n", - " ep2:\n", - " component: port[7]\n", - " instance: tier_0[29]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[2]\n", - " instance: tier_1[31]\n", - " ep2:\n", - " component: port[7]\n", - " instance: tier_0[30]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[3]\n", - " instance: tier_1[31]\n", - " ep2:\n", - " component: port[7]\n", - " instance: tier_0[31]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[0]\n", - " instance: tier_2[0]\n", - " ep2:\n", - " component: port[4]\n", - " instance: tier_1[0]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[1]\n", - " instance: tier_2[0]\n", - " ep2:\n", - " component: port[4]\n", - " instance: tier_1[4]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[2]\n", - " instance: tier_2[0]\n", - " ep2:\n", - " component: port[4]\n", - " instance: tier_1[8]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[3]\n", - " instance: tier_2[0]\n", - " ep2:\n", - " component: port[4]\n", - " instance: tier_1[12]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[4]\n", - " instance: tier_2[0]\n", - " ep2:\n", - " component: port[4]\n", - " instance: tier_1[16]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[5]\n", - " instance: tier_2[0]\n", - " ep2:\n", - " component: port[4]\n", - " instance: tier_1[20]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[6]\n", - " instance: tier_2[0]\n", - " ep2:\n", - " component: port[4]\n", - " instance: tier_1[24]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[7]\n", - " instance: tier_2[0]\n", - " ep2:\n", - " component: port[4]\n", - " instance: tier_1[28]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[0]\n", - " instance: tier_2[1]\n", - " ep2:\n", - " component: port[5]\n", - " instance: tier_1[0]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[1]\n", - " instance: tier_2[1]\n", - " ep2:\n", - " component: port[5]\n", - " instance: tier_1[4]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[2]\n", - " instance: tier_2[1]\n", - " ep2:\n", - " component: port[5]\n", - " instance: tier_1[8]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[3]\n", - " instance: tier_2[1]\n", - " ep2:\n", - " component: port[5]\n", - " instance: tier_1[12]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[4]\n", - " instance: tier_2[1]\n", - " ep2:\n", - " component: port[5]\n", - " instance: tier_1[16]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[5]\n", - " instance: tier_2[1]\n", - " ep2:\n", - " component: port[5]\n", - " instance: tier_1[20]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[6]\n", - " instance: tier_2[1]\n", - " ep2:\n", - " component: port[5]\n", - " instance: tier_1[24]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[7]\n", - " instance: tier_2[1]\n", - " ep2:\n", - " component: port[5]\n", - " instance: tier_1[28]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[0]\n", - " instance: tier_2[2]\n", - " ep2:\n", - " component: port[6]\n", - " instance: tier_1[0]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[1]\n", - " instance: tier_2[2]\n", - " ep2:\n", - " component: port[6]\n", - " instance: tier_1[4]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[2]\n", - " instance: tier_2[2]\n", - " ep2:\n", - " component: port[6]\n", - " instance: tier_1[8]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[3]\n", - " instance: tier_2[2]\n", - " ep2:\n", - " component: port[6]\n", - " instance: tier_1[12]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[4]\n", - " instance: tier_2[2]\n", - " ep2:\n", - " component: port[6]\n", - " instance: tier_1[16]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[5]\n", - " instance: tier_2[2]\n", - " ep2:\n", - " component: port[6]\n", - " instance: tier_1[20]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[6]\n", - " instance: tier_2[2]\n", - " ep2:\n", - " component: port[6]\n", - " instance: tier_1[24]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[7]\n", - " instance: tier_2[2]\n", - " ep2:\n", - " component: port[6]\n", - " instance: tier_1[28]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[0]\n", - " instance: tier_2[3]\n", - " ep2:\n", - " component: port[7]\n", - " instance: tier_1[0]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[1]\n", - " instance: tier_2[3]\n", - " ep2:\n", - " component: port[7]\n", - " instance: tier_1[4]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[2]\n", - " instance: tier_2[3]\n", - " ep2:\n", - " component: port[7]\n", - " instance: tier_1[8]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[3]\n", - " instance: tier_2[3]\n", - " ep2:\n", - " component: port[7]\n", - " instance: tier_1[12]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[4]\n", - " instance: tier_2[3]\n", - " ep2:\n", - " component: port[7]\n", - " instance: tier_1[16]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[5]\n", - " instance: tier_2[3]\n", - " ep2:\n", - " component: port[7]\n", - " instance: tier_1[20]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[6]\n", - " instance: tier_2[3]\n", - " ep2:\n", - " component: port[7]\n", - " instance: tier_1[24]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[7]\n", - " instance: tier_2[3]\n", - " ep2:\n", - " component: port[7]\n", - " instance: tier_1[28]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[0]\n", - " instance: tier_2[4]\n", - " ep2:\n", - " component: port[4]\n", - " instance: tier_1[1]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[1]\n", - " instance: tier_2[4]\n", - " ep2:\n", - " component: port[4]\n", - " instance: tier_1[5]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[2]\n", - " instance: tier_2[4]\n", - " ep2:\n", - " component: port[4]\n", - " instance: tier_1[9]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[3]\n", - " instance: tier_2[4]\n", - " ep2:\n", - " component: port[4]\n", - " instance: tier_1[13]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[4]\n", - " instance: tier_2[4]\n", - " ep2:\n", - " component: port[4]\n", - " instance: tier_1[17]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[5]\n", - " instance: tier_2[4]\n", - " ep2:\n", - " component: port[4]\n", - " instance: tier_1[21]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[6]\n", - " instance: tier_2[4]\n", - " ep2:\n", - " component: port[4]\n", - " instance: tier_1[25]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[7]\n", - " instance: tier_2[4]\n", - " ep2:\n", - " component: port[4]\n", - " instance: tier_1[29]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[0]\n", - " instance: tier_2[5]\n", - " ep2:\n", - " component: port[5]\n", - " instance: tier_1[1]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[1]\n", - " instance: tier_2[5]\n", - " ep2:\n", - " component: port[5]\n", - " instance: tier_1[5]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[2]\n", - " instance: tier_2[5]\n", - " ep2:\n", - " component: port[5]\n", - " instance: tier_1[9]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[3]\n", - " instance: tier_2[5]\n", - " ep2:\n", - " component: port[5]\n", - " instance: tier_1[13]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[4]\n", - " instance: tier_2[5]\n", - " ep2:\n", - " component: port[5]\n", - " instance: tier_1[17]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[5]\n", - " instance: tier_2[5]\n", - " ep2:\n", - " component: port[5]\n", - " instance: tier_1[21]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[6]\n", - " instance: tier_2[5]\n", - " ep2:\n", - " component: port[5]\n", - " instance: tier_1[25]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[7]\n", - " instance: tier_2[5]\n", - " ep2:\n", - " component: port[5]\n", - " instance: tier_1[29]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[0]\n", - " instance: tier_2[6]\n", - " ep2:\n", - " component: port[6]\n", - " instance: tier_1[1]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[1]\n", - " instance: tier_2[6]\n", - " ep2:\n", - " component: port[6]\n", - " instance: tier_1[5]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[2]\n", - " instance: tier_2[6]\n", - " ep2:\n", - " component: port[6]\n", - " instance: tier_1[9]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[3]\n", - " instance: tier_2[6]\n", - " ep2:\n", - " component: port[6]\n", - " instance: tier_1[13]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[4]\n", - " instance: tier_2[6]\n", - " ep2:\n", - " component: port[6]\n", - " instance: tier_1[17]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[5]\n", - " instance: tier_2[6]\n", - " ep2:\n", - " component: port[6]\n", - " instance: tier_1[21]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[6]\n", - " instance: tier_2[6]\n", - " ep2:\n", - " component: port[6]\n", - " instance: tier_1[25]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[7]\n", - " instance: tier_2[6]\n", - " ep2:\n", - " component: port[6]\n", - " instance: tier_1[29]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[0]\n", - " instance: tier_2[7]\n", - " ep2:\n", - " component: port[7]\n", - " instance: tier_1[1]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[1]\n", - " instance: tier_2[7]\n", - " ep2:\n", - " component: port[7]\n", - " instance: tier_1[5]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[2]\n", - " instance: tier_2[7]\n", - " ep2:\n", - " component: port[7]\n", - " instance: tier_1[9]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[3]\n", - " instance: tier_2[7]\n", - " ep2:\n", - " component: port[7]\n", - " instance: tier_1[13]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[4]\n", - " instance: tier_2[7]\n", - " ep2:\n", - " component: port[7]\n", - " instance: tier_1[17]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[5]\n", - " instance: tier_2[7]\n", - " ep2:\n", - " component: port[7]\n", - " instance: tier_1[21]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[6]\n", - " instance: tier_2[7]\n", - " ep2:\n", - " component: port[7]\n", - " instance: tier_1[25]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[7]\n", - " instance: tier_2[7]\n", - " ep2:\n", - " component: port[7]\n", - " instance: tier_1[29]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[0]\n", - " instance: tier_2[8]\n", - " ep2:\n", - " component: port[4]\n", - " instance: tier_1[2]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[1]\n", - " instance: tier_2[8]\n", - " ep2:\n", - " component: port[4]\n", - " instance: tier_1[6]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[2]\n", - " instance: tier_2[8]\n", - " ep2:\n", - " component: port[4]\n", - " instance: tier_1[10]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[3]\n", - " instance: tier_2[8]\n", - " ep2:\n", - " component: port[4]\n", - " instance: tier_1[14]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[4]\n", - " instance: tier_2[8]\n", - " ep2:\n", - " component: port[4]\n", - " instance: tier_1[18]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[5]\n", - " instance: tier_2[8]\n", - " ep2:\n", - " component: port[4]\n", - " instance: tier_1[22]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[6]\n", - " instance: tier_2[8]\n", - " ep2:\n", - " component: port[4]\n", - " instance: tier_1[26]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[7]\n", - " instance: tier_2[8]\n", - " ep2:\n", - " component: port[4]\n", - " instance: tier_1[30]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[0]\n", - " instance: tier_2[9]\n", - " ep2:\n", - " component: port[5]\n", - " instance: tier_1[2]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[1]\n", - " instance: tier_2[9]\n", - " ep2:\n", - " component: port[5]\n", - " instance: tier_1[6]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[2]\n", - " instance: tier_2[9]\n", - " ep2:\n", - " component: port[5]\n", - " instance: tier_1[10]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[3]\n", - " instance: tier_2[9]\n", - " ep2:\n", - " component: port[5]\n", - " instance: tier_1[14]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[4]\n", - " instance: tier_2[9]\n", - " ep2:\n", - " component: port[5]\n", - " instance: tier_1[18]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[5]\n", - " instance: tier_2[9]\n", - " ep2:\n", - " component: port[5]\n", - " instance: tier_1[22]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[6]\n", - " instance: tier_2[9]\n", - " ep2:\n", - " component: port[5]\n", - " instance: tier_1[26]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[7]\n", - " instance: tier_2[9]\n", - " ep2:\n", - " component: port[5]\n", - " instance: tier_1[30]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[0]\n", - " instance: tier_2[10]\n", - " ep2:\n", - " component: port[6]\n", - " instance: tier_1[2]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[1]\n", - " instance: tier_2[10]\n", - " ep2:\n", - " component: port[6]\n", - " instance: tier_1[6]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[2]\n", - " instance: tier_2[10]\n", - " ep2:\n", - " component: port[6]\n", - " instance: tier_1[10]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[3]\n", - " instance: tier_2[10]\n", - " ep2:\n", - " component: port[6]\n", - " instance: tier_1[14]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[4]\n", - " instance: tier_2[10]\n", - " ep2:\n", - " component: port[6]\n", - " instance: tier_1[18]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[5]\n", - " instance: tier_2[10]\n", - " ep2:\n", - " component: port[6]\n", - " instance: tier_1[22]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[6]\n", - " instance: tier_2[10]\n", - " ep2:\n", - " component: port[6]\n", - " instance: tier_1[26]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[7]\n", - " instance: tier_2[10]\n", - " ep2:\n", - " component: port[6]\n", - " instance: tier_1[30]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[0]\n", - " instance: tier_2[11]\n", - " ep2:\n", - " component: port[7]\n", - " instance: tier_1[2]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[1]\n", - " instance: tier_2[11]\n", - " ep2:\n", - " component: port[7]\n", - " instance: tier_1[6]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[2]\n", - " instance: tier_2[11]\n", - " ep2:\n", - " component: port[7]\n", - " instance: tier_1[10]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[3]\n", - " instance: tier_2[11]\n", - " ep2:\n", - " component: port[7]\n", - " instance: tier_1[14]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[4]\n", - " instance: tier_2[11]\n", - " ep2:\n", - " component: port[7]\n", - " instance: tier_1[18]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[5]\n", - " instance: tier_2[11]\n", - " ep2:\n", - " component: port[7]\n", - " instance: tier_1[22]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[6]\n", - " instance: tier_2[11]\n", - " ep2:\n", - " component: port[7]\n", - " instance: tier_1[26]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[7]\n", - " instance: tier_2[11]\n", - " ep2:\n", - " component: port[7]\n", - " instance: tier_1[30]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[0]\n", - " instance: tier_2[12]\n", - " ep2:\n", - " component: port[4]\n", - " instance: tier_1[3]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[1]\n", - " instance: tier_2[12]\n", - " ep2:\n", - " component: port[4]\n", - " instance: tier_1[7]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[2]\n", - " instance: tier_2[12]\n", - " ep2:\n", - " component: port[4]\n", - " instance: tier_1[11]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[3]\n", - " instance: tier_2[12]\n", - " ep2:\n", - " component: port[4]\n", - " instance: tier_1[15]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[4]\n", - " instance: tier_2[12]\n", - " ep2:\n", - " component: port[4]\n", - " instance: tier_1[19]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[5]\n", - " instance: tier_2[12]\n", - " ep2:\n", - " component: port[4]\n", - " instance: tier_1[23]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[6]\n", - " instance: tier_2[12]\n", - " ep2:\n", - " component: port[4]\n", - " instance: tier_1[27]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[7]\n", - " instance: tier_2[12]\n", - " ep2:\n", - " component: port[4]\n", - " instance: tier_1[31]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[0]\n", - " instance: tier_2[13]\n", - " ep2:\n", - " component: port[5]\n", - " instance: tier_1[3]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[1]\n", - " instance: tier_2[13]\n", - " ep2:\n", - " component: port[5]\n", - " instance: tier_1[7]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[2]\n", - " instance: tier_2[13]\n", - " ep2:\n", - " component: port[5]\n", - " instance: tier_1[11]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[3]\n", - " instance: tier_2[13]\n", - " ep2:\n", - " component: port[5]\n", - " instance: tier_1[15]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[4]\n", - " instance: tier_2[13]\n", - " ep2:\n", - " component: port[5]\n", - " instance: tier_1[19]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[5]\n", - " instance: tier_2[13]\n", - " ep2:\n", - " component: port[5]\n", - " instance: tier_1[23]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[6]\n", - " instance: tier_2[13]\n", - " ep2:\n", - " component: port[5]\n", - " instance: tier_1[27]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[7]\n", - " instance: tier_2[13]\n", - " ep2:\n", - " component: port[5]\n", - " instance: tier_1[31]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[0]\n", - " instance: tier_2[14]\n", - " ep2:\n", - " component: port[6]\n", - " instance: tier_1[3]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[1]\n", - " instance: tier_2[14]\n", - " ep2:\n", - " component: port[6]\n", - " instance: tier_1[7]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[2]\n", - " instance: tier_2[14]\n", - " ep2:\n", - " component: port[6]\n", - " instance: tier_1[11]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[3]\n", - " instance: tier_2[14]\n", - " ep2:\n", - " component: port[6]\n", - " instance: tier_1[15]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[4]\n", - " instance: tier_2[14]\n", - " ep2:\n", - " component: port[6]\n", - " instance: tier_1[19]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[5]\n", - " instance: tier_2[14]\n", - " ep2:\n", - " component: port[6]\n", - " instance: tier_1[23]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[6]\n", - " instance: tier_2[14]\n", - " ep2:\n", - " component: port[6]\n", - " instance: tier_1[27]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[7]\n", - " instance: tier_2[14]\n", - " ep2:\n", - " component: port[6]\n", - " instance: tier_1[31]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[0]\n", - " instance: tier_2[15]\n", - " ep2:\n", - " component: port[7]\n", - " instance: tier_1[3]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[1]\n", - " instance: tier_2[15]\n", - " ep2:\n", - " component: port[7]\n", - " instance: tier_1[7]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[2]\n", - " instance: tier_2[15]\n", - " ep2:\n", - " component: port[7]\n", - " instance: tier_1[11]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[3]\n", - " instance: tier_2[15]\n", - " ep2:\n", - " component: port[7]\n", - " instance: tier_1[15]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[4]\n", - " instance: tier_2[15]\n", - " ep2:\n", - " component: port[7]\n", - " instance: tier_1[19]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[5]\n", - " instance: tier_2[15]\n", - " ep2:\n", - " component: port[7]\n", - " instance: tier_1[23]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[6]\n", - " instance: tier_2[15]\n", - " ep2:\n", - " component: port[7]\n", - " instance: tier_1[27]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "- ep1:\n", - " component: port[7]\n", - " instance: tier_2[15]\n", - " ep2:\n", - " component: port[7]\n", - " instance: tier_1[31]\n", - " link: tier_1_link\n", - " scheme: one2one\n", - "instances:\n", - "- count: 64\n", - " device: server\n", - " name: server\n", - "- count: 32\n", - " device: switch\n", - " name: tier_0\n", - "- count: 32\n", - " device: switch\n", - " name: tier_1\n", - "- count: 16\n", - " device: switch\n", - " name: tier_2\n", - "links:\n", - "- description: Link characteristics for connectivity between host and tier 0 switches\n", - " name: tier_0_link\n", - " physical:\n", - " bandwidth:\n", - " choice: gigabits_per_second\n", - " gigabits_per_second: 100\n", - "- description: Link characteristics for connectivity between tier 0 and tier 1 switches\n", - " name: tier_1_link\n", - " physical:\n", - " bandwidth:\n", - " choice: gigabits_per_second\n", - " gigabits_per_second: 200\n", - "- description: Link characteristics for connectivity between tier 1 and tier 2 switches\n", - " name: tier_2_link\n", - " physical:\n", - " bandwidth:\n", - " choice: gigabits_per_second\n", - " gigabits_per_second: 400\n", - "name: clos-fat-tree-fabric\n", - "\n" - ] - } - ], + "outputs": [], "source": [ "server = Server()\n", "switch = Switch(port_count=8)\n", @@ -3296,2102 +81,10 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": null, "id": "d0db31e7", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "╙── server.16.mgmt.0\n", - " │\n", - " server.16.cpu.0\n", - " │\n", - " server.16.pciesw.0\n", - " ├── server.16.xpu.0\n", - " │ │\n", - " │ server.16.nvlsw.0\n", - " │ │\n", - " │ server.16.xpu.1 ─ server.16.pciesw.0\n", - " ├── server.16.nic.0\n", - " │ │\n", - " │ tier_0.8.port.0\n", - " │ │\n", - " │ tier_0.8.asic.0\n", - " │ ├── tier_0.8.port.1\n", - " │ │ │\n", - " │ │ server.16.nic.1 ─ server.16.pciesw.0\n", - " │ ├── tier_0.8.port.2\n", - " │ │ │\n", - " │ │ server.17.nic.0\n", - " │ │ │\n", - " │ │ server.17.pciesw.0\n", - " │ │ ├── server.17.xpu.0\n", - " │ │ │ │\n", - " │ │ │ server.17.nvlsw.0\n", - " │ │ │ │\n", - " │ │ │ server.17.xpu.1 ─ server.17.pciesw.0\n", - " │ │ ├── server.17.cpu.0\n", - " │ │ │ │\n", - " │ │ │ server.17.mgmt.0\n", - " │ │ ├── server.17.nic.1\n", - " │ │ │ │\n", - " │ │ │ tier_0.8.port.3 ─ tier_0.8.asic.0\n", - " │ │ └── ...\n", - " │ ├── tier_0.8.port.4\n", - " │ │ │\n", - " │ │ tier_1.8.port.0\n", - " │ │ │\n", - " │ │ tier_1.8.asic.0\n", - " │ │ ├── tier_1.8.port.1\n", - " │ │ │ │\n", - " │ │ │ tier_0.9.port.4\n", - " │ │ │ │\n", - " │ │ │ tier_0.9.asic.0\n", - " │ │ │ ├── tier_0.9.port.0\n", - " │ │ │ │ │\n", - " │ │ │ │ server.18.nic.0\n", - " │ │ │ │ │\n", - " │ │ │ │ server.18.pciesw.0\n", - " │ │ │ │ ├── server.18.xpu.0\n", - " │ │ │ │ │ │\n", - " │ │ │ │ │ server.18.nvlsw.0\n", - " │ │ │ │ │ │\n", - " │ │ │ │ │ server.18.xpu.1 ─ server.18.pciesw.0\n", - " │ │ │ │ ├── server.18.cpu.0\n", - " │ │ │ │ │ │\n", - " │ │ │ │ │ server.18.mgmt.0\n", - " │ │ │ │ ├── server.18.nic.1\n", - " │ │ │ │ │ │\n", - " │ │ │ │ │ tier_0.9.port.1 ─ tier_0.9.asic.0\n", - " │ │ │ │ └── ...\n", - " │ │ │ ├── tier_0.9.port.2\n", - " │ │ │ │ │\n", - " │ │ │ │ server.19.nic.0\n", - " │ │ │ │ │\n", - " │ │ │ │ server.19.pciesw.0\n", - " │ │ │ │ ├── server.19.xpu.0\n", - " │ │ │ │ │ │\n", - " │ │ │ │ │ server.19.nvlsw.0\n", - " │ │ │ │ │ │\n", - " │ │ │ │ │ server.19.xpu.1 ─ server.19.pciesw.0\n", - " │ │ │ │ ├── server.19.cpu.0\n", - " │ │ │ │ │ │\n", - " │ │ │ │ │ server.19.mgmt.0\n", - " │ │ │ │ ├── server.19.nic.1\n", - " │ │ │ │ │ │\n", - " │ │ │ │ │ tier_0.9.port.3 ─ tier_0.9.asic.0\n", - " │ │ │ │ └── ...\n", - " │ │ │ ├── tier_0.9.port.5\n", - " │ │ │ │ │\n", - " │ │ │ │ tier_1.9.port.1\n", - " │ │ │ │ │\n", - " │ │ │ │ tier_1.9.asic.0\n", - " │ │ │ │ ├── tier_1.9.port.0\n", - " │ │ │ │ │ │\n", - " │ │ │ │ │ tier_0.8.port.5 ─ tier_0.8.asic.0\n", - " │ │ │ │ ├── tier_1.9.port.2\n", - " │ │ │ │ │ │\n", - " │ │ │ │ │ tier_0.10.port.5\n", - " │ │ │ │ │ │\n", - " │ │ │ │ │ tier_0.10.asic.0\n", - " │ │ │ │ │ ├── tier_0.10.port.0\n", - " │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ server.20.nic.0\n", - " │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ server.20.pciesw.0\n", - " │ │ │ │ │ │ ├── server.20.xpu.0\n", - " │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ server.20.nvlsw.0\n", - " │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ server.20.xpu.1 ─ server.20.pciesw.0\n", - " │ │ │ │ │ │ ├── server.20.cpu.0\n", - " │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ server.20.mgmt.0\n", - " │ │ │ │ │ │ ├── server.20.nic.1\n", - " │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ tier_0.10.port.1 ─ tier_0.10.asic.0\n", - " │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ ├── tier_0.10.port.2\n", - " │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ server.21.nic.0\n", - " │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ server.21.pciesw.0\n", - " │ │ │ │ │ │ ├── server.21.xpu.0\n", - " │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ server.21.nvlsw.0\n", - " │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ server.21.xpu.1 ─ server.21.pciesw.0\n", - " │ │ │ │ │ │ ├── server.21.cpu.0\n", - " │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ server.21.mgmt.0\n", - " │ │ │ │ │ │ ├── server.21.nic.1\n", - " │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ tier_0.10.port.3 ─ tier_0.10.asic.0\n", - " │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ ├── tier_0.10.port.4\n", - " │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ tier_1.8.port.2 ─ tier_1.8.asic.0\n", - " │ │ │ │ │ ├── tier_0.10.port.6\n", - " │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ tier_1.10.port.2\n", - " │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ tier_1.10.asic.0\n", - " │ │ │ │ │ │ ├── tier_1.10.port.0\n", - " │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ tier_0.8.port.6 ─ tier_0.8.asic.0\n", - " │ │ │ │ │ │ ├── tier_1.10.port.1\n", - " │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ tier_0.9.port.6 ─ tier_0.9.asic.0\n", - " │ │ │ │ │ │ ├── tier_1.10.port.3\n", - " │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ tier_0.11.port.6\n", - " │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ tier_0.11.asic.0\n", - " │ │ │ │ │ │ │ ├── tier_0.11.port.0\n", - " │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ server.22.nic.0\n", - " │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ server.22.pciesw.0\n", - " │ │ │ │ │ │ │ │ ├── server.22.xpu.0\n", - " │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ server.22.nvlsw.0\n", - " │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ server.22.xpu.1 ─ server.22.pciesw.0\n", - " │ │ │ │ │ │ │ │ ├── server.22.cpu.0\n", - " │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ server.22.mgmt.0\n", - " │ │ │ │ │ │ │ │ ├── server.22.nic.1\n", - " │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ tier_0.11.port.1 ─ tier_0.11.asic.0\n", - " │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ ├── tier_0.11.port.2\n", - " │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ server.23.nic.0\n", - " │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ server.23.pciesw.0\n", - " │ │ │ │ │ │ │ │ ├── server.23.xpu.0\n", - " │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ server.23.nvlsw.0\n", - " │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ server.23.xpu.1 ─ server.23.pciesw.0\n", - " │ │ │ │ │ │ │ │ ├── server.23.cpu.0\n", - " │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ server.23.mgmt.0\n", - " │ │ │ │ │ │ │ │ ├── server.23.nic.1\n", - " │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ tier_0.11.port.3 ─ tier_0.11.asic.0\n", - " │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ ├── tier_0.11.port.4\n", - " │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ tier_1.8.port.3 ─ tier_1.8.asic.0\n", - " │ │ │ │ │ │ │ ├── tier_0.11.port.5\n", - " │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ tier_1.9.port.3 ─ tier_1.9.asic.0\n", - " │ │ │ │ │ │ │ ├── tier_0.11.port.7\n", - " │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ tier_1.11.port.3\n", - " │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ tier_1.11.asic.0\n", - " │ │ │ │ │ │ │ │ ├── tier_1.11.port.0\n", - " │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ tier_0.8.port.7 ─ tier_0.8.asic.0\n", - " │ │ │ │ │ │ │ │ ├── tier_1.11.port.1\n", - " │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ tier_0.9.port.7 ─ tier_0.9.asic.0\n", - " │ │ │ │ │ │ │ │ ├── tier_1.11.port.2\n", - " │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ tier_0.10.port.7 ─ tier_0.10.asic.0\n", - " │ │ │ │ │ │ │ │ ├── tier_1.11.port.4\n", - " │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ tier_2.12.port.2\n", - " │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ tier_2.12.asic.0\n", - " │ │ │ │ │ │ │ │ │ ├── tier_2.12.port.0\n", - " │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ tier_1.3.port.4\n", - " │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ tier_1.3.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ ├── tier_1.3.port.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ tier_0.0.port.7\n", - " │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ tier_0.0.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.0.port.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ server.0.nic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ server.0.pciesw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ ├── server.0.xpu.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ server.0.nvlsw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ server.0.xpu.1 ─ server.0.pciesw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ ├── server.0.cpu.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ server.0.mgmt.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ ├── server.0.nic.1\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.0.port.1 ─ tier_0.0.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.0.port.2\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ server.1.nic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ server.1.pciesw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ ├── server.1.xpu.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ server.1.nvlsw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ server.1.xpu.1 ─ server.1.pciesw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ ├── server.1.cpu.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ server.1.mgmt.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ ├── server.1.nic.1\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.0.port.3 ─ tier_0.0.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.0.port.4\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ tier_1.0.port.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ tier_1.0.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.0.port.1\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.1.port.4\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.1.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.1.port.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.2.nic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.2.pciesw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.2.xpu.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.2.nvlsw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.2.xpu.1 ─ server.2.pciesw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.2.cpu.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.2.mgmt.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.2.nic.1\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.1.port.1 ─ tier_0.1.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.1.port.2\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.3.nic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.3.pciesw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.3.xpu.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.3.nvlsw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.3.xpu.1 ─ server.3.pciesw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.3.cpu.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.3.mgmt.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.3.nic.1\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.1.port.3 ─ tier_0.1.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.1.port.5\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.1.port.1\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.1.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.1.port.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.0.port.5 ─ tier_0.0.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.1.port.2\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.2.port.5\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.2.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.2.port.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.4.nic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.4.pciesw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.4.xpu.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.4.nvlsw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.4.xpu.1 ─ server.4.pciesw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.4.cpu.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.4.mgmt.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.4.nic.1\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.2.port.1 ─ tier_0.2.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.2.port.2\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.5.nic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.5.pciesw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.5.xpu.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.5.nvlsw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.5.xpu.1 ─ server.5.pciesw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.5.cpu.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.5.mgmt.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.5.nic.1\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.2.port.3 ─ tier_0.2.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.2.port.4\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.0.port.2 ─ tier_1.0.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.2.port.6\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.2.port.2\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.2.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.2.port.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.0.port.6 ─ tier_0.0.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.2.port.1\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.1.port.6 ─ tier_0.1.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.2.port.3\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.3.port.6\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.3.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.3.port.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.6.nic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.6.pciesw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.6.xpu.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.6.nvlsw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.6.xpu.1 ─ server.6.pciesw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.6.cpu.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.6.mgmt.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.6.nic.1\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.3.port.1 ─ tier_0.3.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.3.port.2\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.7.nic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.7.pciesw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.7.xpu.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.7.nvlsw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.7.xpu.1 ─ server.7.pciesw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.7.cpu.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.7.mgmt.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.7.nic.1\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.3.port.3 ─ tier_0.3.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.3.port.4\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.0.port.3 ─ tier_1.0.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.3.port.5\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.1.port.3 ─ tier_1.1.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.3.port.7\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.3.port.3 ─ tier_1.3.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.2.port.4\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_2.8.port.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_2.8.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.8.port.1\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.6.port.4\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.6.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.6.port.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.4.port.6\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.4.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.4.port.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.8.nic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.8.pciesw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.8.xpu.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.8.nvlsw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.8.xpu.1 ─ server.8.pciesw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.8.cpu.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.8.mgmt.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.8.nic.1\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.4.port.1 ─ tier_0.4.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.4.port.2\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.9.nic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.9.pciesw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.9.xpu.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.9.nvlsw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.9.xpu.1 ─ server.9.pciesw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.9.cpu.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.9.mgmt.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.9.nic.1\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.4.port.3 ─ tier_0.4.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.4.port.4\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.4.port.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.4.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.4.port.1\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.5.port.4\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.5.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.5.port.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.10.nic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.10.pciesw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.10.xpu.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.10.nvlsw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.10.xpu.1 ─ server.10.pciesw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.10.cpu.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.10.mgmt.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.10.nic.1\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.5.port.1 ─ tier_0.5.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.5.port.2\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.11.nic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.11.pciesw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.11.xpu.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.11.nvlsw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.11.xpu.1 ─ server.11.pciesw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.11.cpu.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.11.mgmt.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.11.nic.1\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.5.port.3 ─ tier_0.5.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.5.port.5\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.5.port.1\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.5.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.5.port.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.4.port.5 ─ tier_0.4.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.5.port.2\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.6.port.5\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.6.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.6.port.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.12.nic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.12.pciesw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.12.xpu.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.12.nvlsw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.12.xpu.1 ─ server.12.pciesw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.12.cpu.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.12.mgmt.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.12.nic.1\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.6.port.1 ─ tier_0.6.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.6.port.2\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.13.nic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.13.pciesw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.13.xpu.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.13.nvlsw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.13.xpu.1 ─ server.13.pciesw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.13.cpu.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.13.mgmt.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.13.nic.1\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.6.port.3 ─ tier_0.6.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.6.port.4\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.4.port.2 ─ tier_1.4.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.6.port.6\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.6.port.2 ─ tier_1.6.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.6.port.7\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.7.port.2\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.7.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.7.port.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.4.port.7 ─ tier_0.4.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.7.port.1\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.5.port.7 ─ tier_0.5.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.7.port.3\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.7.port.7\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.7.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.7.port.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.14.nic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.14.pciesw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.14.xpu.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.14.nvlsw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.14.xpu.1 ─ server.14.pciesw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.14.cpu.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.14.mgmt.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.14.nic.1\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.7.port.1 ─ tier_0.7.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.7.port.2\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.15.nic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.15.pciesw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.15.xpu.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.15.nvlsw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.15.xpu.1 ─ server.15.pciesw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.15.cpu.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.15.mgmt.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.15.nic.1\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.7.port.3 ─ tier_0.7.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.7.port.4\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.4.port.3 ─ tier_1.4.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.7.port.5\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.5.port.3 ─ tier_1.5.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.7.port.6\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.6.port.3 ─ tier_1.6.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.7.port.4\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_2.12.port.1 ─ tier_2.12.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.7.port.5\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_2.13.port.1\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_2.13.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.13.port.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.3.port.5 ─ tier_1.3.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.13.port.2\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.11.port.5 ─ tier_1.11.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.13.port.3\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.15.port.5\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.15.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.15.port.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.12.port.7\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.12.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.12.port.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.24.nic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.24.pciesw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.24.xpu.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.24.nvlsw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.24.xpu.1 ─ server.24.pciesw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.24.cpu.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.24.mgmt.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.24.nic.1\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.12.port.1 ─ tier_0.12.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.12.port.2\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.25.nic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.25.pciesw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.25.xpu.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.25.nvlsw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.25.xpu.1 ─ server.25.pciesw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.25.cpu.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.25.mgmt.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.25.nic.1\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.12.port.3 ─ tier_0.12.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.12.port.4\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.12.port.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.12.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.12.port.1\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.13.port.4\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.13.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.13.port.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.26.nic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.26.pciesw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.26.xpu.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.26.nvlsw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.26.xpu.1 ─ server.26.pciesw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.26.cpu.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.26.mgmt.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.26.nic.1\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.13.port.1 ─ tier_0.13.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.13.port.2\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.27.nic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.27.pciesw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.27.xpu.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.27.nvlsw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.27.xpu.1 ─ server.27.pciesw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.27.cpu.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.27.mgmt.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.27.nic.1\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.13.port.3 ─ tier_0.13.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.13.port.5\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.13.port.1\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.13.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.13.port.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.12.port.5 ─ tier_0.12.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.13.port.2\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.14.port.5\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.14.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.14.port.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.28.nic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.28.pciesw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.28.xpu.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.28.nvlsw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.28.xpu.1 ─ server.28.pciesw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.28.cpu.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.28.mgmt.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.28.nic.1\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.14.port.1 ─ tier_0.14.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.14.port.2\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.29.nic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.29.pciesw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.29.xpu.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.29.nvlsw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.29.xpu.1 ─ server.29.pciesw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.29.cpu.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.29.mgmt.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.29.nic.1\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.14.port.3 ─ tier_0.14.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.14.port.4\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.12.port.2 ─ tier_1.12.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.14.port.6\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.14.port.2\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.14.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.14.port.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.12.port.6 ─ tier_0.12.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.14.port.1\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.13.port.6 ─ tier_0.13.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.14.port.3\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.15.port.6\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.15.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.15.port.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.30.nic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.30.pciesw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.30.xpu.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.30.nvlsw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.30.xpu.1 ─ server.30.pciesw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.30.cpu.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.30.mgmt.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.30.nic.1\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.15.port.1 ─ tier_0.15.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.15.port.2\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.31.nic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.31.pciesw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.31.xpu.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.31.nvlsw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.31.xpu.1 ─ server.31.pciesw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.31.cpu.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.31.mgmt.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.31.nic.1\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.15.port.3 ─ tier_0.15.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.15.port.4\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.12.port.3 ─ tier_1.12.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.15.port.5\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.13.port.3 ─ tier_1.13.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.15.port.7\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.15.port.3 ─ tier_1.15.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.14.port.4\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_2.8.port.3 ─ tier_2.8.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.14.port.5\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_2.9.port.3\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_2.9.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.9.port.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.2.port.5 ─ tier_1.2.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.9.port.1\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.6.port.5 ─ tier_1.6.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.9.port.2\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.10.port.5 ─ tier_1.10.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.9.port.4\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.18.port.5\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.18.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.18.port.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.16.port.6\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.16.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.16.port.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.32.nic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.32.pciesw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.32.xpu.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.32.nvlsw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.32.xpu.1 ─ server.32.pciesw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.32.cpu.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.32.mgmt.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.32.nic.1\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.16.port.1 ─ tier_0.16.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.16.port.2\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.33.nic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.33.pciesw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.33.xpu.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.33.nvlsw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.33.xpu.1 ─ server.33.pciesw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.33.cpu.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.33.mgmt.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.33.nic.1\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.16.port.3 ─ tier_0.16.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.16.port.4\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.16.port.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.16.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.16.port.1\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.17.port.4\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.17.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.17.port.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.34.nic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.34.pciesw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.34.xpu.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.34.nvlsw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.34.xpu.1 ─ server.34.pciesw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.34.cpu.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.34.mgmt.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.34.nic.1\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.17.port.1 ─ tier_0.17.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.17.port.2\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.35.nic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.35.pciesw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.35.xpu.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.35.nvlsw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.35.xpu.1 ─ server.35.pciesw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.35.cpu.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.35.mgmt.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.35.nic.1\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.17.port.3 ─ tier_0.17.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.17.port.5\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.17.port.1\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.17.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.17.port.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.16.port.5 ─ tier_0.16.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.17.port.2\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.18.port.5\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.18.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.18.port.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.36.nic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.36.pciesw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.36.xpu.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.36.nvlsw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.36.xpu.1 ─ server.36.pciesw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.36.cpu.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.36.mgmt.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.36.nic.1\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.18.port.1 ─ tier_0.18.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.18.port.2\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.37.nic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.37.pciesw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.37.xpu.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.37.nvlsw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.37.xpu.1 ─ server.37.pciesw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.37.cpu.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.37.mgmt.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.37.nic.1\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.18.port.3 ─ tier_0.18.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.18.port.4\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.16.port.2 ─ tier_1.16.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.18.port.6\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.18.port.2 ─ tier_1.18.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.18.port.7\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.19.port.2\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.19.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.19.port.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.16.port.7 ─ tier_0.16.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.19.port.1\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.17.port.7 ─ tier_0.17.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.19.port.3\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.19.port.7\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.19.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.19.port.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.38.nic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.38.pciesw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.38.xpu.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.38.nvlsw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.38.xpu.1 ─ server.38.pciesw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.38.cpu.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.38.mgmt.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.38.nic.1\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.19.port.1 ─ tier_0.19.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.19.port.2\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.39.nic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.39.pciesw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.39.xpu.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.39.nvlsw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.39.xpu.1 ─ server.39.pciesw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.39.cpu.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.39.mgmt.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.39.nic.1\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.19.port.3 ─ tier_0.19.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.19.port.4\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.16.port.3 ─ tier_1.16.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.19.port.5\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.17.port.3 ─ tier_1.17.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.19.port.6\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.18.port.3 ─ tier_1.18.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.19.port.4\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_2.12.port.4 ─ tier_2.12.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.19.port.5\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_2.13.port.4 ─ tier_2.13.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.19.port.6\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_2.14.port.4\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_2.14.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.14.port.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.3.port.6 ─ tier_1.3.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.14.port.1\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.7.port.6 ─ tier_1.7.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.14.port.2\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.11.port.6 ─ tier_1.11.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.14.port.3\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.15.port.6 ─ tier_1.15.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.14.port.5\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.23.port.6\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.23.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.23.port.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.20.port.7\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.20.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.20.port.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.40.nic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.40.pciesw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.40.xpu.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.40.nvlsw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.40.xpu.1 ─ server.40.pciesw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.40.cpu.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.40.mgmt.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.40.nic.1\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.20.port.1 ─ tier_0.20.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.20.port.2\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.41.nic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.41.pciesw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.41.xpu.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.41.nvlsw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.41.xpu.1 ─ server.41.pciesw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.41.cpu.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.41.mgmt.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.41.nic.1\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.20.port.3 ─ tier_0.20.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.20.port.4\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.20.port.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.20.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.20.port.1\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.21.port.4\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.21.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.21.port.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.42.nic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.42.pciesw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.42.xpu.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.42.nvlsw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.42.xpu.1 ─ server.42.pciesw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.42.cpu.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.42.mgmt.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.42.nic.1\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.21.port.1 ─ tier_0.21.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.21.port.2\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.43.nic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.43.pciesw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.43.xpu.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.43.nvlsw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.43.xpu.1 ─ server.43.pciesw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.43.cpu.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.43.mgmt.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.43.nic.1\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.21.port.3 ─ tier_0.21.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.21.port.5\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.21.port.1\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.21.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.21.port.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.20.port.5 ─ tier_0.20.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.21.port.2\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.22.port.5\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.22.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.22.port.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.44.nic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.44.pciesw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.44.xpu.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.44.nvlsw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.44.xpu.1 ─ server.44.pciesw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.44.cpu.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.44.mgmt.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.44.nic.1\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.22.port.1 ─ tier_0.22.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.22.port.2\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.45.nic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.45.pciesw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.45.xpu.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.45.nvlsw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.45.xpu.1 ─ server.45.pciesw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.45.cpu.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.45.mgmt.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.45.nic.1\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.22.port.3 ─ tier_0.22.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.22.port.4\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.20.port.2 ─ tier_1.20.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.22.port.6\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.22.port.2\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.22.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.22.port.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.20.port.6 ─ tier_0.20.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.22.port.1\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.21.port.6 ─ tier_0.21.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.22.port.3\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.23.port.6\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.23.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.23.port.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.46.nic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.46.pciesw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.46.xpu.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.46.nvlsw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.46.xpu.1 ─ server.46.pciesw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.46.cpu.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.46.mgmt.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.46.nic.1\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.23.port.1 ─ tier_0.23.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.23.port.2\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.47.nic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.47.pciesw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.47.xpu.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.47.nvlsw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.47.xpu.1 ─ server.47.pciesw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.47.cpu.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.47.mgmt.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.47.nic.1\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.23.port.3 ─ tier_0.23.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.23.port.4\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.20.port.3 ─ tier_1.20.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.23.port.5\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.21.port.3 ─ tier_1.21.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.23.port.7\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.23.port.3 ─ tier_1.23.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.22.port.4\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_2.8.port.5 ─ tier_2.8.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.22.port.5\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_2.9.port.5 ─ tier_2.9.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.22.port.6\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_2.10.port.5\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_2.10.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.10.port.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.2.port.6 ─ tier_1.2.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.10.port.1\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.6.port.6 ─ tier_1.6.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.10.port.2\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.10.port.6 ─ tier_1.10.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.10.port.3\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.14.port.6 ─ tier_1.14.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.10.port.4\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.18.port.6 ─ tier_1.18.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.10.port.6\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.26.port.6\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.26.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.26.port.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.24.port.6\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.24.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.24.port.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.48.nic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.48.pciesw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.48.xpu.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.48.nvlsw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.48.xpu.1 ─ server.48.pciesw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.48.cpu.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.48.mgmt.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.48.nic.1\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.24.port.1 ─ tier_0.24.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.24.port.2\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.49.nic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.49.pciesw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.49.xpu.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.49.nvlsw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.49.xpu.1 ─ server.49.pciesw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.49.cpu.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.49.mgmt.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.49.nic.1\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.24.port.3 ─ tier_0.24.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.24.port.4\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.24.port.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.24.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.24.port.1\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.25.port.4\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.25.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.25.port.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.50.nic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.50.pciesw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.50.xpu.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.50.nvlsw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.50.xpu.1 ─ server.50.pciesw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.50.cpu.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.50.mgmt.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.50.nic.1\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.25.port.1 ─ tier_0.25.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.25.port.2\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.51.nic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.51.pciesw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.51.xpu.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.51.nvlsw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.51.xpu.1 ─ server.51.pciesw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.51.cpu.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.51.mgmt.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.51.nic.1\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.25.port.3 ─ tier_0.25.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.25.port.5\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.25.port.1\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.25.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.25.port.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.24.port.5 ─ tier_0.24.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.25.port.2\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.26.port.5\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.26.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.26.port.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.52.nic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.52.pciesw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.52.xpu.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.52.nvlsw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.52.xpu.1 ─ server.52.pciesw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.52.cpu.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.52.mgmt.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.52.nic.1\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.26.port.1 ─ tier_0.26.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.26.port.2\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.53.nic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.53.pciesw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.53.xpu.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.53.nvlsw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.53.xpu.1 ─ server.53.pciesw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.53.cpu.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.53.mgmt.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.53.nic.1\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.26.port.3 ─ tier_0.26.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.26.port.4\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.24.port.2 ─ tier_1.24.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.26.port.6\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.26.port.2 ─ tier_1.26.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.26.port.7\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.27.port.2\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.27.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.27.port.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.24.port.7 ─ tier_0.24.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.27.port.1\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.25.port.7 ─ tier_0.25.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.27.port.3\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.27.port.7\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.27.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.27.port.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.54.nic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.54.pciesw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.54.xpu.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.54.nvlsw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.54.xpu.1 ─ server.54.pciesw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.54.cpu.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.54.mgmt.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.54.nic.1\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.27.port.1 ─ tier_0.27.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.27.port.2\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.55.nic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.55.pciesw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.55.xpu.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.55.nvlsw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.55.xpu.1 ─ server.55.pciesw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.55.cpu.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.55.mgmt.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.55.nic.1\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.27.port.3 ─ tier_0.27.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.27.port.4\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.24.port.3 ─ tier_1.24.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.27.port.5\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.25.port.3 ─ tier_1.25.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.27.port.6\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.26.port.3 ─ tier_1.26.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.27.port.4\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_2.12.port.6 ─ tier_2.12.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.27.port.5\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_2.13.port.6 ─ tier_2.13.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.27.port.6\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_2.14.port.6 ─ tier_2.14.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── tier_1.27.port.7\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_2.15.port.6\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_2.15.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.15.port.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.3.port.7 ─ tier_1.3.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.15.port.1\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.7.port.7 ─ tier_1.7.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.15.port.2\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.11.port.7 ─ tier_1.11.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.15.port.3\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.15.port.7 ─ tier_1.15.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.15.port.4\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.19.port.7 ─ tier_1.19.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.15.port.5\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.23.port.7 ─ tier_1.23.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── tier_2.15.port.7\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.31.port.7\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.31.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.31.port.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.28.port.7\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.28.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.28.port.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.56.nic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.56.pciesw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.56.xpu.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.56.nvlsw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.56.xpu.1 ─ server.56.pciesw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.56.cpu.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.56.mgmt.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.56.nic.1\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.28.port.1 ─ tier_0.28.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.28.port.2\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.57.nic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.57.pciesw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.57.xpu.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.57.nvlsw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.57.xpu.1 ─ server.57.pciesw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.57.cpu.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.57.mgmt.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.57.nic.1\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.28.port.3 ─ tier_0.28.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.28.port.4\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.28.port.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.28.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.28.port.1\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.29.port.4\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.29.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.29.port.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.58.nic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.58.pciesw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.58.xpu.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.58.nvlsw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.58.xpu.1 ─ server.58.pciesw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.58.cpu.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.58.mgmt.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.58.nic.1\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.29.port.1 ─ tier_0.29.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.29.port.2\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.59.nic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.59.pciesw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.59.xpu.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.59.nvlsw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.59.xpu.1 ─ server.59.pciesw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.59.cpu.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.59.mgmt.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.59.nic.1\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.29.port.3 ─ tier_0.29.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.29.port.5\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.29.port.1\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.29.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.29.port.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.28.port.5 ─ tier_0.28.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.29.port.2\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.30.port.5\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.30.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.30.port.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.60.nic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.60.pciesw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.60.xpu.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.60.nvlsw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.60.xpu.1 ─ server.60.pciesw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.60.cpu.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.60.mgmt.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.60.nic.1\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.30.port.1 ─ tier_0.30.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.30.port.2\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.61.nic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.61.pciesw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.61.xpu.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.61.nvlsw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.61.xpu.1 ─ server.61.pciesw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.61.cpu.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.61.mgmt.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.61.nic.1\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.30.port.3 ─ tier_0.30.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.30.port.4\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.28.port.2 ─ tier_1.28.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.30.port.6\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.30.port.2\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.30.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.30.port.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.28.port.6 ─ tier_0.28.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.30.port.1\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.29.port.6 ─ tier_0.29.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.30.port.3\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.31.port.6\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.31.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.31.port.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.62.nic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.62.pciesw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.62.xpu.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.62.nvlsw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.62.xpu.1 ─ server.62.pciesw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.62.cpu.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.62.mgmt.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.62.nic.1\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.31.port.1 ─ tier_0.31.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.31.port.2\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.63.nic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.63.pciesw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.63.xpu.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.63.nvlsw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.63.xpu.1 ─ server.63.pciesw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.63.cpu.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ server.63.mgmt.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── server.63.nic.1\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_0.31.port.3 ─ tier_0.31.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.31.port.4\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.28.port.3 ─ tier_1.28.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.31.port.5\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.29.port.3 ─ tier_1.29.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.31.port.7\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.31.port.3 ─ tier_1.31.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.30.port.4\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_2.8.port.7 ─ tier_2.8.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.30.port.5\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_2.9.port.7 ─ tier_2.9.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.30.port.6\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_2.10.port.7 ─ tier_2.10.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── tier_1.30.port.7\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_2.11.port.7\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_2.11.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.11.port.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.2.port.7 ─ tier_1.2.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.11.port.1\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.6.port.7 ─ tier_1.6.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.11.port.2\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.10.port.7 ─ tier_1.10.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.11.port.3\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.14.port.7 ─ tier_1.14.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.11.port.4\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.18.port.7 ─ tier_1.18.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.11.port.5\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.22.port.7 ─ tier_1.22.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── tier_2.11.port.6\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.26.port.7 ─ tier_1.26.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.30.port.7\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.31.port.2 ─ tier_1.31.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.29.port.4\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_2.4.port.7\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_2.4.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.4.port.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.1.port.4 ─ tier_1.1.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.4.port.1\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.5.port.4 ─ tier_1.5.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.4.port.2\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.9.port.4 ─ tier_1.9.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.4.port.3\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.13.port.4 ─ tier_1.13.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.4.port.4\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.17.port.4 ─ tier_1.17.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.4.port.5\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.21.port.4 ─ tier_1.21.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── tier_2.4.port.6\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.25.port.4 ─ tier_1.25.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.29.port.5\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_2.5.port.7\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_2.5.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.5.port.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.1.port.5 ─ tier_1.1.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.5.port.1\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.5.port.5 ─ tier_1.5.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.5.port.2\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.9.port.5 ─ tier_1.9.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.5.port.3\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.13.port.5 ─ tier_1.13.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.5.port.4\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.17.port.5 ─ tier_1.17.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.5.port.5\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.21.port.5 ─ tier_1.21.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── tier_2.5.port.6\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.25.port.5 ─ tier_1.25.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.29.port.6\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_2.6.port.7\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_2.6.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.6.port.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.1.port.6 ─ tier_1.1.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.6.port.1\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.5.port.6 ─ tier_1.5.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.6.port.2\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.9.port.6 ─ tier_1.9.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.6.port.3\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.13.port.6 ─ tier_1.13.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.6.port.4\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.17.port.6 ─ tier_1.17.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.6.port.5\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.21.port.6 ─ tier_1.21.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── tier_2.6.port.6\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.25.port.6 ─ tier_1.25.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.29.port.7\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_2.7.port.7\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_2.7.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.7.port.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.1.port.7 ─ tier_1.1.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.7.port.1\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.5.port.7 ─ tier_1.5.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.7.port.2\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.9.port.7 ─ tier_1.9.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.7.port.3\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.13.port.7 ─ tier_1.13.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.7.port.4\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.17.port.7 ─ tier_1.17.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.7.port.5\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.21.port.7 ─ tier_1.21.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── tier_2.7.port.6\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.25.port.7 ─ tier_1.25.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.29.port.7\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.31.port.1 ─ tier_1.31.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.28.port.4\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_2.0.port.7\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_2.0.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.0.port.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.0.port.4 ─ tier_1.0.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.0.port.1\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.4.port.4 ─ tier_1.4.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.0.port.2\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.8.port.4 ─ tier_1.8.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.0.port.3\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.12.port.4 ─ tier_1.12.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.0.port.4\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.16.port.4 ─ tier_1.16.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.0.port.5\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.20.port.4 ─ tier_1.20.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── tier_2.0.port.6\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.24.port.4 ─ tier_1.24.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.28.port.5\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_2.1.port.7\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_2.1.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.1.port.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.0.port.5 ─ tier_1.0.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.1.port.1\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.4.port.5 ─ tier_1.4.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.1.port.2\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.8.port.5 ─ tier_1.8.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.1.port.3\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.12.port.5 ─ tier_1.12.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.1.port.4\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.16.port.5 ─ tier_1.16.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.1.port.5\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.20.port.5 ─ tier_1.20.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── tier_2.1.port.6\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.24.port.5 ─ tier_1.24.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.28.port.6\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_2.2.port.7\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_2.2.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.2.port.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.0.port.6 ─ tier_1.0.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.2.port.1\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.4.port.6 ─ tier_1.4.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.2.port.2\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.8.port.6 ─ tier_1.8.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.2.port.3\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.12.port.6 ─ tier_1.12.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.2.port.4\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.16.port.6 ─ tier_1.16.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.2.port.5\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.20.port.6 ─ tier_1.20.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── tier_2.2.port.6\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.24.port.6 ─ tier_1.24.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.28.port.7\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_2.3.port.7\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_2.3.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.3.port.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.0.port.7 ─ tier_1.0.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.3.port.1\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.4.port.7 ─ tier_1.4.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.3.port.2\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.8.port.7 ─ tier_1.8.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.3.port.3\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.12.port.7 ─ tier_1.12.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.3.port.4\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.16.port.7 ─ tier_1.16.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.3.port.5\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.20.port.7 ─ tier_1.20.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── tier_2.3.port.6\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.24.port.7 ─ tier_1.24.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.31.port.4\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_2.12.port.7 ─ tier_2.12.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.31.port.5\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_2.13.port.7 ─ tier_2.13.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.31.port.6\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_2.14.port.7 ─ tier_2.14.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.25.port.6\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.26.port.1 ─ tier_1.26.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.26.port.4\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_2.8.port.6 ─ tier_2.8.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.26.port.5\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_2.9.port.6 ─ tier_2.9.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.22.port.7\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.23.port.2 ─ tier_1.23.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.21.port.7\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.23.port.1 ─ tier_1.23.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.23.port.4\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_2.12.port.5 ─ tier_2.12.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.23.port.5\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_2.13.port.5 ─ tier_2.13.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.17.port.6\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.18.port.1 ─ tier_1.18.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.18.port.4\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_2.8.port.4 ─ tier_2.8.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.14.port.7\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.15.port.2 ─ tier_1.15.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.13.port.7\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.15.port.1 ─ tier_1.15.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_1.15.port.4\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_2.12.port.3 ─ tier_2.12.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.5.port.6\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.6.port.1 ─ tier_1.6.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_2.8.port.2\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.10.port.4 ─ tier_1.10.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.2.port.7\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.3.port.2 ─ tier_1.3.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ ├── tier_0.1.port.7\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ tier_1.3.port.1 ─ tier_1.3.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ └── ...\n", - " │ │ │ │ └── ...\n", - " │ │ │ └── ...\n", - " │ │ └── ...\n", - " │ └── ...\n", - " └── ...\n", - "None\n" - ] - } - ], + "outputs": [], "source": [ "service = InfraGraphService()\n", "service.set_graph(infrastructure)\n", @@ -5410,18 +103,10 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": null, "id": "510b7454", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Generated 64 et in /workspaces/astra_sim_service/client-scripts/utils/../trial/htsim_clos_fabric_3tier/configuration/workload\n" - ] - } - ], + "outputs": [], "source": [ "astra.configuration.common_config.workload = astra.generate_collective(collective=Collective.ALLREDUCE, coll_size= 1 *1024*1024, npu_range=[0, total_npus])" ] @@ -5436,36 +121,10 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": null, "id": "3d4d9c0f", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "active_chunks_per_dimension: 1\n", - "all_gather_implementation:\n", - "- ring\n", - "all_reduce_implementation:\n", - "- ring\n", - "all_to_all_implementation:\n", - "- direct\n", - "collective_optimization: localBWAware\n", - "endpoint_delay: 10\n", - "local_mem_bw: 1600\n", - "local_reduction_delay: 0\n", - "peak_perf: 900\n", - "preferred_dataset_splits: 4\n", - "reduce_scatter_implementation:\n", - "- ring\n", - "roofline_enabled: 0\n", - "scheduling_policy: LIFO\n", - "trace_enabled: 0\n", - "\n" - ] - } - ], + "outputs": [], "source": [ "astra.configuration.common_config.system.scheduling_policy = astra.configuration.common_config.system.LIFO\n", "astra.configuration.common_config.system.endpoint_delay = 10\n", @@ -5492,21 +151,10 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": null, "id": "db186db1", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "memory_type: NO_MEMORY_EXPANSION\n", - "remote_mem_bw: 0\n", - "remote_mem_latency: 0\n", - "\n" - ] - } - ], + "outputs": [], "source": [ "astra.configuration.common_config.remote_memory.memory_type = astra.configuration.common_config.remote_memory.NO_MEMORY_EXPANSION\n", "print(astra.configuration.common_config.remote_memory)" @@ -5522,7 +170,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": null, "id": "88c0c6eb", "metadata": {}, "outputs": [], @@ -5541,21 +189,10 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": null, "id": "647d1b0b", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Network backend set to htsim\n", - "network topology choice set to: infragraph\n", - "protocol set to choice: tcp\n", - "\n" - ] - } - ], + "outputs": [], "source": [ "astra.configuration.network_backend.htsim.htsim_protocol.choice = astra.configuration.network_backend.htsim.htsim_protocol.TCP\n", "print(\"Network backend set to\", astra.configuration.network_backend.choice)\n", @@ -5574,21 +211,10 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": null, "id": "9f81ecac", "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 10, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "host_device_spec = astra_sim_kit.AnnotationDeviceSpecifications()\n", "host_device_spec.device_bandwidth_gbps = 1000\n", @@ -5607,6 +233,73 @@ ")" ] }, + { + "cell_type": "markdown", + "id": "8afd82de", + "metadata": {}, + "source": [ + "##### Save infragraph as a yaml" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "94461949", + "metadata": {}, + "outputs": [], + "source": [ + "with open(os.path.join(FileFolderUtils.get_instance().OUTPUT_DIR,\"../infrastructure\",f\"{astra.tag}.yaml\"),\"w\") as f:\n", + " data = infrastructure.serialize(\"dict\")\n", + " yaml.dump(data, f, default_flow_style=False, indent=4)\n", + "\n", + "print(\"saved yaml to:\", os.path.join(FileFolderUtils.get_instance().OUTPUT_DIR,\"..\",f\"{astra.tag}.yaml\"))" + ] + }, + { + "cell_type": "markdown", + "id": "aa9940b4", + "metadata": {}, + "source": [ + "##### Visualize the Infragraph" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "fe828d35", + "metadata": {}, + "outputs": [], + "source": [ + "# VISUALIZER_START\n", + "PORT = 8765\n", + "\n", + "subprocess.run(\n", + " f\"lsof -ti:{PORT} | xargs -r kill -9\",\n", + " shell=True\n", + ")\n", + "\n", + "infra_yaml_path = os.path.join(\n", + " FileFolderUtils.get_instance().OUTPUT_DIR,\n", + " \"../infrastructure\",\n", + " f\"{astra.tag}.yaml\"\n", + ")\n", + "\n", + "infra_dir = os.path.dirname(infra_yaml_path)\n", + "visual_output_dir = os.path.normpath(os.path.join(infra_dir, \"../visuals\"))\n", + "\n", + "subprocess.run(\n", + " [\"infragraph\", \"visualize\", \"--input\", infra_yaml_path, \"--output\", visual_output_dir],\n", + " check=True\n", + ")\n", + "\n", + "subprocess.Popen(\n", + " [\"python3\", \"-m\", \"http.server\", f\"{PORT}\"],\n", + " cwd=visual_output_dir\n", + ")\n", + "IFrame(f\"http://localhost:{PORT}/index.html\", width=\"100%\", height=700)\n", + "# VISUALIZER_END" + ] + }, { "cell_type": "markdown", "id": "f7a3ad17", @@ -5617,7 +310,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": null, "id": "96c2d8df", "metadata": {}, "outputs": [], @@ -5637,34 +330,10 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": null, "id": "6a0e647f", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Generating Configuration ZIP now\n", - "output_path: /workspaces/astra_sim_service/client-scripts/utils/../trial/htsim_clos_fabric_3tier/config.zip\n", - "folder_path: /workspaces/astra_sim_service/client-scripts/utils/../trial/htsim_clos_fabric_3tier/configuration/workload/..\n", - "pack_zip complete\n", - "message: 'Configuration applied successfully. warnings: Unable to generate communicator\n", - " group message from schema - communicator group configuration empty'\n", - "\n", - "message: Simulation started successfully\n", - "\n", - "astra-sim server Status: running\n", - "astra-sim server Status: running\n", - "astra-sim server Status: running\n", - "Downloading Output files....\n", - "Transferring Files from ASTRA-sim server\n", - "Downloading file: simulation.log\n", - "All files downloaded Successfully\n", - "Simulation completed\n" - ] - } - ], + "outputs": [], "source": [ "astra.run_simulation(NetworkBackend.HTSIM)" ] @@ -5679,51 +348,13 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": null, "id": "a4094f6c", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Downloaded all configuration in /workspaces/astra_sim_service/client-scripts/utils/../trial/htsim_clos_fabric_3tier/server_configuration.zip\n" - ] - } - ], + "outputs": [], "source": [ "astra.download_configuration()" ] - }, - { - "cell_type": "markdown", - "id": "687b82e0", - "metadata": {}, - "source": [ - "##### Save infragraph as a yaml" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "id": "b17164cb", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "saved yaml to: /workspaces/astra_sim_service/client-scripts/utils/../trial/htsim_clos_fabric_3tier/output/../htsim_clos_fabric_3tier.yaml\n" - ] - } - ], - "source": [ - "with open(os.path.join(FileFolderUtils.get_instance().OUTPUT_DIR,\"../infrastructure\",\"htsim_clos_fabric_3tier.yaml\"),\"w\") as f:\n", - " data = infrastructure.serialize(\"dict\")\n", - " yaml.dump(data, f, default_flow_style=False, indent=4)\n", - "\n", - "print(\"saved yaml to:\", os.path.join(FileFolderUtils.get_instance().OUTPUT_DIR,\"..\",\"htsim_clos_fabric_3tier.yaml\"))" - ] } ], "metadata": { diff --git a/client-scripts/notebooks/infragraph/ns3_clos_fabric_2tier.ipynb b/client-scripts/notebooks/infragraph/ns3_clos_fabric_2tier.ipynb index a2ae3cf..769fa65 100644 --- a/client-scripts/notebooks/infragraph/ns3_clos_fabric_2tier.ipynb +++ b/client-scripts/notebooks/infragraph/ns3_clos_fabric_2tier.ipynb @@ -1,13 +1,5 @@ { "cells": [ - { - "cell_type": "markdown", - "id": "ec7a40b8", - "metadata": {}, - "source": [ - "##### Import the required modules and configure the system path to locate them" - ] - }, { "cell_type": "code", "execution_count": null, @@ -20,10 +12,12 @@ "import networkx\n", "import yaml\n", "import os\n", + "import subprocess\n", "import pandas as pd\n", "import astra_sim_sdk.astra_sim_sdk as astra_sim_kit\n", "from astra_sim import AstraSim, Collective, NetworkBackend\n", "from common import FileFolderUtils\n", + "from IPython.display import IFrame\n", "from infragraph.infragraph_service import InfraGraphService\n", "from infragraph.blueprints.fabrics.clos_fat_tree_fabric import ClosFatTreeFabric\n", "from infragraph.blueprints.devices.generic.server import Server\n", @@ -229,6 +223,73 @@ ")" ] }, + { + "cell_type": "markdown", + "id": "4335d7ce", + "metadata": {}, + "source": [ + "##### Save infragraph as a yaml" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "3a767455", + "metadata": {}, + "outputs": [], + "source": [ + "with open(os.path.join(FileFolderUtils.get_instance().OUTPUT_DIR,\"../infrastructure\",f\"{astra.tag}.yaml\"),\"w\") as f:\n", + " data = infrastructure.serialize(\"dict\")\n", + " yaml.dump(data, f, default_flow_style=False, indent=4)\n", + "\n", + "print(\"saved yaml to:\", os.path.join(FileFolderUtils.get_instance().OUTPUT_DIR,\"..\",f\"{astra.tag}.yaml\"))" + ] + }, + { + "cell_type": "markdown", + "id": "4ccf0ef4", + "metadata": {}, + "source": [ + "##### Visualize the Infragraph" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "46c8c907", + "metadata": {}, + "outputs": [], + "source": [ + "# VISUALIZER_START\n", + "PORT = 8765\n", + "\n", + "subprocess.run(\n", + " f\"lsof -ti:{PORT} | xargs -r kill -9\",\n", + " shell=True\n", + ")\n", + "\n", + "infra_yaml_path = os.path.join(\n", + " FileFolderUtils.get_instance().OUTPUT_DIR,\n", + " \"../infrastructure\",\n", + " f\"{astra.tag}.yaml\"\n", + ")\n", + "\n", + "infra_dir = os.path.dirname(infra_yaml_path)\n", + "visual_output_dir = os.path.normpath(os.path.join(infra_dir, \"../visuals\"))\n", + "\n", + "subprocess.run(\n", + " [\"infragraph\", \"visualize\", \"--input\", infra_yaml_path, \"--output\", visual_output_dir],\n", + " check=True\n", + ")\n", + "\n", + "subprocess.Popen(\n", + " [\"python3\", \"-m\", \"http.server\", f\"{PORT}\"],\n", + " cwd=visual_output_dir\n", + ")\n", + "IFrame(f\"http://localhost:{PORT}/index.html\", width=\"100%\", height=700)\n", + "# VISUALIZER_END" + ] + }, { "cell_type": "markdown", "id": "526c9236", @@ -314,28 +375,6 @@ "df = pd.read_csv(os.path.join(FileFolderUtils.get_instance().OUTPUT_DIR, \"flow_stats.csv\"))\n", "df.head()" ] - }, - { - "cell_type": "markdown", - "id": "9006963d", - "metadata": {}, - "source": [ - "##### Save infragraph as a yaml" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "fe7e05bb", - "metadata": {}, - "outputs": [], - "source": [ - "with open(os.path.join(FileFolderUtils.get_instance().OUTPUT_DIR,\"../infrastructure\",\"ns3_clos_fabric_2tier.yaml\"),\"w\") as f:\n", - " data = infrastructure.serialize(\"dict\")\n", - " yaml.dump(data, f, default_flow_style=False, indent=4)\n", - "\n", - "print(\"saved yaml to:\", os.path.join(FileFolderUtils.get_instance().OUTPUT_DIR,\"..\",\"ns3_clos_fabric_2tier.yaml\"))" - ] } ], "metadata": { @@ -354,7 +393,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.11.0rc1" + "version": "3.11.0" } }, "nbformat": 4, diff --git a/client-scripts/notebooks/infragraph/ns3_clos_fabric_3tier.ipynb b/client-scripts/notebooks/infragraph/ns3_clos_fabric_3tier.ipynb index 471b3a6..e451166 100644 --- a/client-scripts/notebooks/infragraph/ns3_clos_fabric_3tier.ipynb +++ b/client-scripts/notebooks/infragraph/ns3_clos_fabric_3tier.ipynb @@ -19,10 +19,12 @@ "sys.path.append(\"../../utils\")\n", "import networkx\n", "import yaml\n", + "import subprocess\n", "import os\n", "import pandas as pd\n", "import astra_sim_sdk.astra_sim_sdk as astra_sim_kit\n", "from common import FileFolderUtils\n", + "from IPython.display import IFrame\n", "from astra_sim import AstraSim, Collective, NetworkBackend\n", "from infragraph.infragraph_service import InfraGraphService\n", "from infragraph.blueprints.fabrics.clos_fat_tree_fabric import ClosFatTreeFabric\n", @@ -229,6 +231,73 @@ ")" ] }, + { + "cell_type": "markdown", + "id": "c801cb45", + "metadata": {}, + "source": [ + "##### Save infragraph as a yaml" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "dcfe7486", + "metadata": {}, + "outputs": [], + "source": [ + "with open(os.path.join(FileFolderUtils.get_instance().OUTPUT_DIR,\"../infrastructure\",f\"{astra.tag}.yaml\"),\"w\") as f:\n", + " data = infrastructure.serialize(\"dict\")\n", + " yaml.dump(data, f, default_flow_style=False, indent=4)\n", + "\n", + "print(\"saved yaml to:\", os.path.join(FileFolderUtils.get_instance().OUTPUT_DIR,\"..\",f\"{astra.tag}.yaml\"))" + ] + }, + { + "cell_type": "markdown", + "id": "d963cc69", + "metadata": {}, + "source": [ + "##### Visualize the Infragraph" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "de2caa59", + "metadata": {}, + "outputs": [], + "source": [ + "# VISUALIZER_START\n", + "PORT = 8765\n", + "\n", + "subprocess.run(\n", + " f\"lsof -ti:{PORT} | xargs -r kill -9\",\n", + " shell=True\n", + ")\n", + "\n", + "infra_yaml_path = os.path.join(\n", + " FileFolderUtils.get_instance().OUTPUT_DIR,\n", + " \"../infrastructure\",\n", + " f\"{astra.tag}.yaml\"\n", + ")\n", + "\n", + "infra_dir = os.path.dirname(infra_yaml_path)\n", + "visual_output_dir = os.path.normpath(os.path.join(infra_dir, \"../visuals\"))\n", + "\n", + "subprocess.run(\n", + " [\"infragraph\", \"visualize\", \"--input\", infra_yaml_path, \"--output\", visual_output_dir],\n", + " check=True\n", + ")\n", + "\n", + "subprocess.Popen(\n", + " [\"python3\", \"-m\", \"http.server\", f\"{PORT}\"],\n", + " cwd=visual_output_dir\n", + ")\n", + "IFrame(f\"http://localhost:{PORT}/index.html\", width=\"100%\", height=700)\n", + "# VISUALIZER_END" + ] + }, { "cell_type": "markdown", "id": "c08df70c", @@ -303,28 +372,6 @@ "df = pd.read_csv(os.path.join(FileFolderUtils.get_instance().OUTPUT_DIR, \"fct.csv\"))\n", "df.head()" ] - }, - { - "cell_type": "markdown", - "id": "2721c97b", - "metadata": {}, - "source": [ - "##### Save infragraph as a yaml" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "d1907b64", - "metadata": {}, - "outputs": [], - "source": [ - "with open(os.path.join(FileFolderUtils.get_instance().OUTPUT_DIR,\"../infrastructure\",\"ns3_clos_fabric_3tier.yaml\"),\"w\") as f:\n", - " data = infrastructure.serialize(\"dict\")\n", - " yaml.dump(data, f, default_flow_style=False, indent=4)\n", - "\n", - "print(\"saved yaml to:\", os.path.join(FileFolderUtils.get_instance().OUTPUT_DIR,\"..\",\"ns3_clos_fabric_3tier.yaml\"))" - ] } ], "metadata": { @@ -334,8 +381,16 @@ "name": "python3" }, "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", "name": "python", - "version": "3.11.0" + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.0rc1" } }, "nbformat": 4, diff --git a/client-scripts/notebooks/infragraph/ns3_single_dgx_device.ipynb b/client-scripts/notebooks/infragraph/ns3_single_dgx_device.ipynb index 145c60c..9c19bca 100644 --- a/client-scripts/notebooks/infragraph/ns3_single_dgx_device.ipynb +++ b/client-scripts/notebooks/infragraph/ns3_single_dgx_device.ipynb @@ -19,10 +19,12 @@ "sys.path.append(\"../../utils\")\n", "import networkx\n", "import yaml\n", + "import subprocess\n", "import os\n", "import pandas as pd\n", "import astra_sim_sdk.astra_sim_sdk as astra_sim_kit\n", "from common import FileFolderUtils\n", + "from IPython.display import IFrame\n", "from astra_sim import AstraSim, Collective, NetworkBackend\n", "from infragraph.infragraph_service import InfraGraphService\n", "from infragraph.blueprints.devices.nvidia.dgx import NvidiaDGX, DgxProfile\n", @@ -39,18 +41,10 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": null, "id": "80ea543f", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Successfully connected to gRPC server at 172.17.0.2:8989\n" - ] - } - ], + "outputs": [], "source": [ "astra = AstraSim(server_endpoint = \"172.17.0.2:8989\", tag = \"ns3_single_dgx\")" ] @@ -65,18 +59,10 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": null, "id": "437af895", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "('dgx1', 'dgx2', 'dgx_a100', 'dgx_h100', 'dgx_gb200')\n" - ] - } - ], + "outputs": [], "source": [ "from typing import get_args\n", "print(get_args(DgxProfile))" @@ -92,204 +78,10 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": null, "id": "f6cda575", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "devices:\n", - "- components:\n", - " - choice: cpu\n", - " count: 2\n", - " description: AMD EPYC 9654 (Genoa)\n", - " name: cpu\n", - " - choice: xpu\n", - " count: 8\n", - " description: NVIDIA H100 / H200 SXM5\n", - " name: xpu\n", - " - choice: switch\n", - " count: 4\n", - " description: NVIDIA NVSwitch\n", - " name: nvsw\n", - " - choice: switch\n", - " count: 3\n", - " description: Broadcom PCIe Gen5 Switch\n", - " name: pciesw\n", - " - choice: custom\n", - " count: 8\n", - " custom:\n", - " type: pcie_slot\n", - " description: PCIe Gen5 x16 slots (ConnectX / BlueField)\n", - " name: pciesl\n", - " - choice: nic\n", - " count: 8\n", - " description: NVIDIA ConnectX / BlueField\n", - " name: cx7\n", - " description: NVIDIA DGX System\n", - " edges:\n", - " - ep1:\n", - " component: cpu\n", - " ep2:\n", - " component: cpu\n", - " link: cpu_fabric\n", - " scheme: many2many\n", - " - ep1:\n", - " component: cpu[0]\n", - " ep2:\n", - " component: pciesl[0:3]\n", - " link: pcie\n", - " scheme: many2many\n", - " - ep1:\n", - " component: cpu[1]\n", - " ep2:\n", - " component: pciesl[4:7]\n", - " link: pcie\n", - " scheme: many2many\n", - " - ep1:\n", - " component: cpu[0]\n", - " ep2:\n", - " component: pciesw[0]\n", - " link: pcie\n", - " scheme: one2one\n", - " - ep1:\n", - " component: cpu[1]\n", - " ep2:\n", - " component: pciesw[1]\n", - " link: pcie\n", - " scheme: one2one\n", - " - ep1:\n", - " component: pciesl[0]\n", - " ep2:\n", - " component: xpu[0]\n", - " link: pcie\n", - " scheme: one2one\n", - " - ep1:\n", - " component: pciesl[1]\n", - " ep2:\n", - " component: xpu[1]\n", - " link: pcie\n", - " scheme: one2one\n", - " - ep1:\n", - " component: pciesl[2]\n", - " ep2:\n", - " component: xpu[2]\n", - " link: pcie\n", - " scheme: one2one\n", - " - ep1:\n", - " component: pciesl[3]\n", - " ep2:\n", - " component: xpu[3]\n", - " link: pcie\n", - " scheme: one2one\n", - " - ep1:\n", - " component: pciesl[4]\n", - " ep2:\n", - " component: xpu[4]\n", - " link: pcie\n", - " scheme: one2one\n", - " - ep1:\n", - " component: pciesl[5]\n", - " ep2:\n", - " component: xpu[5]\n", - " link: pcie\n", - " scheme: one2one\n", - " - ep1:\n", - " component: pciesl[6]\n", - " ep2:\n", - " component: xpu[6]\n", - " link: pcie\n", - " scheme: one2one\n", - " - ep1:\n", - " component: pciesl[7]\n", - " ep2:\n", - " component: xpu[7]\n", - " link: pcie\n", - " scheme: one2one\n", - " - ep1:\n", - " component: nvsw[0:4]\n", - " ep2:\n", - " component: pciesw[2]\n", - " link: pcie\n", - " scheme: many2many\n", - " - ep1:\n", - " component: cpu[0]\n", - " ep2:\n", - " component: pciesw[2]\n", - " link: pcie\n", - " scheme: one2one\n", - " - ep1:\n", - " component: nvsw[0:4]\n", - " ep2:\n", - " component: xpu[0:8]\n", - " link: xpu_fabric\n", - " scheme: many2many\n", - " - ep1:\n", - " component: pciesl[0]\n", - " ep2:\n", - " component: cx7[0]\n", - " link: pcie\n", - " scheme: one2one\n", - " - ep1:\n", - " component: pciesl[1]\n", - " ep2:\n", - " component: cx7[1]\n", - " link: pcie\n", - " scheme: one2one\n", - " - ep1:\n", - " component: pciesl[2]\n", - " ep2:\n", - " component: cx7[2]\n", - " link: pcie\n", - " scheme: one2one\n", - " - ep1:\n", - " component: pciesl[3]\n", - " ep2:\n", - " component: cx7[3]\n", - " link: pcie\n", - " scheme: one2one\n", - " - ep1:\n", - " component: pciesl[4]\n", - " ep2:\n", - " component: cx7[4]\n", - " link: pcie\n", - " scheme: one2one\n", - " - ep1:\n", - " component: pciesl[5]\n", - " ep2:\n", - " component: cx7[5]\n", - " link: pcie\n", - " scheme: one2one\n", - " - ep1:\n", - " component: pciesl[6]\n", - " ep2:\n", - " component: cx7[6]\n", - " link: pcie\n", - " scheme: one2one\n", - " - ep1:\n", - " component: pciesl[7]\n", - " ep2:\n", - " component: cx7[7]\n", - " link: pcie\n", - " scheme: one2one\n", - " links:\n", - " - description: infinity_fabric\n", - " name: cpu_fabric\n", - " - description: nvlink_4\n", - " name: xpu_fabric\n", - " - description: PCI Express PCIE_GEN5 x16\n", - " name: pcie\n", - " name: dgx_h100\n", - "instances:\n", - "- count: 1\n", - " device: dgx_h100\n", - " name: dgx_h100\n", - "\n" - ] - } - ], + "outputs": [], "source": [ "server = NvidiaDGX(\"dgx_h100\")\n", "infrastructure = Infrastructure()\n", @@ -309,71 +101,10 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": null, "id": "39479cbb", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "╙── dgx_h100.0.cx7.5\n", - " │\n", - " dgx_h100.0.pciesl.5\n", - " ├── dgx_h100.0.cpu.1\n", - " │ ├── dgx_h100.0.cpu.0\n", - " │ │ ├── dgx_h100.0.pciesl.0\n", - " │ │ │ ├── dgx_h100.0.xpu.0\n", - " │ │ │ │ ├── dgx_h100.0.nvsw.0\n", - " │ │ │ │ │ ├── dgx_h100.0.pciesw.2 ─ dgx_h100.0.cpu.0\n", - " │ │ │ │ │ │ ├── dgx_h100.0.nvsw.1 ─ dgx_h100.0.xpu.0\n", - " │ │ │ │ │ │ │ ├── dgx_h100.0.xpu.1 ─ dgx_h100.0.nvsw.0\n", - " │ │ │ │ │ │ │ │ ├── dgx_h100.0.pciesl.1 ─ dgx_h100.0.cpu.0\n", - " │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ dgx_h100.0.cx7.1\n", - " │ │ │ │ │ │ │ │ ├── dgx_h100.0.nvsw.2 ─ dgx_h100.0.pciesw.2, dgx_h100.0.xpu.0\n", - " │ │ │ │ │ │ │ │ │ ├── dgx_h100.0.xpu.2 ─ dgx_h100.0.nvsw.0, dgx_h100.0.nvsw.1\n", - " │ │ │ │ │ │ │ │ │ │ ├── dgx_h100.0.pciesl.2 ─ dgx_h100.0.cpu.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ dgx_h100.0.cx7.2\n", - " │ │ │ │ │ │ │ │ │ │ └── dgx_h100.0.nvsw.3 ─ dgx_h100.0.pciesw.2, dgx_h100.0.xpu.0, dgx_h100.0.xpu.1\n", - " │ │ │ │ │ │ │ │ │ │ ├── dgx_h100.0.xpu.3 ─ dgx_h100.0.nvsw.0, dgx_h100.0.nvsw.1, dgx_h100.0.nvsw.2\n", - " │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ dgx_h100.0.pciesl.3\n", - " │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ dgx_h100.0.cx7.3\n", - " │ │ │ │ │ │ │ │ │ │ ├── dgx_h100.0.xpu.4 ─ dgx_h100.0.nvsw.0, dgx_h100.0.nvsw.1, dgx_h100.0.nvsw.2\n", - " │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ dgx_h100.0.pciesl.4 ─ dgx_h100.0.cpu.1\n", - " │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ dgx_h100.0.cx7.4\n", - " │ │ │ │ │ │ │ │ │ │ ├── dgx_h100.0.xpu.5 ─ dgx_h100.0.pciesl.5, dgx_h100.0.nvsw.0, dgx_h100.0.nvsw.1, dgx_h100.0.nvsw.2\n", - " │ │ │ │ │ │ │ │ │ │ ├── dgx_h100.0.xpu.6 ─ dgx_h100.0.nvsw.0, dgx_h100.0.nvsw.1, dgx_h100.0.nvsw.2\n", - " │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ dgx_h100.0.pciesl.6 ─ dgx_h100.0.cpu.1\n", - " │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ dgx_h100.0.cx7.6\n", - " │ │ │ │ │ │ │ │ │ │ └── dgx_h100.0.xpu.7 ─ dgx_h100.0.nvsw.0, dgx_h100.0.nvsw.1, dgx_h100.0.nvsw.2\n", - " │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ dgx_h100.0.pciesl.7\n", - " │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ dgx_h100.0.cx7.7\n", - " │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ └── ...\n", - " │ │ │ │ └── ...\n", - " │ │ │ └── dgx_h100.0.cx7.0\n", - " │ │ ├── dgx_h100.0.pciesw.0\n", - " │ │ └── ...\n", - " │ ├── dgx_h100.0.pciesw.1\n", - " │ └── ...\n", - " └── ...\n", - "None\n" - ] - } - ], + "outputs": [], "source": [ "service = InfraGraphService()\n", "service.set_graph(infrastructure)\n", @@ -392,19 +123,10 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": null, "id": "fe69674a", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "All contents of the folder /workspaces/astra_sim_service/client-scripts/utils/../trial/ns3_single_dgx/configuration/workload have been deleted.\n", - "Generated 8 et in /workspaces/astra_sim_service/client-scripts/utils/../trial/ns3_single_dgx/configuration/workload\n" - ] - } - ], + "outputs": [], "source": [ "astra.configuration.common_config.workload = astra.generate_collective(collective=Collective.ALLREDUCE, coll_size= 1 *1024*1024, npu_range=[0, total_npus])" ] @@ -419,7 +141,7 @@ }, { "cell_type": "code", - "execution_count": 23, + "execution_count": null, "id": "aae1858b", "metadata": {}, "outputs": [], @@ -444,21 +166,10 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": null, "id": "cd0b8270", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "memory_type: NO_MEMORY_EXPANSION\n", - "remote_mem_bw: 0\n", - "remote_mem_latency: 0\n", - "\n" - ] - } - ], + "outputs": [], "source": [ "astra.configuration.common_config.remote_memory.memory_type = astra.configuration.common_config.remote_memory.NO_MEMORY_EXPANSION\n", "print(astra.configuration.common_config.remote_memory)" @@ -474,7 +185,7 @@ }, { "cell_type": "code", - "execution_count": 25, + "execution_count": null, "id": "be5bbf10", "metadata": { "lines_to_next_cell": 2 @@ -496,7 +207,7 @@ }, { "cell_type": "code", - "execution_count": 26, + "execution_count": null, "id": "0299501f", "metadata": {}, "outputs": [], @@ -517,21 +228,10 @@ }, { "cell_type": "code", - "execution_count": 27, + "execution_count": null, "id": "84e218f9", "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 27, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "host_device_spec = astra_sim_kit.AnnotationDeviceSpecifications()\n", "host_device_spec.device_bandwidth_gbps = 100\n", @@ -541,6 +241,73 @@ "astra.configuration.infragraph.annotations.device_specifications.append(host_device_spec)" ] }, + { + "cell_type": "markdown", + "id": "088410f5", + "metadata": {}, + "source": [ + "##### Save infragraph as a yaml" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "552cc24c", + "metadata": {}, + "outputs": [], + "source": [ + "with open(os.path.join(FileFolderUtils.get_instance().OUTPUT_DIR,\"../infrastructure\",f\"{astra.tag}.yaml\"),\"w\") as f:\n", + " data = infrastructure.serialize(\"dict\")\n", + " yaml.dump(data, f, default_flow_style=False, indent=4)\n", + "\n", + "print(\"saved yaml to:\", os.path.join(FileFolderUtils.get_instance().OUTPUT_DIR,\"..\",f\"{astra.tag}.yaml\"))" + ] + }, + { + "cell_type": "markdown", + "id": "cb1986f2", + "metadata": {}, + "source": [ + "##### Visualize the Infragraph" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "aa072bd7", + "metadata": {}, + "outputs": [], + "source": [ + "# VISUALIZER_START\n", + "PORT = 8765\n", + "\n", + "subprocess.run(\n", + " f\"lsof -ti:{PORT} | xargs -r kill -9\",\n", + " shell=True\n", + ")\n", + "\n", + "infra_yaml_path = os.path.join(\n", + " FileFolderUtils.get_instance().OUTPUT_DIR,\n", + " \"../infrastructure\",\n", + " f\"{astra.tag}.yaml\"\n", + ")\n", + "\n", + "infra_dir = os.path.dirname(infra_yaml_path)\n", + "visual_output_dir = os.path.normpath(os.path.join(infra_dir, \"../visuals\"))\n", + "\n", + "subprocess.run(\n", + " [\"infragraph\", \"visualize\", \"--input\", infra_yaml_path, \"--output\", visual_output_dir],\n", + " check=True\n", + ")\n", + "\n", + "subprocess.Popen(\n", + " [\"python3\", \"-m\", \"http.server\", f\"{PORT}\"],\n", + " cwd=visual_output_dir\n", + ")\n", + "IFrame(f\"http://localhost:{PORT}/index.html\", width=\"100%\", height=700)\n", + "# VISUALIZER_END" + ] + }, { "cell_type": "markdown", "id": "ecebaf71", @@ -551,7 +318,7 @@ }, { "cell_type": "code", - "execution_count": 28, + "execution_count": null, "id": "e0229cf9", "metadata": {}, "outputs": [], @@ -571,57 +338,10 @@ }, { "cell_type": "code", - "execution_count": 29, + "execution_count": null, "id": "f69375f6", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Generating Configuration ZIP now\n", - "output_path: /workspaces/astra_sim_service/client-scripts/utils/../trial/ns3_single_dgx/config.zip\n", - "folder_path: /workspaces/astra_sim_service/client-scripts/utils/../trial/ns3_single_dgx/configuration/workload/..\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "pack_zip complete\n", - "message: 'Configuration applied successfully. warnings: Unable to generate communicator\n", - " group message from schema - communicator group configuration empty'\n", - "\n", - "message: Simulation started successfully\n", - "\n", - "astra-sim server Status: running\n", - "Downloading Output files....\n", - "Transferring Files from ASTRA-sim server\n", - "Downloading file: fct.txt\n", - "Downloading file: flow.txt\n", - "Downloading file: pfc.txt\n", - "Downloading file: qlen.txt\n", - "Downloading file: simulation.log\n", - "Downloading file: trace_out.tr\n", - "All files downloaded Successfully\n", - "Translating Metrics...\n", - "Generated fct.csv at: /workspaces/astra_sim_service/client-scripts/utils/../trial/ns3_single_dgx/output/fct.csv\n", - "Generated: flow_stats.csv at: /workspaces/astra_sim_service/client-scripts/utils/../trial/ns3_single_dgx/output/flow_stats.csv\n", - "All metrics translated successfully\n", - "Simulation completed\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/workspaces/astra_sim_service/client-scripts/notebooks/infragraph/../../utils/common.py:274: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\\s+'`` instead\n", - " df = pd.read_csv(\n", - "/workspaces/astra_sim_service/client-scripts/notebooks/infragraph/../../utils/common.py:237: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\\s+'`` instead\n", - " df = pd.read_csv(\n" - ] - } - ], + "outputs": [], "source": [ "astra.run_simulation(NetworkBackend.NS3)" ] @@ -636,18 +356,10 @@ }, { "cell_type": "code", - "execution_count": 30, + "execution_count": null, "id": "4848847e", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Downloaded all configuration in /workspaces/astra_sim_service/client-scripts/utils/../trial/ns3_single_dgx/server_configuration.zip\n" - ] - } - ], + "outputs": [], "source": [ "astra.download_configuration()" ] @@ -662,156 +374,14 @@ }, { "cell_type": "code", - "execution_count": 31, + "execution_count": null, "id": "490c6acb", "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
Source Hex ipDestination Hex ipSource PortDestination PortData size (B)Start TimeFCTStandalone FCT
00b0000010b00010110000100131072101125011857
10b0001010b00020110000100131072101125011857
20b0002010b00030110000100131072101125011857
30b0005010b00060110000100131072101125011857
40b0006010b00070110000100131072101125011857
\n", - "
" - ], - "text/plain": [ - " Source Hex ip Destination Hex ip Source Port Destination Port \\\n", - "0 0b000001 0b000101 10000 100 \n", - "1 0b000101 0b000201 10000 100 \n", - "2 0b000201 0b000301 10000 100 \n", - "3 0b000501 0b000601 10000 100 \n", - "4 0b000601 0b000701 10000 100 \n", - "\n", - " Data size (B) Start Time FCT Standalone FCT \n", - "0 131072 10 11250 11857 \n", - "1 131072 10 11250 11857 \n", - "2 131072 10 11250 11857 \n", - "3 131072 10 11250 11857 \n", - "4 131072 10 11250 11857 " - ] - }, - "execution_count": 31, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "df = pd.read_csv(os.path.join(FileFolderUtils.get_instance().OUTPUT_DIR, \"fct.csv\"))\n", "df.head()" ] - }, - { - "cell_type": "markdown", - "id": "62095f7c", - "metadata": {}, - "source": [ - "##### Save infragraph as a yaml" - ] - }, - { - "cell_type": "code", - "execution_count": 32, - "id": "b684d824", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "saved yaml to: /workspaces/astra_sim_service/client-scripts/utils/../trial/ns3_single_dgx/output/../ns3_single_dgx.yaml\n" - ] - } - ], - "source": [ - "with open(os.path.join(FileFolderUtils.get_instance().OUTPUT_DIR,\"../infrastructure\",\"ns3_single_dgx.yaml\"),\"w\") as f:\n", - " data = infrastructure.serialize(\"dict\")\n", - " yaml.dump(data, f, default_flow_style=False, indent=4)\n", - "\n", - "print(\"saved yaml to:\", os.path.join(FileFolderUtils.get_instance().OUTPUT_DIR,\"..\",\"ns3_single_dgx.yaml\"))" - ] } ], "metadata": { diff --git a/client-scripts/notebooks/infragraph/ns3_single_ironwood_device.ipynb b/client-scripts/notebooks/infragraph/ns3_single_ironwood_device.ipynb index 5d96e58..f6aa0fd 100644 --- a/client-scripts/notebooks/infragraph/ns3_single_ironwood_device.ipynb +++ b/client-scripts/notebooks/infragraph/ns3_single_ironwood_device.ipynb @@ -10,7 +10,7 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": null, "id": "a0928b9a", "metadata": {}, "outputs": [], @@ -20,9 +20,11 @@ "import networkx\n", "import yaml\n", "import os\n", + "import subprocess\n", "import pandas as pd\n", "import astra_sim_sdk.astra_sim_sdk as astra_sim_kit\n", "from common import FileFolderUtils\n", + "from IPython.display import IFrame\n", "from astra_sim import AstraSim, Collective, NetworkBackend\n", "from infragraph.infragraph_service import InfraGraphService\n", "from infragraph.blueprints.devices.ironwood_rack import IronwoodRack\n", @@ -39,20 +41,10 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": null, "id": "3228a246", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Resetting test directory\n", - "All contents of the folder /workspaces/astra_sim_service/client-scripts/utils/../trial/ns3_single_ironwood have been deleted.\n", - "Successfully connected to gRPC server at 172.17.0.2:8989\n" - ] - } - ], + "outputs": [], "source": [ "astra = AstraSim(server_endpoint = \"172.17.0.2:8989\", tag = \"ns3_single_ironwood\")" ] @@ -67,1780 +59,10 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": null, "id": "975c511f", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "devices:\n", - "- components:\n", - " - choice: xpu\n", - " count: 64\n", - " description: Ironwood TPU\n", - " name: IRONWOOD\n", - " - choice: cpu\n", - " count: 32\n", - " description: AMD EPYC CPU\n", - " name: AMD_TURIN_ZEN5_EPYC\n", - " - choice: nic\n", - " count: 32\n", - " description: Network Interface Card\n", - " name: nic200\n", - " description: Rack with 64 XPUs in 4x4x4 Torus, 32 CPUs, and 32 NICs\n", - " edges:\n", - " - ep1:\n", - " component: IRONWOOD[0]\n", - " ep2:\n", - " component: IRONWOOD[1]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[0]\n", - " ep2:\n", - " component: IRONWOOD[4]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[0]\n", - " ep2:\n", - " component: IRONWOOD[16]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[1]\n", - " ep2:\n", - " component: IRONWOOD[2]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[1]\n", - " ep2:\n", - " component: IRONWOOD[5]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[1]\n", - " ep2:\n", - " component: IRONWOOD[17]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[2]\n", - " ep2:\n", - " component: IRONWOOD[3]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[2]\n", - " ep2:\n", - " component: IRONWOOD[6]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[2]\n", - " ep2:\n", - " component: IRONWOOD[18]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[3]\n", - " ep2:\n", - " component: IRONWOOD[0]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[3]\n", - " ep2:\n", - " component: IRONWOOD[7]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[3]\n", - " ep2:\n", - " component: IRONWOOD[19]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[4]\n", - " ep2:\n", - " component: IRONWOOD[5]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[4]\n", - " ep2:\n", - " component: IRONWOOD[8]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[4]\n", - " ep2:\n", - " component: IRONWOOD[20]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[5]\n", - " ep2:\n", - " component: IRONWOOD[6]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[5]\n", - " ep2:\n", - " component: IRONWOOD[9]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[5]\n", - " ep2:\n", - " component: IRONWOOD[21]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[6]\n", - " ep2:\n", - " component: IRONWOOD[7]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[6]\n", - " ep2:\n", - " component: IRONWOOD[10]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[6]\n", - " ep2:\n", - " component: IRONWOOD[22]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[7]\n", - " ep2:\n", - " component: IRONWOOD[4]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[7]\n", - " ep2:\n", - " component: IRONWOOD[11]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[7]\n", - " ep2:\n", - " component: IRONWOOD[23]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[8]\n", - " ep2:\n", - " component: IRONWOOD[9]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[8]\n", - " ep2:\n", - " component: IRONWOOD[12]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[8]\n", - " ep2:\n", - " component: IRONWOOD[24]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[9]\n", - " ep2:\n", - " component: IRONWOOD[10]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[9]\n", - " ep2:\n", - " component: IRONWOOD[13]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[9]\n", - " ep2:\n", - " component: IRONWOOD[25]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[10]\n", - " ep2:\n", - " component: IRONWOOD[11]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[10]\n", - " ep2:\n", - " component: IRONWOOD[14]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[10]\n", - " ep2:\n", - " component: IRONWOOD[26]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[11]\n", - " ep2:\n", - " component: IRONWOOD[8]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[11]\n", - " ep2:\n", - " component: IRONWOOD[15]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[11]\n", - " ep2:\n", - " component: IRONWOOD[27]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[12]\n", - " ep2:\n", - " component: IRONWOOD[13]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[12]\n", - " ep2:\n", - " component: IRONWOOD[0]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[12]\n", - " ep2:\n", - " component: IRONWOOD[28]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[13]\n", - " ep2:\n", - " component: IRONWOOD[14]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[13]\n", - " ep2:\n", - " component: IRONWOOD[1]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[13]\n", - " ep2:\n", - " component: IRONWOOD[29]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[14]\n", - " ep2:\n", - " component: IRONWOOD[15]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[14]\n", - " ep2:\n", - " component: IRONWOOD[2]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[14]\n", - " ep2:\n", - " component: IRONWOOD[30]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[15]\n", - " ep2:\n", - " component: IRONWOOD[12]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[15]\n", - " ep2:\n", - " component: IRONWOOD[3]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[15]\n", - " ep2:\n", - " component: IRONWOOD[31]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[16]\n", - " ep2:\n", - " component: IRONWOOD[17]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[16]\n", - " ep2:\n", - " component: IRONWOOD[20]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[16]\n", - " ep2:\n", - " component: IRONWOOD[32]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[17]\n", - " ep2:\n", - " component: IRONWOOD[18]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[17]\n", - " ep2:\n", - " component: IRONWOOD[21]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[17]\n", - " ep2:\n", - " component: IRONWOOD[33]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[18]\n", - " ep2:\n", - " component: IRONWOOD[19]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[18]\n", - " ep2:\n", - " component: IRONWOOD[22]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[18]\n", - " ep2:\n", - " component: IRONWOOD[34]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[19]\n", - " ep2:\n", - " component: IRONWOOD[16]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[19]\n", - " ep2:\n", - " component: IRONWOOD[23]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[19]\n", - " ep2:\n", - " component: IRONWOOD[35]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[20]\n", - " ep2:\n", - " component: IRONWOOD[21]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[20]\n", - " ep2:\n", - " component: IRONWOOD[24]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[20]\n", - " ep2:\n", - " component: IRONWOOD[36]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[21]\n", - " ep2:\n", - " component: IRONWOOD[22]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[21]\n", - " ep2:\n", - " component: IRONWOOD[25]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[21]\n", - " ep2:\n", - " component: IRONWOOD[37]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[22]\n", - " ep2:\n", - " component: IRONWOOD[23]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[22]\n", - " ep2:\n", - " component: IRONWOOD[26]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[22]\n", - " ep2:\n", - " component: IRONWOOD[38]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[23]\n", - " ep2:\n", - " component: IRONWOOD[20]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[23]\n", - " ep2:\n", - " component: IRONWOOD[27]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[23]\n", - " ep2:\n", - " component: IRONWOOD[39]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[24]\n", - " ep2:\n", - " component: IRONWOOD[25]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[24]\n", - " ep2:\n", - " component: IRONWOOD[28]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[24]\n", - " ep2:\n", - " component: IRONWOOD[40]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[25]\n", - " ep2:\n", - " component: IRONWOOD[26]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[25]\n", - " ep2:\n", - " component: IRONWOOD[29]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[25]\n", - " ep2:\n", - " component: IRONWOOD[41]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[26]\n", - " ep2:\n", - " component: IRONWOOD[27]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[26]\n", - " ep2:\n", - " component: IRONWOOD[30]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[26]\n", - " ep2:\n", - " component: IRONWOOD[42]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[27]\n", - " ep2:\n", - " component: IRONWOOD[24]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[27]\n", - " ep2:\n", - " component: IRONWOOD[31]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[27]\n", - " ep2:\n", - " component: IRONWOOD[43]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[28]\n", - " ep2:\n", - " component: IRONWOOD[29]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[28]\n", - " ep2:\n", - " component: IRONWOOD[16]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[28]\n", - " ep2:\n", - " component: IRONWOOD[44]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[29]\n", - " ep2:\n", - " component: IRONWOOD[30]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[29]\n", - " ep2:\n", - " component: IRONWOOD[17]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[29]\n", - " ep2:\n", - " component: IRONWOOD[45]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[30]\n", - " ep2:\n", - " component: IRONWOOD[31]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[30]\n", - " ep2:\n", - " component: IRONWOOD[18]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[30]\n", - " ep2:\n", - " component: IRONWOOD[46]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[31]\n", - " ep2:\n", - " component: IRONWOOD[28]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[31]\n", - " ep2:\n", - " component: IRONWOOD[19]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[31]\n", - " ep2:\n", - " component: IRONWOOD[47]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[32]\n", - " ep2:\n", - " component: IRONWOOD[33]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[32]\n", - " ep2:\n", - " component: IRONWOOD[36]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[32]\n", - " ep2:\n", - " component: IRONWOOD[48]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[33]\n", - " ep2:\n", - " component: IRONWOOD[34]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[33]\n", - " ep2:\n", - " component: IRONWOOD[37]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[33]\n", - " ep2:\n", - " component: IRONWOOD[49]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[34]\n", - " ep2:\n", - " component: IRONWOOD[35]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[34]\n", - " ep2:\n", - " component: IRONWOOD[38]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[34]\n", - " ep2:\n", - " component: IRONWOOD[50]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[35]\n", - " ep2:\n", - " component: IRONWOOD[32]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[35]\n", - " ep2:\n", - " component: IRONWOOD[39]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[35]\n", - " ep2:\n", - " component: IRONWOOD[51]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[36]\n", - " ep2:\n", - " component: IRONWOOD[37]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[36]\n", - " ep2:\n", - " component: IRONWOOD[40]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[36]\n", - " ep2:\n", - " component: IRONWOOD[52]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[37]\n", - " ep2:\n", - " component: IRONWOOD[38]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[37]\n", - " ep2:\n", - " component: IRONWOOD[41]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[37]\n", - " ep2:\n", - " component: IRONWOOD[53]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[38]\n", - " ep2:\n", - " component: IRONWOOD[39]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[38]\n", - " ep2:\n", - " component: IRONWOOD[42]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[38]\n", - " ep2:\n", - " component: IRONWOOD[54]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[39]\n", - " ep2:\n", - " component: IRONWOOD[36]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[39]\n", - " ep2:\n", - " component: IRONWOOD[43]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[39]\n", - " ep2:\n", - " component: IRONWOOD[55]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[40]\n", - " ep2:\n", - " component: IRONWOOD[41]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[40]\n", - " ep2:\n", - " component: IRONWOOD[44]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[40]\n", - " ep2:\n", - " component: IRONWOOD[56]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[41]\n", - " ep2:\n", - " component: IRONWOOD[42]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[41]\n", - " ep2:\n", - " component: IRONWOOD[45]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[41]\n", - " ep2:\n", - " component: IRONWOOD[57]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[42]\n", - " ep2:\n", - " component: IRONWOOD[43]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[42]\n", - " ep2:\n", - " component: IRONWOOD[46]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[42]\n", - " ep2:\n", - " component: IRONWOOD[58]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[43]\n", - " ep2:\n", - " component: IRONWOOD[40]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[43]\n", - " ep2:\n", - " component: IRONWOOD[47]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[43]\n", - " ep2:\n", - " component: IRONWOOD[59]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[44]\n", - " ep2:\n", - " component: IRONWOOD[45]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[44]\n", - " ep2:\n", - " component: IRONWOOD[32]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[44]\n", - " ep2:\n", - " component: IRONWOOD[60]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[45]\n", - " ep2:\n", - " component: IRONWOOD[46]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[45]\n", - " ep2:\n", - " component: IRONWOOD[33]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[45]\n", - " ep2:\n", - " component: IRONWOOD[61]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[46]\n", - " ep2:\n", - " component: IRONWOOD[47]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[46]\n", - " ep2:\n", - " component: IRONWOOD[34]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[46]\n", - " ep2:\n", - " component: IRONWOOD[62]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[47]\n", - " ep2:\n", - " component: IRONWOOD[44]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[47]\n", - " ep2:\n", - " component: IRONWOOD[35]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[47]\n", - " ep2:\n", - " component: IRONWOOD[63]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[48]\n", - " ep2:\n", - " component: IRONWOOD[49]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[48]\n", - " ep2:\n", - " component: IRONWOOD[52]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[48]\n", - " ep2:\n", - " component: IRONWOOD[0]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[49]\n", - " ep2:\n", - " component: IRONWOOD[50]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[49]\n", - " ep2:\n", - " component: IRONWOOD[53]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[49]\n", - " ep2:\n", - " component: IRONWOOD[1]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[50]\n", - " ep2:\n", - " component: IRONWOOD[51]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[50]\n", - " ep2:\n", - " component: IRONWOOD[54]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[50]\n", - " ep2:\n", - " component: IRONWOOD[2]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[51]\n", - " ep2:\n", - " component: IRONWOOD[48]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[51]\n", - " ep2:\n", - " component: IRONWOOD[55]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[51]\n", - " ep2:\n", - " component: IRONWOOD[3]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[52]\n", - " ep2:\n", - " component: IRONWOOD[53]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[52]\n", - " ep2:\n", - " component: IRONWOOD[56]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[52]\n", - " ep2:\n", - " component: IRONWOOD[4]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[53]\n", - " ep2:\n", - " component: IRONWOOD[54]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[53]\n", - " ep2:\n", - " component: IRONWOOD[57]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[53]\n", - " ep2:\n", - " component: IRONWOOD[5]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[54]\n", - " ep2:\n", - " component: IRONWOOD[55]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[54]\n", - " ep2:\n", - " component: IRONWOOD[58]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[54]\n", - " ep2:\n", - " component: IRONWOOD[6]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[55]\n", - " ep2:\n", - " component: IRONWOOD[52]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[55]\n", - " ep2:\n", - " component: IRONWOOD[59]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[55]\n", - " ep2:\n", - " component: IRONWOOD[7]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[56]\n", - " ep2:\n", - " component: IRONWOOD[57]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[56]\n", - " ep2:\n", - " component: IRONWOOD[60]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[56]\n", - " ep2:\n", - " component: IRONWOOD[8]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[57]\n", - " ep2:\n", - " component: IRONWOOD[58]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[57]\n", - " ep2:\n", - " component: IRONWOOD[61]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[57]\n", - " ep2:\n", - " component: IRONWOOD[9]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[58]\n", - " ep2:\n", - " component: IRONWOOD[59]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[58]\n", - " ep2:\n", - " component: IRONWOOD[62]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[58]\n", - " ep2:\n", - " component: IRONWOOD[10]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[59]\n", - " ep2:\n", - " component: IRONWOOD[56]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[59]\n", - " ep2:\n", - " component: IRONWOOD[63]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[59]\n", - " ep2:\n", - " component: IRONWOOD[11]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[60]\n", - " ep2:\n", - " component: IRONWOOD[61]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[60]\n", - " ep2:\n", - " component: IRONWOOD[48]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[60]\n", - " ep2:\n", - " component: IRONWOOD[12]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[61]\n", - " ep2:\n", - " component: IRONWOOD[62]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[61]\n", - " ep2:\n", - " component: IRONWOOD[49]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[61]\n", - " ep2:\n", - " component: IRONWOOD[13]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[62]\n", - " ep2:\n", - " component: IRONWOOD[63]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[62]\n", - " ep2:\n", - " component: IRONWOOD[50]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[62]\n", - " ep2:\n", - " component: IRONWOOD[14]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[63]\n", - " ep2:\n", - " component: IRONWOOD[60]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[63]\n", - " ep2:\n", - " component: IRONWOOD[51]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: IRONWOOD[63]\n", - " ep2:\n", - " component: IRONWOOD[15]\n", - " link: ici\n", - " scheme: one2one\n", - " - ep1:\n", - " component: AMD_TURIN_ZEN5_EPYC[0]\n", - " ep2:\n", - " component: IRONWOOD[0]\n", - " link: pcie_gen5\n", - " scheme: one2one\n", - " - ep1:\n", - " component: AMD_TURIN_ZEN5_EPYC[0]\n", - " ep2:\n", - " component: IRONWOOD[1]\n", - " link: pcie_gen5\n", - " scheme: one2one\n", - " - ep1:\n", - " component: AMD_TURIN_ZEN5_EPYC[1]\n", - " ep2:\n", - " component: IRONWOOD[2]\n", - " link: pcie_gen5\n", - " scheme: one2one\n", - " - ep1:\n", - " component: AMD_TURIN_ZEN5_EPYC[1]\n", - " ep2:\n", - " component: IRONWOOD[3]\n", - " link: pcie_gen5\n", - " scheme: one2one\n", - " - ep1:\n", - " component: AMD_TURIN_ZEN5_EPYC[2]\n", - " ep2:\n", - " component: IRONWOOD[4]\n", - " link: pcie_gen5\n", - " scheme: one2one\n", - " - ep1:\n", - " component: AMD_TURIN_ZEN5_EPYC[2]\n", - " ep2:\n", - " component: IRONWOOD[5]\n", - " link: pcie_gen5\n", - " scheme: one2one\n", - " - ep1:\n", - " component: AMD_TURIN_ZEN5_EPYC[3]\n", - " ep2:\n", - " component: IRONWOOD[6]\n", - " link: pcie_gen5\n", - " scheme: one2one\n", - " - ep1:\n", - " component: AMD_TURIN_ZEN5_EPYC[3]\n", - " ep2:\n", - " component: IRONWOOD[7]\n", - " link: pcie_gen5\n", - " scheme: one2one\n", - " - ep1:\n", - " component: AMD_TURIN_ZEN5_EPYC[4]\n", - " ep2:\n", - " component: IRONWOOD[8]\n", - " link: pcie_gen5\n", - " scheme: one2one\n", - " - ep1:\n", - " component: AMD_TURIN_ZEN5_EPYC[4]\n", - " ep2:\n", - " component: IRONWOOD[9]\n", - " link: pcie_gen5\n", - " scheme: one2one\n", - " - ep1:\n", - " component: AMD_TURIN_ZEN5_EPYC[5]\n", - " ep2:\n", - " component: IRONWOOD[10]\n", - " link: pcie_gen5\n", - " scheme: one2one\n", - " - ep1:\n", - " component: AMD_TURIN_ZEN5_EPYC[5]\n", - " ep2:\n", - " component: IRONWOOD[11]\n", - " link: pcie_gen5\n", - " scheme: one2one\n", - " - ep1:\n", - " component: AMD_TURIN_ZEN5_EPYC[6]\n", - " ep2:\n", - " component: IRONWOOD[12]\n", - " link: pcie_gen5\n", - " scheme: one2one\n", - " - ep1:\n", - " component: AMD_TURIN_ZEN5_EPYC[6]\n", - " ep2:\n", - " component: IRONWOOD[13]\n", - " link: pcie_gen5\n", - " scheme: one2one\n", - " - ep1:\n", - " component: AMD_TURIN_ZEN5_EPYC[7]\n", - " ep2:\n", - " component: IRONWOOD[14]\n", - " link: pcie_gen5\n", - " scheme: one2one\n", - " - ep1:\n", - " component: AMD_TURIN_ZEN5_EPYC[7]\n", - " ep2:\n", - " component: IRONWOOD[15]\n", - " link: pcie_gen5\n", - " scheme: one2one\n", - " - ep1:\n", - " component: AMD_TURIN_ZEN5_EPYC[8]\n", - " ep2:\n", - " component: IRONWOOD[16]\n", - " link: pcie_gen5\n", - " scheme: one2one\n", - " - ep1:\n", - " component: AMD_TURIN_ZEN5_EPYC[8]\n", - " ep2:\n", - " component: IRONWOOD[17]\n", - " link: pcie_gen5\n", - " scheme: one2one\n", - " - ep1:\n", - " component: AMD_TURIN_ZEN5_EPYC[9]\n", - " ep2:\n", - " component: IRONWOOD[18]\n", - " link: pcie_gen5\n", - " scheme: one2one\n", - " - ep1:\n", - " component: AMD_TURIN_ZEN5_EPYC[9]\n", - " ep2:\n", - " component: IRONWOOD[19]\n", - " link: pcie_gen5\n", - " scheme: one2one\n", - " - ep1:\n", - " component: AMD_TURIN_ZEN5_EPYC[10]\n", - " ep2:\n", - " component: IRONWOOD[20]\n", - " link: pcie_gen5\n", - " scheme: one2one\n", - " - ep1:\n", - " component: AMD_TURIN_ZEN5_EPYC[10]\n", - " ep2:\n", - " component: IRONWOOD[21]\n", - " link: pcie_gen5\n", - " scheme: one2one\n", - " - ep1:\n", - " component: AMD_TURIN_ZEN5_EPYC[11]\n", - " ep2:\n", - " component: IRONWOOD[22]\n", - " link: pcie_gen5\n", - " scheme: one2one\n", - " - ep1:\n", - " component: AMD_TURIN_ZEN5_EPYC[11]\n", - " ep2:\n", - " component: IRONWOOD[23]\n", - " link: pcie_gen5\n", - " scheme: one2one\n", - " - ep1:\n", - " component: AMD_TURIN_ZEN5_EPYC[12]\n", - " ep2:\n", - " component: IRONWOOD[24]\n", - " link: pcie_gen5\n", - " scheme: one2one\n", - " - ep1:\n", - " component: AMD_TURIN_ZEN5_EPYC[12]\n", - " ep2:\n", - " component: IRONWOOD[25]\n", - " link: pcie_gen5\n", - " scheme: one2one\n", - " - ep1:\n", - " component: AMD_TURIN_ZEN5_EPYC[13]\n", - " ep2:\n", - " component: IRONWOOD[26]\n", - " link: pcie_gen5\n", - " scheme: one2one\n", - " - ep1:\n", - " component: AMD_TURIN_ZEN5_EPYC[13]\n", - " ep2:\n", - " component: IRONWOOD[27]\n", - " link: pcie_gen5\n", - " scheme: one2one\n", - " - ep1:\n", - " component: AMD_TURIN_ZEN5_EPYC[14]\n", - " ep2:\n", - " component: IRONWOOD[28]\n", - " link: pcie_gen5\n", - " scheme: one2one\n", - " - ep1:\n", - " component: AMD_TURIN_ZEN5_EPYC[14]\n", - " ep2:\n", - " component: IRONWOOD[29]\n", - " link: pcie_gen5\n", - " scheme: one2one\n", - " - ep1:\n", - " component: AMD_TURIN_ZEN5_EPYC[15]\n", - " ep2:\n", - " component: IRONWOOD[30]\n", - " link: pcie_gen5\n", - " scheme: one2one\n", - " - ep1:\n", - " component: AMD_TURIN_ZEN5_EPYC[15]\n", - " ep2:\n", - " component: IRONWOOD[31]\n", - " link: pcie_gen5\n", - " scheme: one2one\n", - " - ep1:\n", - " component: AMD_TURIN_ZEN5_EPYC[16]\n", - " ep2:\n", - " component: IRONWOOD[32]\n", - " link: pcie_gen5\n", - " scheme: one2one\n", - " - ep1:\n", - " component: AMD_TURIN_ZEN5_EPYC[16]\n", - " ep2:\n", - " component: IRONWOOD[33]\n", - " link: pcie_gen5\n", - " scheme: one2one\n", - " - ep1:\n", - " component: AMD_TURIN_ZEN5_EPYC[17]\n", - " ep2:\n", - " component: IRONWOOD[34]\n", - " link: pcie_gen5\n", - " scheme: one2one\n", - " - ep1:\n", - " component: AMD_TURIN_ZEN5_EPYC[17]\n", - " ep2:\n", - " component: IRONWOOD[35]\n", - " link: pcie_gen5\n", - " scheme: one2one\n", - " - ep1:\n", - " component: AMD_TURIN_ZEN5_EPYC[18]\n", - " ep2:\n", - " component: IRONWOOD[36]\n", - " link: pcie_gen5\n", - " scheme: one2one\n", - " - ep1:\n", - " component: AMD_TURIN_ZEN5_EPYC[18]\n", - " ep2:\n", - " component: IRONWOOD[37]\n", - " link: pcie_gen5\n", - " scheme: one2one\n", - " - ep1:\n", - " component: AMD_TURIN_ZEN5_EPYC[19]\n", - " ep2:\n", - " component: IRONWOOD[38]\n", - " link: pcie_gen5\n", - " scheme: one2one\n", - " - ep1:\n", - " component: AMD_TURIN_ZEN5_EPYC[19]\n", - " ep2:\n", - " component: IRONWOOD[39]\n", - " link: pcie_gen5\n", - " scheme: one2one\n", - " - ep1:\n", - " component: AMD_TURIN_ZEN5_EPYC[20]\n", - " ep2:\n", - " component: IRONWOOD[40]\n", - " link: pcie_gen5\n", - " scheme: one2one\n", - " - ep1:\n", - " component: AMD_TURIN_ZEN5_EPYC[20]\n", - " ep2:\n", - " component: IRONWOOD[41]\n", - " link: pcie_gen5\n", - " scheme: one2one\n", - " - ep1:\n", - " component: AMD_TURIN_ZEN5_EPYC[21]\n", - " ep2:\n", - " component: IRONWOOD[42]\n", - " link: pcie_gen5\n", - " scheme: one2one\n", - " - ep1:\n", - " component: AMD_TURIN_ZEN5_EPYC[21]\n", - " ep2:\n", - " component: IRONWOOD[43]\n", - " link: pcie_gen5\n", - " scheme: one2one\n", - " - ep1:\n", - " component: AMD_TURIN_ZEN5_EPYC[22]\n", - " ep2:\n", - " component: IRONWOOD[44]\n", - " link: pcie_gen5\n", - " scheme: one2one\n", - " - ep1:\n", - " component: AMD_TURIN_ZEN5_EPYC[22]\n", - " ep2:\n", - " component: IRONWOOD[45]\n", - " link: pcie_gen5\n", - " scheme: one2one\n", - " - ep1:\n", - " component: AMD_TURIN_ZEN5_EPYC[23]\n", - " ep2:\n", - " component: IRONWOOD[46]\n", - " link: pcie_gen5\n", - " scheme: one2one\n", - " - ep1:\n", - " component: AMD_TURIN_ZEN5_EPYC[23]\n", - " ep2:\n", - " component: IRONWOOD[47]\n", - " link: pcie_gen5\n", - " scheme: one2one\n", - " - ep1:\n", - " component: AMD_TURIN_ZEN5_EPYC[24]\n", - " ep2:\n", - " component: IRONWOOD[48]\n", - " link: pcie_gen5\n", - " scheme: one2one\n", - " - ep1:\n", - " component: AMD_TURIN_ZEN5_EPYC[24]\n", - " ep2:\n", - " component: IRONWOOD[49]\n", - " link: pcie_gen5\n", - " scheme: one2one\n", - " - ep1:\n", - " component: AMD_TURIN_ZEN5_EPYC[25]\n", - " ep2:\n", - " component: IRONWOOD[50]\n", - " link: pcie_gen5\n", - " scheme: one2one\n", - " - ep1:\n", - " component: AMD_TURIN_ZEN5_EPYC[25]\n", - " ep2:\n", - " component: IRONWOOD[51]\n", - " link: pcie_gen5\n", - " scheme: one2one\n", - " - ep1:\n", - " component: AMD_TURIN_ZEN5_EPYC[26]\n", - " ep2:\n", - " component: IRONWOOD[52]\n", - " link: pcie_gen5\n", - " scheme: one2one\n", - " - ep1:\n", - " component: AMD_TURIN_ZEN5_EPYC[26]\n", - " ep2:\n", - " component: IRONWOOD[53]\n", - " link: pcie_gen5\n", - " scheme: one2one\n", - " - ep1:\n", - " component: AMD_TURIN_ZEN5_EPYC[27]\n", - " ep2:\n", - " component: IRONWOOD[54]\n", - " link: pcie_gen5\n", - " scheme: one2one\n", - " - ep1:\n", - " component: AMD_TURIN_ZEN5_EPYC[27]\n", - " ep2:\n", - " component: IRONWOOD[55]\n", - " link: pcie_gen5\n", - " scheme: one2one\n", - " - ep1:\n", - " component: AMD_TURIN_ZEN5_EPYC[28]\n", - " ep2:\n", - " component: IRONWOOD[56]\n", - " link: pcie_gen5\n", - " scheme: one2one\n", - " - ep1:\n", - " component: AMD_TURIN_ZEN5_EPYC[28]\n", - " ep2:\n", - " component: IRONWOOD[57]\n", - " link: pcie_gen5\n", - " scheme: one2one\n", - " - ep1:\n", - " component: AMD_TURIN_ZEN5_EPYC[29]\n", - " ep2:\n", - " component: IRONWOOD[58]\n", - " link: pcie_gen5\n", - " scheme: one2one\n", - " - ep1:\n", - " component: AMD_TURIN_ZEN5_EPYC[29]\n", - " ep2:\n", - " component: IRONWOOD[59]\n", - " link: pcie_gen5\n", - " scheme: one2one\n", - " - ep1:\n", - " component: AMD_TURIN_ZEN5_EPYC[30]\n", - " ep2:\n", - " component: IRONWOOD[60]\n", - " link: pcie_gen5\n", - " scheme: one2one\n", - " - ep1:\n", - " component: AMD_TURIN_ZEN5_EPYC[30]\n", - " ep2:\n", - " component: IRONWOOD[61]\n", - " link: pcie_gen5\n", - " scheme: one2one\n", - " - ep1:\n", - " component: AMD_TURIN_ZEN5_EPYC[31]\n", - " ep2:\n", - " component: IRONWOOD[62]\n", - " link: pcie_gen5\n", - " scheme: one2one\n", - " - ep1:\n", - " component: AMD_TURIN_ZEN5_EPYC[31]\n", - " ep2:\n", - " component: IRONWOOD[63]\n", - " link: pcie_gen5\n", - " scheme: one2one\n", - " - ep1:\n", - " component: AMD_TURIN_ZEN5_EPYC[0]\n", - " ep2:\n", - " component: nic200[0]\n", - " link: pcie_gen5\n", - " scheme: one2one\n", - " - ep1:\n", - " component: AMD_TURIN_ZEN5_EPYC[1]\n", - " ep2:\n", - " component: nic200[1]\n", - " link: pcie_gen5\n", - " scheme: one2one\n", - " - ep1:\n", - " component: AMD_TURIN_ZEN5_EPYC[2]\n", - " ep2:\n", - " component: nic200[2]\n", - " link: pcie_gen5\n", - " scheme: one2one\n", - " - ep1:\n", - " component: AMD_TURIN_ZEN5_EPYC[3]\n", - " ep2:\n", - " component: nic200[3]\n", - " link: pcie_gen5\n", - " scheme: one2one\n", - " - ep1:\n", - " component: AMD_TURIN_ZEN5_EPYC[4]\n", - " ep2:\n", - " component: nic200[4]\n", - " link: pcie_gen5\n", - " scheme: one2one\n", - " - ep1:\n", - " component: AMD_TURIN_ZEN5_EPYC[5]\n", - " ep2:\n", - " component: nic200[5]\n", - " link: pcie_gen5\n", - " scheme: one2one\n", - " - ep1:\n", - " component: AMD_TURIN_ZEN5_EPYC[6]\n", - " ep2:\n", - " component: nic200[6]\n", - " link: pcie_gen5\n", - " scheme: one2one\n", - " - ep1:\n", - " component: AMD_TURIN_ZEN5_EPYC[7]\n", - " ep2:\n", - " component: nic200[7]\n", - " link: pcie_gen5\n", - " scheme: one2one\n", - " - ep1:\n", - " component: AMD_TURIN_ZEN5_EPYC[8]\n", - " ep2:\n", - " component: nic200[8]\n", - " link: pcie_gen5\n", - " scheme: one2one\n", - " - ep1:\n", - " component: AMD_TURIN_ZEN5_EPYC[9]\n", - " ep2:\n", - " component: nic200[9]\n", - " link: pcie_gen5\n", - " scheme: one2one\n", - " - ep1:\n", - " component: AMD_TURIN_ZEN5_EPYC[10]\n", - " ep2:\n", - " component: nic200[10]\n", - " link: pcie_gen5\n", - " scheme: one2one\n", - " - ep1:\n", - " component: AMD_TURIN_ZEN5_EPYC[11]\n", - " ep2:\n", - " component: nic200[11]\n", - " link: pcie_gen5\n", - " scheme: one2one\n", - " - ep1:\n", - " component: AMD_TURIN_ZEN5_EPYC[12]\n", - " ep2:\n", - " component: nic200[12]\n", - " link: pcie_gen5\n", - " scheme: one2one\n", - " - ep1:\n", - " component: AMD_TURIN_ZEN5_EPYC[13]\n", - " ep2:\n", - " component: nic200[13]\n", - " link: pcie_gen5\n", - " scheme: one2one\n", - " - ep1:\n", - " component: AMD_TURIN_ZEN5_EPYC[14]\n", - " ep2:\n", - " component: nic200[14]\n", - " link: pcie_gen5\n", - " scheme: one2one\n", - " - ep1:\n", - " component: AMD_TURIN_ZEN5_EPYC[15]\n", - " ep2:\n", - " component: nic200[15]\n", - " link: pcie_gen5\n", - " scheme: one2one\n", - " - ep1:\n", - " component: AMD_TURIN_ZEN5_EPYC[16]\n", - " ep2:\n", - " component: nic200[16]\n", - " link: pcie_gen5\n", - " scheme: one2one\n", - " - ep1:\n", - " component: AMD_TURIN_ZEN5_EPYC[17]\n", - " ep2:\n", - " component: nic200[17]\n", - " link: pcie_gen5\n", - " scheme: one2one\n", - " - ep1:\n", - " component: AMD_TURIN_ZEN5_EPYC[18]\n", - " ep2:\n", - " component: nic200[18]\n", - " link: pcie_gen5\n", - " scheme: one2one\n", - " - ep1:\n", - " component: AMD_TURIN_ZEN5_EPYC[19]\n", - " ep2:\n", - " component: nic200[19]\n", - " link: pcie_gen5\n", - " scheme: one2one\n", - " - ep1:\n", - " component: AMD_TURIN_ZEN5_EPYC[20]\n", - " ep2:\n", - " component: nic200[20]\n", - " link: pcie_gen5\n", - " scheme: one2one\n", - " - ep1:\n", - " component: AMD_TURIN_ZEN5_EPYC[21]\n", - " ep2:\n", - " component: nic200[21]\n", - " link: pcie_gen5\n", - " scheme: one2one\n", - " - ep1:\n", - " component: AMD_TURIN_ZEN5_EPYC[22]\n", - " ep2:\n", - " component: nic200[22]\n", - " link: pcie_gen5\n", - " scheme: one2one\n", - " - ep1:\n", - " component: AMD_TURIN_ZEN5_EPYC[23]\n", - " ep2:\n", - " component: nic200[23]\n", - " link: pcie_gen5\n", - " scheme: one2one\n", - " - ep1:\n", - " component: AMD_TURIN_ZEN5_EPYC[24]\n", - " ep2:\n", - " component: nic200[24]\n", - " link: pcie_gen5\n", - " scheme: one2one\n", - " - ep1:\n", - " component: AMD_TURIN_ZEN5_EPYC[25]\n", - " ep2:\n", - " component: nic200[25]\n", - " link: pcie_gen5\n", - " scheme: one2one\n", - " - ep1:\n", - " component: AMD_TURIN_ZEN5_EPYC[26]\n", - " ep2:\n", - " component: nic200[26]\n", - " link: pcie_gen5\n", - " scheme: one2one\n", - " - ep1:\n", - " component: AMD_TURIN_ZEN5_EPYC[27]\n", - " ep2:\n", - " component: nic200[27]\n", - " link: pcie_gen5\n", - " scheme: one2one\n", - " - ep1:\n", - " component: AMD_TURIN_ZEN5_EPYC[28]\n", - " ep2:\n", - " component: nic200[28]\n", - " link: pcie_gen5\n", - " scheme: one2one\n", - " - ep1:\n", - " component: AMD_TURIN_ZEN5_EPYC[29]\n", - " ep2:\n", - " component: nic200[29]\n", - " link: pcie_gen5\n", - " scheme: one2one\n", - " - ep1:\n", - " component: AMD_TURIN_ZEN5_EPYC[30]\n", - " ep2:\n", - " component: nic200[30]\n", - " link: pcie_gen5\n", - " scheme: one2one\n", - " - ep1:\n", - " component: AMD_TURIN_ZEN5_EPYC[31]\n", - " ep2:\n", - " component: nic200[31]\n", - " link: pcie_gen5\n", - " scheme: one2one\n", - " links:\n", - " - description: Interchip Interconnect (ICI) link\n", - " name: ici\n", - " physical:\n", - " bandwidth:\n", - " choice: gigabits_per_second\n", - " gigabits_per_second: 1400\n", - " - description: PCI Express Gen5 link\n", - " name: pcie_gen5\n", - " physical:\n", - " bandwidth:\n", - " choice: gigabits_per_second\n", - " gigabits_per_second: 128\n", - " name: IRONWOOD_TORUS_RACK_4x4x4\n", - "instances:\n", - "- count: 1\n", - " device: IRONWOOD_TORUS_RACK_4x4x4\n", - " name: IRONWOOD_TORUS_RACK_4x4x4\n", - "\n" - ] - } - ], + "outputs": [], "source": [ "server = IronwoodRack()\n", "infrastructure = Infrastructure()\n", @@ -1860,239 +82,10 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": null, "id": "d33bcaf7", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "╙── IRONWOOD_TORUS_RACK_4x4x4.0.nic200.17\n", - " │\n", - " IRONWOOD_TORUS_RACK_4x4x4.0.AMD_TURIN_ZEN5_EPYC.17\n", - " ├── IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.34\n", - " │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.18\n", - " │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.2\n", - " │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.1\n", - " │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.0\n", - " │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.4\n", - " │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.5 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.1\n", - " │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.6 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.2\n", - " │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.7 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.4\n", - " │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.3 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.2, IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.0\n", - " │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.19 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.18\n", - " │ │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.16 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.17 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.1, IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.18\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.21 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.5\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.20 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.4, IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.16\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.24\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.8 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.4\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.9 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.5\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.10 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.6\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.11 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.7, IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.8\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.15 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.3\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.14 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.10, IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.2\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.13 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.9, IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.1\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.12 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.8, IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.0, IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.15\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.28 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.24, IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.16\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.29 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.13, IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.17\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.25 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.9, IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.21, IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.24\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.26 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.10\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.22 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.6, IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.18, IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.21\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.23 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.7, IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.19, IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.20\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.27 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.11, IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.26, IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.24\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.31 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.15, IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.28, IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.19\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.30 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.14, IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.26, IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.29, IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.18\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.46 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.34\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.42 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.26\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.38 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.22, IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.34\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.37 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.21\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.33 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.17, IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.34\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.32 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.16\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.36 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.20, IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.37\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.40 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.24\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.41 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.25, IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.37, IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.42\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.45 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.29, IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.46, IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.33\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.44 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.28, IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.40, IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.32\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.60 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.12\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.56 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.40, IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.8\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.52 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.36, IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.4\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.48 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.32, IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.0, IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.60\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.49 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.33, IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.1\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.50 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.34, IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.2\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.51 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.48, IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.3\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.35 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.19, IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.34, IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.32, IRONWOOD_TORUS_RACK_4x4x4.0.AMD_TURIN_ZEN5_EPYC.17\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.39 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.23, IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.38, IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.36\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.43 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.27, IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.42, IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.40\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.47 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.31, IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.46, IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.44, IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.35\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.63 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.60, IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.51, IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.15\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.59 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.43, IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.56, IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.11\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.55 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.39, IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.51, IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.52, IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.7\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.54 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.38, IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.50, IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.6\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.53 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.37, IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.49, IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.52, IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.5\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.57 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.41, IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.56, IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.9\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.58 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.42, IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.54, IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.59, IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.10\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.62 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.46, IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.63, IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.50, IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.14\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.61 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.45, IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.57, IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.60, IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.49, IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.13\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ IRONWOOD_TORUS_RACK_4x4x4.0.AMD_TURIN_ZEN5_EPYC.30 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.60\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ IRONWOOD_TORUS_RACK_4x4x4.0.nic200.30\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── IRONWOOD_TORUS_RACK_4x4x4.0.AMD_TURIN_ZEN5_EPYC.31 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.63\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ IRONWOOD_TORUS_RACK_4x4x4.0.nic200.31\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── IRONWOOD_TORUS_RACK_4x4x4.0.AMD_TURIN_ZEN5_EPYC.29 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.59\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ IRONWOOD_TORUS_RACK_4x4x4.0.nic200.29\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.AMD_TURIN_ZEN5_EPYC.28 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.56\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ IRONWOOD_TORUS_RACK_4x4x4.0.nic200.28\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── IRONWOOD_TORUS_RACK_4x4x4.0.AMD_TURIN_ZEN5_EPYC.26 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.52\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ IRONWOOD_TORUS_RACK_4x4x4.0.nic200.26\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.AMD_TURIN_ZEN5_EPYC.27 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.55\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ IRONWOOD_TORUS_RACK_4x4x4.0.nic200.27\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── IRONWOOD_TORUS_RACK_4x4x4.0.AMD_TURIN_ZEN5_EPYC.23 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.46\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ IRONWOOD_TORUS_RACK_4x4x4.0.nic200.23\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.AMD_TURIN_ZEN5_EPYC.21 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.42\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ IRONWOOD_TORUS_RACK_4x4x4.0.nic200.21\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.AMD_TURIN_ZEN5_EPYC.19 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.38\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ IRONWOOD_TORUS_RACK_4x4x4.0.nic200.19\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.AMD_TURIN_ZEN5_EPYC.25 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.50\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ IRONWOOD_TORUS_RACK_4x4x4.0.nic200.25\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.AMD_TURIN_ZEN5_EPYC.24 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.48\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ IRONWOOD_TORUS_RACK_4x4x4.0.nic200.24\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.AMD_TURIN_ZEN5_EPYC.22 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.45\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ IRONWOOD_TORUS_RACK_4x4x4.0.nic200.22\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.AMD_TURIN_ZEN5_EPYC.20 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.40\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ IRONWOOD_TORUS_RACK_4x4x4.0.nic200.20\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.AMD_TURIN_ZEN5_EPYC.18 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.37\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ IRONWOOD_TORUS_RACK_4x4x4.0.nic200.18\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.AMD_TURIN_ZEN5_EPYC.16 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.33\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ IRONWOOD_TORUS_RACK_4x4x4.0.nic200.16\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── IRONWOOD_TORUS_RACK_4x4x4.0.AMD_TURIN_ZEN5_EPYC.15 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.31\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ IRONWOOD_TORUS_RACK_4x4x4.0.nic200.15\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.AMD_TURIN_ZEN5_EPYC.13 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.26\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ IRONWOOD_TORUS_RACK_4x4x4.0.nic200.13\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.AMD_TURIN_ZEN5_EPYC.11 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.22\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ IRONWOOD_TORUS_RACK_4x4x4.0.nic200.11\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.AMD_TURIN_ZEN5_EPYC.12 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.24\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ IRONWOOD_TORUS_RACK_4x4x4.0.nic200.12\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.AMD_TURIN_ZEN5_EPYC.14 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.28\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ IRONWOOD_TORUS_RACK_4x4x4.0.nic200.14\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.AMD_TURIN_ZEN5_EPYC.6 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.13\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ IRONWOOD_TORUS_RACK_4x4x4.0.nic200.6\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.AMD_TURIN_ZEN5_EPYC.7 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.15\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ IRONWOOD_TORUS_RACK_4x4x4.0.nic200.7\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.AMD_TURIN_ZEN5_EPYC.5 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.10\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ IRONWOOD_TORUS_RACK_4x4x4.0.nic200.5\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.AMD_TURIN_ZEN5_EPYC.4 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.8\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ IRONWOOD_TORUS_RACK_4x4x4.0.nic200.4\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.AMD_TURIN_ZEN5_EPYC.10 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.21\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ IRONWOOD_TORUS_RACK_4x4x4.0.nic200.10\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.AMD_TURIN_ZEN5_EPYC.8 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.16\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ IRONWOOD_TORUS_RACK_4x4x4.0.nic200.8\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.AMD_TURIN_ZEN5_EPYC.9 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.18\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ IRONWOOD_TORUS_RACK_4x4x4.0.nic200.9\n", - " │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.AMD_TURIN_ZEN5_EPYC.1 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.2\n", - " │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ IRONWOOD_TORUS_RACK_4x4x4.0.nic200.1\n", - " │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.AMD_TURIN_ZEN5_EPYC.3 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.6\n", - " │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ IRONWOOD_TORUS_RACK_4x4x4.0.nic200.3\n", - " │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.AMD_TURIN_ZEN5_EPYC.2 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.4\n", - " │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ IRONWOOD_TORUS_RACK_4x4x4.0.nic200.2\n", - " │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ ├── IRONWOOD_TORUS_RACK_4x4x4.0.AMD_TURIN_ZEN5_EPYC.0 ─ IRONWOOD_TORUS_RACK_4x4x4.0.IRONWOOD.1\n", - " │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ IRONWOOD_TORUS_RACK_4x4x4.0.nic200.0\n", - " │ │ │ │ │ └── ...\n", - " │ │ │ │ └── ...\n", - " │ │ │ └── ...\n", - " │ │ └── ...\n", - " │ └── ...\n", - " └── ...\n", - "None\n", - "64\n" - ] - } - ], + "outputs": [], "source": [ "service = InfraGraphService()\n", "service.set_graph(infrastructure)\n", @@ -2112,18 +105,10 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": null, "id": "a724c9e4", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Generated 64 et in /workspaces/astra_sim_service/client-scripts/utils/../trial/ns3_single_ironwood/configuration/workload\n" - ] - } - ], + "outputs": [], "source": [ "astra.configuration.common_config.workload = astra.generate_collective(collective=Collective.ALLREDUCE, coll_size= 1 *1024*1024, npu_range=[0, total_npus])" ] @@ -2138,7 +123,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": null, "id": "2f65a427", "metadata": {}, "outputs": [], @@ -2163,21 +148,10 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": null, "id": "e45ec44b", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "memory_type: NO_MEMORY_EXPANSION\n", - "remote_mem_bw: 0\n", - "remote_mem_latency: 0\n", - "\n" - ] - } - ], + "outputs": [], "source": [ "astra.configuration.common_config.remote_memory.memory_type = astra.configuration.common_config.remote_memory.NO_MEMORY_EXPANSION\n", "print(astra.configuration.common_config.remote_memory)" @@ -2193,7 +167,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": null, "id": "502d3b25", "metadata": { "lines_to_next_cell": 2 @@ -2215,7 +189,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": null, "id": "d62c44de", "metadata": {}, "outputs": [], @@ -2236,21 +210,10 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": null, "id": "1e6165bc", "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 10, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "host_device_spec = astra_sim_kit.AnnotationDeviceSpecifications()\n", "host_device_spec.device_bandwidth_gbps = 100\n", @@ -2260,6 +223,73 @@ "astra.configuration.infragraph.annotations.device_specifications.append(host_device_spec)" ] }, + { + "cell_type": "markdown", + "id": "2921597a", + "metadata": {}, + "source": [ + "##### Save infragraph as a yaml" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "d58aca6d", + "metadata": {}, + "outputs": [], + "source": [ + "with open(os.path.join(FileFolderUtils.get_instance().OUTPUT_DIR,\"../infrastructure\",f\"{astra.tag}.yaml\"),\"w\") as f:\n", + " data = infrastructure.serialize(\"dict\")\n", + " yaml.dump(data, f, default_flow_style=False, indent=4)\n", + "\n", + "print(\"saved yaml to:\", os.path.join(FileFolderUtils.get_instance().OUTPUT_DIR,\"..\",f\"{astra.tag}.yaml\"))" + ] + }, + { + "cell_type": "markdown", + "id": "1e387eeb", + "metadata": {}, + "source": [ + "##### Visualize the Infragraph" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "86125fba", + "metadata": {}, + "outputs": [], + "source": [ + "# VISUALIZER_START\n", + "PORT = 8765\n", + "\n", + "subprocess.run(\n", + " f\"lsof -ti:{PORT} | xargs -r kill -9\",\n", + " shell=True\n", + ")\n", + "\n", + "infra_yaml_path = os.path.join(\n", + " FileFolderUtils.get_instance().OUTPUT_DIR,\n", + " \"../infrastructure\",\n", + " f\"{astra.tag}.yaml\"\n", + ")\n", + "\n", + "infra_dir = os.path.dirname(infra_yaml_path)\n", + "visual_output_dir = os.path.normpath(os.path.join(infra_dir, \"../visuals\"))\n", + "\n", + "subprocess.run(\n", + " [\"infragraph\", \"visualize\", \"--input\", infra_yaml_path, \"--output\", visual_output_dir],\n", + " check=True\n", + ")\n", + "\n", + "subprocess.Popen(\n", + " [\"python3\", \"-m\", \"http.server\", f\"{PORT}\"],\n", + " cwd=visual_output_dir\n", + ")\n", + "IFrame(f\"http://localhost:{PORT}/index.html\", width=\"100%\", height=700)\n", + "# VISUALIZER_END" + ] + }, { "cell_type": "markdown", "id": "c2a87754", @@ -2270,7 +300,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": null, "id": "c2d2f976", "metadata": {}, "outputs": [], @@ -2290,52 +320,10 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": null, "id": "be8221a6", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Generating Configuration ZIP now\n", - "output_path: /workspaces/astra_sim_service/client-scripts/utils/../trial/ns3_single_ironwood/config.zip\n", - "folder_path: /workspaces/astra_sim_service/client-scripts/utils/../trial/ns3_single_ironwood/configuration/workload/..\n", - "pack_zip complete\n", - "message: 'Configuration applied successfully. warnings: Unable to generate communicator\n", - " group message from schema - communicator group configuration empty'\n", - "\n", - "message: Simulation started successfully\n", - "\n", - "astra-sim server Status: running\n", - "astra-sim server Status: running\n", - "Downloading Output files....\n", - "Transferring Files from ASTRA-sim server\n", - "Downloading file: fct.txt\n", - "Downloading file: flow.txt\n", - "Downloading file: pfc.txt\n", - "Downloading file: qlen.txt\n", - "Downloading file: simulation.log\n", - "Downloading file: trace_out.tr\n", - "All files downloaded Successfully\n", - "Translating Metrics...\n", - "Generated fct.csv at: /workspaces/astra_sim_service/client-scripts/utils/../trial/ns3_single_ironwood/output/fct.csv\n", - "Generated: flow_stats.csv at: /workspaces/astra_sim_service/client-scripts/utils/../trial/ns3_single_ironwood/output/flow_stats.csv\n", - "All metrics translated successfully\n", - "Simulation completed\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/workspaces/astra_sim_service/client-scripts/notebooks/infragraph/../../utils/common.py:274: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\\s+'`` instead\n", - " df = pd.read_csv(\n", - "/workspaces/astra_sim_service/client-scripts/notebooks/infragraph/../../utils/common.py:237: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\\s+'`` instead\n", - " df = pd.read_csv(\n" - ] - } - ], + "outputs": [], "source": [ "astra.run_simulation(NetworkBackend.NS3)" ] @@ -2350,18 +338,10 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": null, "id": "e67e3d72", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Downloaded all configuration in /workspaces/astra_sim_service/client-scripts/utils/../trial/ns3_single_ironwood/server_configuration.zip\n" - ] - } - ], + "outputs": [], "source": [ "astra.download_configuration()" ] @@ -2376,157 +356,14 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": null, "id": "a36bfc22", "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
Source Hex ipDestination Hex ipSource PortDestination PortData size (B)Start TimeFCTStandalone FCT
00b0000010b000101100001002621441015041552
10b0001010b000201100001002621441015041552
20b0002010b000301100001002621441015041552
30b0003010b000001100001002621441015041552
40b0004010b000501100001002621441015041552
\n", - "
" - ], - "text/plain": [ - " Source Hex ip Destination Hex ip Source Port Destination Port \\\n", - "0 0b000001 0b000101 10000 100 \n", - "1 0b000101 0b000201 10000 100 \n", - "2 0b000201 0b000301 10000 100 \n", - "3 0b000301 0b000001 10000 100 \n", - "4 0b000401 0b000501 10000 100 \n", - "\n", - " Data size (B) Start Time FCT Standalone FCT \n", - "0 262144 10 1504 1552 \n", - "1 262144 10 1504 1552 \n", - "2 262144 10 1504 1552 \n", - "3 262144 10 1504 1552 \n", - "4 262144 10 1504 1552 " - ] - }, - "execution_count": 14, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "df = pd.read_csv(os.path.join(FileFolderUtils.get_instance().OUTPUT_DIR, \"fct.csv\"))\n", "df.head()" ] - }, - { - "cell_type": "markdown", - "id": "f00cbc1c", - "metadata": {}, - "source": [ - "##### Save infragraph as a yaml" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "3e6888cc", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "saved yaml to: /workspaces/astra_sim_service/client-scripts/utils/../trial/ns3_single_ironwood/output/../ns3_single_ironwood.yaml\n" - ] - } - ], - "source": [ - "\n", - "with open(os.path.join(FileFolderUtils.get_instance().OUTPUT_DIR,\"../infrastructure\",\"ns3_single_ironwood.yaml\"),\"w\") as f:\n", - " data = infrastructure.serialize(\"dict\")\n", - " yaml.dump(data, f, default_flow_style=False, indent=4)\n", - "\n", - "print(\"saved yaml to:\", os.path.join(FileFolderUtils.get_instance().OUTPUT_DIR,\"..\",\"ns3_single_ironwood.yaml\"))" - ] } ], "metadata": { diff --git a/client-scripts/notebooks/infragraph/ns3_single_tier_with_dgx.ipynb b/client-scripts/notebooks/infragraph/ns3_single_tier_with_dgx.ipynb index ec8d115..6470bb2 100644 --- a/client-scripts/notebooks/infragraph/ns3_single_tier_with_dgx.ipynb +++ b/client-scripts/notebooks/infragraph/ns3_single_tier_with_dgx.ipynb @@ -10,7 +10,7 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": null, "id": "8588a9f6", "metadata": {}, "outputs": [], @@ -20,9 +20,11 @@ "import networkx\n", "import yaml\n", "import os\n", + "import subprocess\n", "import pandas as pd\n", "import astra_sim_sdk.astra_sim_sdk as astra_sim_kit\n", "from common import FileFolderUtils\n", + "from IPython.display import IFrame\n", "from astra_sim import AstraSim, Collective, NetworkBackend\n", "from infragraph.blueprints.devices.nvidia.dgx import NvidiaDGX\n", "from infragraph.blueprints.fabrics.single_tier_fabric import SingleTierFabric\n", @@ -39,18 +41,10 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": null, "id": "aafe93fe", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Successfully connected to gRPC server at 172.17.0.2:8989\n" - ] - } - ], + "outputs": [], "source": [ "astra = AstraSim(server_endpoint = \"172.17.0.2:8989\", tag = \"ns3_single_tier_with_dgx\")" ] @@ -65,21 +59,10 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": null, "id": "025b0ed5", "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 18, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "dgx_count = 2\n", "server = NvidiaDGX()\n", @@ -97,164 +80,10 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": null, "id": "73913147", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "╙── dgx_h100.0.pciesw.1\n", - " │\n", - " dgx_h100.0.cpu.1\n", - " ├── dgx_h100.0.cpu.0\n", - " │ ├── dgx_h100.0.pciesl.0\n", - " │ │ ├── dgx_h100.0.xpu.0\n", - " │ │ │ ├── dgx_h100.0.nvsw.0\n", - " │ │ │ │ ├── dgx_h100.0.pciesw.2 ─ dgx_h100.0.cpu.0\n", - " │ │ │ │ │ ├── dgx_h100.0.nvsw.1 ─ dgx_h100.0.xpu.0\n", - " │ │ │ │ │ │ ├── dgx_h100.0.xpu.1 ─ dgx_h100.0.nvsw.0\n", - " │ │ │ │ │ │ │ ├── dgx_h100.0.pciesl.1 ─ dgx_h100.0.cpu.0\n", - " │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ dgx_h100.0.cx7.1\n", - " │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ switch.0.port.1\n", - " │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ switch.0.asic.0\n", - " │ │ │ │ │ │ │ │ ├── switch.0.port.0\n", - " │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ dgx_h100.0.cx7.0 ─ dgx_h100.0.pciesl.0\n", - " │ │ │ │ │ │ │ │ ├── switch.0.port.2\n", - " │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ dgx_h100.0.cx7.2\n", - " │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ dgx_h100.0.pciesl.2 ─ dgx_h100.0.cpu.0\n", - " │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ dgx_h100.0.xpu.2 ─ dgx_h100.0.nvsw.0, dgx_h100.0.nvsw.1\n", - " │ │ │ │ │ │ │ │ │ ├── dgx_h100.0.nvsw.2 ─ dgx_h100.0.pciesw.2, dgx_h100.0.xpu.0, dgx_h100.0.xpu.1\n", - " │ │ │ │ │ │ │ │ │ │ ├── dgx_h100.0.xpu.3 ─ dgx_h100.0.nvsw.0, dgx_h100.0.nvsw.1\n", - " │ │ │ │ │ │ │ │ │ │ │ ├── dgx_h100.0.pciesl.3\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ dgx_h100.0.cx7.3\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ switch.0.port.3 ─ switch.0.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ └── dgx_h100.0.nvsw.3 ─ dgx_h100.0.pciesw.2, dgx_h100.0.xpu.0, dgx_h100.0.xpu.1, dgx_h100.0.xpu.2\n", - " │ │ │ │ │ │ │ │ │ │ │ ├── dgx_h100.0.xpu.4 ─ dgx_h100.0.nvsw.0, dgx_h100.0.nvsw.1, dgx_h100.0.nvsw.2\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ dgx_h100.0.pciesl.4 ─ dgx_h100.0.cpu.1\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ dgx_h100.0.cx7.4\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ switch.0.port.4 ─ switch.0.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ ├── dgx_h100.0.xpu.5 ─ dgx_h100.0.nvsw.0, dgx_h100.0.nvsw.1, dgx_h100.0.nvsw.2\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ dgx_h100.0.pciesl.5 ─ dgx_h100.0.cpu.1\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ dgx_h100.0.cx7.5\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ switch.0.port.5 ─ switch.0.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ ├── dgx_h100.0.xpu.6 ─ dgx_h100.0.nvsw.0, dgx_h100.0.nvsw.1, dgx_h100.0.nvsw.2\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ dgx_h100.0.pciesl.6 ─ dgx_h100.0.cpu.1\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ dgx_h100.0.cx7.6\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ switch.0.port.6 ─ switch.0.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ └── dgx_h100.0.xpu.7 ─ dgx_h100.0.nvsw.0, dgx_h100.0.nvsw.1, dgx_h100.0.nvsw.2\n", - " │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ dgx_h100.0.pciesl.7\n", - " │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ dgx_h100.0.cx7.7\n", - " │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ switch.0.port.7 ─ switch.0.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ ├── switch.0.port.8\n", - " │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ dgx_h100.1.cx7.0\n", - " │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ dgx_h100.1.pciesl.0\n", - " │ │ │ │ │ │ │ │ │ ├── dgx_h100.1.cpu.0\n", - " │ │ │ │ │ │ │ │ │ │ ├── dgx_h100.1.cpu.1\n", - " │ │ │ │ │ │ │ │ │ │ │ ├── dgx_h100.1.pciesl.4\n", - " │ │ │ │ │ │ │ │ │ │ │ │ ├── dgx_h100.1.xpu.4\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ ├── dgx_h100.1.nvsw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── dgx_h100.1.pciesw.2 ─ dgx_h100.1.cpu.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── dgx_h100.1.nvsw.1 ─ dgx_h100.1.xpu.4\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── dgx_h100.1.xpu.0 ─ dgx_h100.1.pciesl.0, dgx_h100.1.nvsw.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── dgx_h100.1.nvsw.2 ─ dgx_h100.1.pciesw.2, dgx_h100.1.xpu.4\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── dgx_h100.1.xpu.1 ─ dgx_h100.1.nvsw.0, dgx_h100.1.nvsw.1\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── dgx_h100.1.pciesl.1 ─ dgx_h100.1.cpu.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ dgx_h100.1.cx7.1\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ switch.0.port.9 ─ switch.0.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── dgx_h100.1.nvsw.3 ─ dgx_h100.1.pciesw.2, dgx_h100.1.xpu.0, dgx_h100.1.xpu.4\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── dgx_h100.1.xpu.2 ─ dgx_h100.1.nvsw.0, dgx_h100.1.nvsw.1, dgx_h100.1.nvsw.2\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ dgx_h100.1.pciesl.2 ─ dgx_h100.1.cpu.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ dgx_h100.1.cx7.2\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ switch.0.port.10 ─ switch.0.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── dgx_h100.1.xpu.3 ─ dgx_h100.1.nvsw.0, dgx_h100.1.nvsw.1, dgx_h100.1.nvsw.2\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ dgx_h100.1.pciesl.3\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ dgx_h100.1.cx7.3\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ switch.0.port.11 ─ switch.0.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── dgx_h100.1.xpu.5 ─ dgx_h100.1.nvsw.0, dgx_h100.1.nvsw.1, dgx_h100.1.nvsw.2\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ dgx_h100.1.pciesl.5 ─ dgx_h100.1.cpu.1\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ dgx_h100.1.cx7.5\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ switch.0.port.13 ─ switch.0.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── dgx_h100.1.xpu.6 ─ dgx_h100.1.nvsw.0, dgx_h100.1.nvsw.1, dgx_h100.1.nvsw.2\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ dgx_h100.1.pciesl.6 ─ dgx_h100.1.cpu.1\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ dgx_h100.1.cx7.6\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ switch.0.port.14 ─ switch.0.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── dgx_h100.1.xpu.7 ─ dgx_h100.1.nvsw.0, dgx_h100.1.nvsw.1, dgx_h100.1.nvsw.2\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ dgx_h100.1.pciesl.7\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ dgx_h100.1.cx7.7\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ switch.0.port.15 ─ switch.0.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ │ │ └── dgx_h100.1.cx7.4\n", - " │ │ │ │ │ │ │ │ │ │ │ │ │\n", - " │ │ │ │ │ │ │ │ │ │ │ │ switch.0.port.12 ─ switch.0.asic.0\n", - " │ │ │ │ │ │ │ │ │ │ │ ├── dgx_h100.1.pciesw.1\n", - " │ │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ │ ├── dgx_h100.1.pciesw.0\n", - " │ │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ │ └── ...\n", - " │ │ │ │ │ └── ...\n", - " │ │ │ │ └── ...\n", - " │ │ │ └── ...\n", - " │ │ └── ...\n", - " │ ├── dgx_h100.0.pciesw.0\n", - " │ └── ...\n", - " └── ...\n", - "None\n", - "16\n" - ] - } - ], + "outputs": [], "source": [ "service = InfraGraphService()\n", "service.set_graph(infrastructure)\n", @@ -266,6 +95,73 @@ "print(total_npus)" ] }, + { + "cell_type": "markdown", + "id": "209e8c57", + "metadata": {}, + "source": [ + "##### Save infragraph as a yaml" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "bc20308e", + "metadata": {}, + "outputs": [], + "source": [ + "with open(os.path.join(FileFolderUtils.get_instance().OUTPUT_DIR,\"../infrastructure\",f\"{astra.tag}.yaml\"),\"w\") as f:\n", + " data = infrastructure.serialize(\"dict\")\n", + " yaml.dump(data, f, default_flow_style=False, indent=4)\n", + "\n", + "print(\"saved yaml to:\", os.path.join(FileFolderUtils.get_instance().OUTPUT_DIR,\"..\",f\"{astra.tag}.yaml\"))" + ] + }, + { + "cell_type": "markdown", + "id": "58879baf", + "metadata": {}, + "source": [ + "##### Visualize the Infragraph" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "afbbf33f", + "metadata": {}, + "outputs": [], + "source": [ + "# VISUALIZER_START\n", + "PORT = 8765\n", + "\n", + "subprocess.run(\n", + " f\"lsof -ti:{PORT} | xargs -r kill -9\",\n", + " shell=True\n", + ")\n", + "\n", + "infra_yaml_path = os.path.join(\n", + " FileFolderUtils.get_instance().OUTPUT_DIR,\n", + " \"../infrastructure\",\n", + " f\"{astra.tag}.yaml\"\n", + ")\n", + "\n", + "infra_dir = os.path.dirname(infra_yaml_path)\n", + "visual_output_dir = os.path.normpath(os.path.join(infra_dir, \"../visuals\"))\n", + "\n", + "subprocess.run(\n", + " [\"infragraph\", \"visualize\", \"--input\", infra_yaml_path, \"--output\", visual_output_dir],\n", + " check=True\n", + ")\n", + "\n", + "subprocess.Popen(\n", + " [\"python3\", \"-m\", \"http.server\", f\"{PORT}\"],\n", + " cwd=visual_output_dir\n", + ")\n", + "IFrame(f\"http://localhost:{PORT}/index.html\", width=\"100%\", height=700)\n", + "# VISUALIZER_END" + ] + }, { "cell_type": "markdown", "id": "33f2afbf", @@ -276,19 +172,10 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": null, "id": "c2c7e4b4", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "All contents of the folder /workspaces/astra_sim_service/client-scripts/utils/../trial/ns3_single_tier_with_dgx/configuration/workload have been deleted.\n", - "Generated 16 et in /workspaces/astra_sim_service/client-scripts/utils/../trial/ns3_single_tier_with_dgx/configuration/workload\n" - ] - } - ], + "outputs": [], "source": [ "astra.configuration.common_config.workload = astra.generate_collective(collective=Collective.ALLREDUCE, coll_size= 8 *1024*1024, npu_range=[0, total_npus])" ] @@ -303,7 +190,7 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": null, "id": "21a5ae3b", "metadata": {}, "outputs": [], @@ -328,21 +215,10 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": null, "id": "065afac5", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "memory_type: NO_MEMORY_EXPANSION\n", - "remote_mem_bw: 0\n", - "remote_mem_latency: 0\n", - "\n" - ] - } - ], + "outputs": [], "source": [ "astra.configuration.common_config.remote_memory.memory_type = astra.configuration.common_config.remote_memory.NO_MEMORY_EXPANSION\n", "print(astra.configuration.common_config.remote_memory)" @@ -358,7 +234,7 @@ }, { "cell_type": "code", - "execution_count": 23, + "execution_count": null, "id": "6d136387", "metadata": { "lines_to_next_cell": 2 @@ -380,7 +256,7 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": null, "id": "ee937faf", "metadata": {}, "outputs": [], @@ -401,21 +277,10 @@ }, { "cell_type": "code", - "execution_count": 25, + "execution_count": null, "id": "3b7edefa", "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 25, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "host_device_spec = astra_sim_kit.AnnotationDeviceSpecifications()\n", "host_device_spec.device_bandwidth_gbps = 100\n", @@ -444,7 +309,7 @@ }, { "cell_type": "code", - "execution_count": 26, + "execution_count": null, "id": "192d6dd3", "metadata": {}, "outputs": [], @@ -464,58 +329,10 @@ }, { "cell_type": "code", - "execution_count": 27, + "execution_count": null, "id": "c60d06aa", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Generating Configuration ZIP now\n", - "output_path: /workspaces/astra_sim_service/client-scripts/utils/../trial/ns3_single_tier_with_dgx/config.zip\n", - "folder_path: /workspaces/astra_sim_service/client-scripts/utils/../trial/ns3_single_tier_with_dgx/configuration/workload/..\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "pack_zip complete\n", - "message: 'Configuration applied successfully. warnings: Unable to generate communicator\n", - " group message from schema - communicator group configuration empty'\n", - "\n", - "message: Simulation started successfully\n", - "\n", - "astra-sim server Status: running\n", - "astra-sim server Status: running\n", - "Downloading Output files....\n", - "Transferring Files from ASTRA-sim server\n", - "Downloading file: fct.txt\n", - "Downloading file: flow.txt\n", - "Downloading file: pfc.txt\n", - "Downloading file: qlen.txt\n", - "Downloading file: simulation.log\n", - "Downloading file: trace_out.tr\n", - "All files downloaded Successfully\n", - "Translating Metrics...\n", - "Generated fct.csv at: /workspaces/astra_sim_service/client-scripts/utils/../trial/ns3_single_tier_with_dgx/output/fct.csv\n", - "Generated: flow_stats.csv at: /workspaces/astra_sim_service/client-scripts/utils/../trial/ns3_single_tier_with_dgx/output/flow_stats.csv\n", - "All metrics translated successfully\n", - "Simulation completed\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/workspaces/astra_sim_service/client-scripts/notebooks/infragraph/../../utils/common.py:274: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\\s+'`` instead\n", - " df = pd.read_csv(\n", - "/workspaces/astra_sim_service/client-scripts/notebooks/infragraph/../../utils/common.py:237: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\\s+'`` instead\n", - " df = pd.read_csv(\n" - ] - } - ], + "outputs": [], "source": [ "astra.run_simulation(NetworkBackend.NS3)" ] @@ -530,18 +347,10 @@ }, { "cell_type": "code", - "execution_count": 28, + "execution_count": null, "id": "bd80bf0d", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Downloaded all configuration in /workspaces/astra_sim_service/client-scripts/utils/../trial/ns3_single_tier_with_dgx/server_configuration.zip\n" - ] - } - ], + "outputs": [], "source": [ "astra.download_configuration()" ] @@ -556,159 +365,14 @@ }, { "cell_type": "code", - "execution_count": 29, + "execution_count": null, "id": "ca675ef8", "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
Source Hex ipDestination Hex ipSource PortDestination PortData size (B)Start TimeFCTStandalone FCT
00b0000010b00010110000100524288104302643498
10b0001010b00020110000100524288104302643498
20b0004010b00050110000100524288104302643498
30b0005010b00060110000100524288104302643498
40b0009010b000a0110000100524288104302643498
\n", - "
" - ], - "text/plain": [ - " Source Hex ip Destination Hex ip Source Port Destination Port \\\n", - "0 0b000001 0b000101 10000 100 \n", - "1 0b000101 0b000201 10000 100 \n", - "2 0b000401 0b000501 10000 100 \n", - "3 0b000501 0b000601 10000 100 \n", - "4 0b000901 0b000a01 10000 100 \n", - "\n", - " Data size (B) Start Time FCT Standalone FCT \n", - "0 524288 10 43026 43498 \n", - "1 524288 10 43026 43498 \n", - "2 524288 10 43026 43498 \n", - "3 524288 10 43026 43498 \n", - "4 524288 10 43026 43498 " - ] - }, - "execution_count": 29, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ - "import pandas as pd\n", - "import os\n", - "from common import FileFolderUtils\n", "df = pd.read_csv(os.path.join(FileFolderUtils.get_instance().OUTPUT_DIR, \"fct.csv\"))\n", "df.head()" ] - }, - { - "cell_type": "markdown", - "id": "6b2e16fd", - "metadata": {}, - "source": [ - "##### Save infragraph as a yaml" - ] - }, - { - "cell_type": "code", - "execution_count": 30, - "id": "ba9160d0", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "saved yaml to: /workspaces/astra_sim_service/client-scripts/utils/../trial/ns3_single_tier_with_dgx/output/../ns3_single_tier_with_dgx.yaml\n" - ] - } - ], - "source": [ - "with open(os.path.join(FileFolderUtils.get_instance().OUTPUT_DIR,\"../infrastructure\",\"ns3_single_tier_with_dgx.yaml\"),\"w\") as f:\n", - " data = infrastructure.serialize(\"dict\")\n", - " yaml.dump(data, f, default_flow_style=False, indent=4)\n", - "\n", - "print(\"saved yaml to:\", os.path.join(FileFolderUtils.get_instance().OUTPUT_DIR,\"..\",\"ns3_single_tier_with_dgx.yaml\"))" - ] } ], "metadata": { diff --git a/client-scripts/notebooks/infragraph/ns3_single_tier_with_generic_server.ipynb b/client-scripts/notebooks/infragraph/ns3_single_tier_with_generic_server.ipynb index 7ac9e3f..f9d587d 100644 --- a/client-scripts/notebooks/infragraph/ns3_single_tier_with_generic_server.ipynb +++ b/client-scripts/notebooks/infragraph/ns3_single_tier_with_generic_server.ipynb @@ -10,7 +10,7 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": null, "id": "d903d960", "metadata": {}, "outputs": [], @@ -20,9 +20,11 @@ "import networkx\n", "import yaml\n", "import os\n", + "import subprocess\n", "import pandas as pd\n", "import astra_sim_sdk.astra_sim_sdk as astra_sim_kit\n", "from common import FileFolderUtils\n", + "from IPython.display import IFrame\n", "from astra_sim import AstraSim, Collective, NetworkBackend\n", "from astra_sim_sdk import Device, Component\n", "from infragraph import Component, InfrastructureEdge\n", @@ -41,20 +43,10 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": null, "id": "76bd56cc", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Resetting test directory\n", - "All contents of the folder /workspaces/astra_sim_service/client-scripts/utils/../trial/ns3_single_tier_with_generic_server have been deleted.\n", - "Successfully connected to gRPC server at 172.17.0.2:8989\n" - ] - } - ], + "outputs": [], "source": [ "astra = AstraSim(server_endpoint=\"172.17.0.2:8989\", tag = \"ns3_single_tier_with_generic_server\")" ] @@ -69,21 +61,12 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": null, "id": "b1aa9daf", "metadata": { "lines_to_next_cell": 2 }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Generated 8 et in /workspaces/astra_sim_service/client-scripts/utils/../trial/ns3_single_tier_with_generic_server/configuration/workload\n", - "/workspaces/astra_sim_service/client-scripts/utils/../trial/ns3_single_tier_with_generic_server/configuration/workload/ns3_single_tier_with_generic_server\n" - ] - } - ], + "outputs": [], "source": [ "astra.configuration.common_config.workload = astra.generate_collective(collective=Collective.ALLREDUCE, coll_size= 8 *1024*1024, npu_range=[0,8])\n", "print(astra.configuration.common_config.workload)" @@ -99,34 +82,10 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": null, "id": "f856dc0c", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "active_chunks_per_dimension: 1\n", - "all_gather_implementation:\n", - "- ring\n", - "all_reduce_implementation:\n", - "- oneRing\n", - "all_to_all_implementation:\n", - "- direct\n", - "collective_optimization: localBWAware\n", - "endpoint_delay: 10\n", - "local_mem_bw: 1600\n", - "local_reduction_delay: 0\n", - "preferred_dataset_splits: 1\n", - "reduce_scatter_implementation:\n", - "- ring\n", - "scheduling_policy: LIFO\n", - "trace_enabled: 0\n", - "\n" - ] - } - ], + "outputs": [], "source": [ "astra.configuration.common_config.system.scheduling_policy = astra.configuration.common_config.system.LIFO\n", "astra.configuration.common_config.system.endpoint_delay = 10\n", @@ -149,21 +108,10 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": null, "id": "7bb834c2", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "memory_type: NO_MEMORY_EXPANSION\n", - "remote_mem_bw: 0\n", - "remote_mem_latency: 0\n", - "\n" - ] - } - ], + "outputs": [], "source": [ "astra.configuration.common_config.remote_memory.memory_type = astra.configuration.common_config.remote_memory.NO_MEMORY_EXPANSION\n", "print(astra.configuration.common_config.remote_memory)" @@ -179,7 +127,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": null, "id": "a1df92ed", "metadata": {}, "outputs": [], @@ -202,21 +150,10 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": null, "id": "1d577543", "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 7, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "astra.configuration.infragraph.infrastructure.name = \"1host-4ranks\"\n", "\n", @@ -247,7 +184,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": null, "id": "143c7f6e", "metadata": {}, "outputs": [], @@ -269,21 +206,10 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": null, "id": "ec821926", "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "host_component = InfraGraphService.get_component(server, Component.NIC)\n", "switch_component = InfraGraphService.get_component(switch, Component.PORT)\n", @@ -322,6 +248,73 @@ ")" ] }, + { + "cell_type": "markdown", + "id": "c4414c8a", + "metadata": {}, + "source": [ + "##### Save infragraph as a yaml" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "74d5c82a", + "metadata": {}, + "outputs": [], + "source": [ + "with open(os.path.join(FileFolderUtils.get_instance().OUTPUT_DIR,\"../infrastructure\",f\"{astra.tag}.yaml\"),\"w\") as f:\n", + " data = astra.configuration.infragraph.infrastructure.serialize(\"dict\")\n", + " yaml.dump(data, f, default_flow_style=False, indent=4)\n", + "\n", + "print(\"saved yaml to:\", os.path.join(FileFolderUtils.get_instance().OUTPUT_DIR,\"..\",f\"{astra.tag}.yaml\"))" + ] + }, + { + "cell_type": "markdown", + "id": "70fa14c9", + "metadata": {}, + "source": [ + "##### Visualize the Infragraph" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "2bb45bf7", + "metadata": {}, + "outputs": [], + "source": [ + "# VISUALIZER_START\n", + "PORT = 8765\n", + "\n", + "subprocess.run(\n", + " f\"lsof -ti:{PORT} | xargs -r kill -9\",\n", + " shell=True\n", + ")\n", + "\n", + "infra_yaml_path = os.path.join(\n", + " FileFolderUtils.get_instance().OUTPUT_DIR,\n", + " \"../infrastructure\",\n", + " f\"{astra.tag}.yaml\"\n", + ")\n", + "\n", + "infra_dir = os.path.dirname(infra_yaml_path)\n", + "visual_output_dir = os.path.normpath(os.path.join(infra_dir, \"../visuals\"))\n", + "\n", + "subprocess.run(\n", + " [\"infragraph\", \"visualize\", \"--input\", infra_yaml_path, \"--output\", visual_output_dir],\n", + " check=True\n", + ")\n", + "\n", + "subprocess.Popen(\n", + " [\"python3\", \"-m\", \"http.server\", f\"{PORT}\"],\n", + " cwd=visual_output_dir\n", + ")\n", + "IFrame(f\"http://localhost:{PORT}/index.html\", width=\"100%\", height=700)\n", + "# VISUALIZER_END" + ] + }, { "cell_type": "markdown", "id": "665a4334", @@ -332,7 +325,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": null, "id": "90e58a65", "metadata": {}, "outputs": [], @@ -352,51 +345,10 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": null, "id": "df571e8e", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Generating Configuration ZIP now\n", - "output_path: /workspaces/astra_sim_service/client-scripts/utils/../trial/ns3_single_tier_with_generic_server/config.zip\n", - "folder_path: /workspaces/astra_sim_service/client-scripts/utils/../trial/ns3_single_tier_with_generic_server/configuration/workload/..\n", - "pack_zip complete\n", - "message: 'Configuration applied successfully. warnings: Unable to generate communicator\n", - " group message from schema - communicator group configuration empty'\n", - "\n", - "message: Simulation started successfully\n", - "\n", - "astra-sim server Status: running\n", - "Downloading Output files....\n", - "Transferring Files from ASTRA-sim server\n", - "Downloading file: fct.txt\n", - "Downloading file: flow.txt\n", - "Downloading file: pfc.txt\n", - "Downloading file: qlen.txt\n", - "Downloading file: simulation.log\n", - "Downloading file: trace_out.tr\n", - "All files downloaded Successfully\n", - "Translating Metrics...\n", - "Generated fct.csv at: /workspaces/astra_sim_service/client-scripts/utils/../trial/ns3_single_tier_with_generic_server/output/fct.csv\n", - "Generated: flow_stats.csv at: /workspaces/astra_sim_service/client-scripts/utils/../trial/ns3_single_tier_with_generic_server/output/flow_stats.csv\n", - "All metrics translated successfully\n", - "Simulation completed\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/workspaces/astra_sim_service/client-scripts/notebooks/infragraph/../../utils/common.py:274: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\\s+'`` instead\n", - " df = pd.read_csv(\n", - "/workspaces/astra_sim_service/client-scripts/notebooks/infragraph/../../utils/common.py:237: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\\s+'`` instead\n", - " df = pd.read_csv(\n" - ] - } - ], + "outputs": [], "source": [ "astra.run_simulation(NetworkBackend.NS3)" ] @@ -411,18 +363,10 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": null, "id": "8630fd8f", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Downloaded all configuration in /workspaces/astra_sim_service/client-scripts/utils/../trial/ns3_single_tier_with_generic_server/server_configuration.zip\n" - ] - } - ], + "outputs": [], "source": [ "astra.download_configuration()" ] @@ -437,159 +381,10 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": null, "id": "551020a9", "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
Source ipDestination ipSource PortDestination PortData size (B)Start TimeFCTStandalone FCTTotal Bytes TxTotal Bytes RxCompletion time (ms)Start (ms)End (ms)
011.0.7.111.0.0.1100001001048576104295342842104857610485760.0429530.000010.042963
111.0.3.111.0.4.1100001001048576104295342842104857610485760.0429530.000010.042963
211.0.0.111.0.1.1100001001048576104295542842104857610485760.0429550.000010.042965
311.0.4.111.0.5.1100001001048576104295542842104857610485760.0429550.000010.042965
411.0.1.111.0.2.1100001001048576104328042842104857610485760.0432800.000010.043290
\n", - "
" - ], - "text/plain": [ - " Source ip Destination ip Source Port Destination Port Data size (B) \\\n", - "0 11.0.7.1 11.0.0.1 10000 100 1048576 \n", - "1 11.0.3.1 11.0.4.1 10000 100 1048576 \n", - "2 11.0.0.1 11.0.1.1 10000 100 1048576 \n", - "3 11.0.4.1 11.0.5.1 10000 100 1048576 \n", - "4 11.0.1.1 11.0.2.1 10000 100 1048576 \n", - "\n", - " Start Time FCT Standalone FCT Total Bytes Tx Total Bytes Rx \\\n", - "0 10 42953 42842 1048576 1048576 \n", - "1 10 42953 42842 1048576 1048576 \n", - "2 10 42955 42842 1048576 1048576 \n", - "3 10 42955 42842 1048576 1048576 \n", - "4 10 43280 42842 1048576 1048576 \n", - "\n", - " Completion time (ms) Start (ms) End (ms) \n", - "0 0.042953 0.00001 0.042963 \n", - "1 0.042953 0.00001 0.042963 \n", - "2 0.042955 0.00001 0.042965 \n", - "3 0.042955 0.00001 0.042965 \n", - "4 0.043280 0.00001 0.043290 " - ] - }, - "execution_count": 13, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "df = pd.read_csv(os.path.join(FileFolderUtils.get_instance().OUTPUT_DIR, \"fct.csv\"))\n", "df.head()\n", @@ -597,36 +392,6 @@ "df = pd.read_csv(os.path.join(FileFolderUtils.get_instance().OUTPUT_DIR, \"flow_stats.csv\"))\n", "df.head()" ] - }, - { - "cell_type": "markdown", - "id": "be43c401", - "metadata": {}, - "source": [ - "##### Save infragraph as a yaml" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "id": "15d5ebba", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "saved yaml to: /workspaces/astra_sim_service/client-scripts/utils/../trial/ns3_single_tier_with_generic_server/output/../ns3_single_tier_with_dgx.yaml\n" - ] - } - ], - "source": [ - "with open(os.path.join(FileFolderUtils.get_instance().OUTPUT_DIR,\"../infrastructure\",\"ns3_single_tier_with_dgx.yaml\"),\"w\") as f:\n", - " data = astra.configuration.infragraph.infrastructure.serialize(\"dict\")\n", - " yaml.dump(data, f, default_flow_style=False, indent=4)\n", - "\n", - "print(\"saved yaml to:\", os.path.join(FileFolderUtils.get_instance().OUTPUT_DIR,\"..\",\"ns3_single_tier_with_dgx.yaml\"))" - ] } ], "metadata": { @@ -645,7 +410,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.11.0rc1" + "version": "3.11.0" } }, "nbformat": 4, diff --git a/client-scripts/utils/common.py b/client-scripts/utils/common.py index b0b35d3f..a9a8662 100644 --- a/client-scripts/utils/common.py +++ b/client-scripts/utils/common.py @@ -236,7 +236,7 @@ def ns3_flow_statistics(): """ df = pd.read_csv( os.path.join(FileFolderUtils().OUTPUT_DIR, "fct.txt"), - delim_whitespace=True, + sep=r"\s+", header=None, ) @@ -273,7 +273,7 @@ def ns3_fct_csv(): """ df = pd.read_csv( os.path.join(FileFolderUtils().OUTPUT_DIR, "fct.txt"), - delim_whitespace=True, + sep=r"\s+", header=None, ) df.columns = [ diff --git a/service/convert_nb_to_script.py b/service/convert_nb_to_script.py index 42124c8..fe5e6d6 100644 --- a/service/convert_nb_to_script.py +++ b/service/convert_nb_to_script.py @@ -5,9 +5,8 @@ import nbformat import textwrap -ignore_notebooks = { - "config_to_schema_sample" -} +ignore_notebooks = {"config_to_schema_sample"} + def wrap_notebook_in_function(input_nb_path: Path, output_py_path: Path, function_name: str): """ @@ -29,6 +28,7 @@ def wrap_notebook_in_function(input_nb_path: Path, output_py_path: Path, functio cleaned_script = "\n".join(cleaned_code) cleaned_script = re.sub(r"\n\s*\n+", "\n\n", cleaned_script) + cleaned_script = re.sub(r"# VISUALIZER_START[\s\S]*?# VISUALIZER_END", "", cleaned_script) cleaned_script = re.sub( r"sys\.path\.append\s*\(.*?\)", 'sys.path.append("../client-scripts/utils")\nsys.path.append("../../client-scripts/utils")\nsys.path.append("./client-scripts/utils")', From 2e8b00560db918d60ce891ec8a61102e9d5db9c0 Mon Sep 17 00:00:00 2001 From: amosrai0 Date: Tue, 14 Apr 2026 09:24:33 +0000 Subject: [PATCH 4/6] remove notebook tests after building --- service/Makefile | 1 + 1 file changed, 1 insertion(+) diff --git a/service/Makefile b/service/Makefile index b5ae915..9dd958c 100644 --- a/service/Makefile +++ b/service/Makefile @@ -65,6 +65,7 @@ pre-test: .PHONY: post-test post-test: rm -rf tests/resources + rm -rf tests/test-notebook .PHONY: build build: clean version From 05a92ca0f89d43d49b7a61484abe34ece82f6de6 Mon Sep 17 00:00:00 2001 From: amosrai0 Date: Tue, 14 Apr 2026 09:38:49 +0000 Subject: [PATCH 5/6] version upgrade --- models/schema/api/api.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/models/schema/api/api.yaml b/models/schema/api/api.yaml index 4734d6c..b0b35d30 100644 --- a/models/schema/api/api.yaml +++ b/models/schema/api/api.yaml @@ -1,7 +1,7 @@ openapi: 3.0.3 info: title: ASTRA-sim APIs - version: 1.2.1 + version: 1.3.0 description: The ASTRA-sim API provides a standardized interface for submitting configurations, executing jobs, checking job status, and retrieving results. license: name: MIT From 4f960a08117611dc3f85b597fc3ef4c1b07e67df Mon Sep 17 00:00:00 2001 From: amosrai0 Date: Wed, 15 Apr 2026 05:48:00 +0000 Subject: [PATCH 6/6] force checkout to gh-pages --- .github/workflows/workflow.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/workflow.yml b/.github/workflows/workflow.yml index f94e15a..31bfe5c 100644 --- a/.github/workflows/workflow.yml +++ b/.github/workflows/workflow.yml @@ -166,7 +166,7 @@ jobs: git config user.name "github-actions[bot]" git config user.email "github-actions[bot]@users.noreply.github.com" git fetch origin gh-pages - git checkout gh-pages + git checkout -f gh-pages cp /tmp/index.html index.html git add index.html git diff --cached --quiet || git commit -m "Update docs for ${{ steps.get_version.outputs.version }}"