[gem5-dev] Change in gem5/gem5[develop]: configs,gpu-compute: Fixes to connect gmTokenPort
Matthew Poremba has submitted this change. ( https://gem5-review.googlesource.com/c/public/gem5/+/35096 ) Change subject: configs,gpu-compute: Fixes to connect gmTokenPort .. configs,gpu-compute: Fixes to connect gmTokenPort When the TokenPort was moved from the GCN3 staging branch to develop the TokenPort was changed from being the port connecting the ComputeUnit to Ruby's vector memory port to a sideband port which inhibits requests to Ruby's vector memory port. As such, it needs to be explicitly connected as a new port. This changes the getPort method in ComputeUnit to be aware of the port as well as modifying the example config to connect to TCPs. The iteration to connect in the config file was modified since it was not properly connecting to TCPs each time and Ruby.py does not explicitly return a list of each MachineType. Change-Id: Ia70a6756b2af54d95e94d19bec5d8aadd3c2d5c0 Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/35096 Reviewed-by: Matt Sinclair Reviewed-by: Jason Lowe-Power Maintainer: Matt Sinclair Tested-by: kokoro --- M configs/example/apu_se.py M src/gpu-compute/compute_unit.hh 2 files changed, 12 insertions(+), 2 deletions(-) Approvals: Jason Lowe-Power: Looks good to me, but someone else must approve Matt Sinclair: Looks good to me, approved; Looks good to me, approved kokoro: Regressions pass diff --git a/configs/example/apu_se.py b/configs/example/apu_se.py index 2e24079..18640c8 100644 --- a/configs/example/apu_se.py +++ b/configs/example/apu_se.py @@ -566,6 +566,16 @@ - options.num_scalar_cache gpu_port_idx = gpu_port_idx - options.num_cp * 2 +# Connect token ports. For this we need to search through the list of all +# sequencers, since the TCP coalescers will not necessarily be first. Only +# TCP coalescers use a token port for back pressure. +token_port_idx = 0 +for i in range(len(system.ruby._cpu_ports)): +if isinstance(system.ruby._cpu_ports[i], VIPERCoalescer): +system.cpu[shader_idx].CUs[token_port_idx].gmTokenPort = \ +system.ruby._cpu_ports[i].gmTokenPort +token_port_idx += 1 + wavefront_size = options.wf_size for i in range(n_cu): # The pipeline issues wavefront_size number of uncoalesced requests @@ -573,8 +583,6 @@ for j in range(wavefront_size): system.cpu[shader_idx].CUs[i].memory_port[j] = \ system.ruby._cpu_ports[gpu_port_idx].slave[j] -system.cpu[shader_idx].CUs[i].gmTokenPort = \ -system.ruby._cpu_ports[gpu_port_idx].gmTokenPort gpu_port_idx += 1 for i in range(n_cu): diff --git a/src/gpu-compute/compute_unit.hh b/src/gpu-compute/compute_unit.hh index fe2091d..2df4807 100644 --- a/src/gpu-compute/compute_unit.hh +++ b/src/gpu-compute/compute_unit.hh @@ -1015,6 +1015,8 @@ return sqcTLBPort; } else if (if_name == "ldsPort") { return ldsPort; +} else if (if_name == "gmTokenPort") { +return gmTokenPort; } else { return ClockedObject::getPort(if_name, idx); } -- To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/35096 To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings Gerrit-Project: public/gem5 Gerrit-Branch: develop Gerrit-Change-Id: Ia70a6756b2af54d95e94d19bec5d8aadd3c2d5c0 Gerrit-Change-Number: 35096 Gerrit-PatchSet: 4 Gerrit-Owner: Matthew Poremba Gerrit-Reviewer: Jason Lowe-Power Gerrit-Reviewer: Kyle Roarty Gerrit-Reviewer: Matt Sinclair Gerrit-Reviewer: Matthew Poremba Gerrit-Reviewer: kokoro Gerrit-MessageType: merged ___ gem5-dev mailing list -- gem5-dev@gem5.org To unsubscribe send an email to gem5-dev-le...@gem5.org %(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s
[gem5-dev] Change in gem5/gem5[develop]: configs,gpu-compute: Fixes to connect gmTokenPort
Matthew Poremba has uploaded this change for review. ( https://gem5-review.googlesource.com/c/public/gem5/+/35096 ) Change subject: configs,gpu-compute: Fixes to connect gmTokenPort .. configs,gpu-compute: Fixes to connect gmTokenPort When the TokenPort was moved from the GCN3 staging branch to develop the TokenPort was changes from being the port connecting the ComputeUnit to Ruby's vector memory port to a sideband port which inhibits requests to Ruby's vector memory port. As such, it needs to be explicitly connected as a new port. This changes the getPort method in ComputeUnit to be aware of the port as well as modifying the example config to connect to TCPs. The iteration to connect in the config file was modified since it was not properly connecting to TCPs each time and Ruby.py does not explicitly return a list of each MachineType. Change-Id: Ia70a6756b2af54d95e94d19bec5d8aadd3c2d5c0 --- M configs/example/apu_se.py M src/gpu-compute/compute_unit.hh 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/configs/example/apu_se.py b/configs/example/apu_se.py index 077ce4c..1391a22 100644 --- a/configs/example/apu_se.py +++ b/configs/example/apu_se.py @@ -174,7 +174,7 @@ help="number of physical banks per LDS module") parser.add_option("--ldsBankConflictPenalty", type="int", default=1, help="number of cycles per LDS bank conflict") -parser.add_options("--lds-size", type="int", default=65536, +parser.add_option("--lds-size", type="int", default=65536, help="Size of the LDS in bytes") parser.add_option('--fast-forward-pseudo-op', action='store_true', help = 'fast forward using kvm until the m5_switchcpu' @@ -566,6 +566,16 @@ - options.num_scalar_cache gpu_port_idx = gpu_port_idx - options.num_cp * 2 +# Connect token ports. For this we need to search through the list of all +# sequencers, since the TCP coalescers will not necessarily be first. Only +# TCP coalescers use a token port for back pressure. +token_port_idx = 0 +for i in range(len(system.ruby._cpu_ports)): +if type(system.ruby._cpu_ports[i]).__name__ == "VIPERCoalescer": +system.cpu[shader_idx].CUs[token_port_idx].gmTokenPort = \ +system.ruby._cpu_ports[i].gmTokenPort +token_port_idx += 1 + wavefront_size = options.wf_size for i in range(n_cu): # The pipeline issues wavefront_size number of uncoalesced requests @@ -573,8 +583,6 @@ for j in range(wavefront_size): system.cpu[shader_idx].CUs[i].memory_port[j] = \ system.ruby._cpu_ports[gpu_port_idx].slave[j] -system.cpu[shader_idx].CUs[i].gmTokenPort = \ -system.ruby._cpu_ports[gpu_port_idx].gmTokenPort gpu_port_idx += 1 for i in range(n_cu): diff --git a/src/gpu-compute/compute_unit.hh b/src/gpu-compute/compute_unit.hh index fe2091d..2df4807 100644 --- a/src/gpu-compute/compute_unit.hh +++ b/src/gpu-compute/compute_unit.hh @@ -1015,6 +1015,8 @@ return sqcTLBPort; } else if (if_name == "ldsPort") { return ldsPort; +} else if (if_name == "gmTokenPort") { +return gmTokenPort; } else { return ClockedObject::getPort(if_name, idx); } -- To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/35096 To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings Gerrit-Project: public/gem5 Gerrit-Branch: develop Gerrit-Change-Id: Ia70a6756b2af54d95e94d19bec5d8aadd3c2d5c0 Gerrit-Change-Number: 35096 Gerrit-PatchSet: 1 Gerrit-Owner: Matthew Poremba Gerrit-MessageType: newchange ___ gem5-dev mailing list -- gem5-dev@gem5.org To unsubscribe send an email to gem5-dev-le...@gem5.org %(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s