Hi,



I am trying to run some workloads in  AMD’s APU model for gem5, I am unable to 
get Protocols,  other than GPU_VIPER working with the GCN3 ISA for e.g such as 
GPU_RFO and GPU_VIPER_REGION



I made the following changes to apu_se.py and GPU_RFO.py to get it working ( 
may or may not be correct). I used GPU_VIPER as reference for potential changes 
required to GPU_RFO.py


1] First Error I see is


create_system() takes exactly 6 arguments (5 given)


This I fixed by removing bootmem argument from create_system inside GPU_RFO.py 
as the same is done  in GPU_VIPER.py


2] Second error was


assert(len(dma_devices) == 0)


GPU_RFO expects 0 dma_devices thus I changed the apu_se.py to pass an empty dma 
list and comment port connections to dma.



dma_list = []
Ruby.create_system(options, None, system, None, None , None)
system.ruby.clk_domain = SrcClockDomain(clock = options.ruby_clock,
                                    voltage_domain = system.voltage_domain)
#gpu_cmd_proc.pio = system.piobus.master
#gpu_cmd_proc.dma = system.piobus.slave
#gpu_hsapp.pio = system.piobus.master
#gpu_hsapp.dma = system.piobus.slave


3] Third Error was


fatal: Port <orphan System>.cp_cntrl0.sequencer1.slave[0] is already connected 
to <orphan System>.cpu1.icache_port, cannot connect <orphan 
System>.cpu2.CUs0.memory_port[0]


This happens because I think the number of cpu_sequencers returned by 
GPU_VIPER's create_system was 8 while for GPU_RFO it is 7


Thus, I made certain changes to  the indexing in this part of the apu.se.py 
config


gpu_port_idx = gpu_port_idx - options.num_cp * 2

wavefront_size = options.wf_size
for i in xrange(n_cu):
    # The pipeline issues wavefront_size number of uncoalesced requests
    # in one GPU issue cycle. Hence wavefront_size mem ports.
    for j in xrange(wavefront_size):
        system.cpu[shader_idx].CUs[i].memory_port[j] = \
                  system.ruby._cpu_ports[gpu_port_idx].slave[j]


4] Next, I ran into this issue


system.dir_cntrl0.requestFromDMA without default or user set value


For this I replicated code from GPU_VIPER.py in GPU_RFO.py that sets this value


5] This is the currently where I am stuck at


  Traceback (most recent call last):

  File "<string>", line 1, in <module>
  File "/afs/cs.wisc.edu/p/hal/private/amd_apu/gem5/src/python/m5/main.py", 
line 435, in main
    exec filecode in scope
  File "configs/example/apu_se_RFO.py", line 652, in <module>
    m5.instantiate(checkpoint_dir)
  File "/afs/cs.wisc.edu/p/hal/private/amd_apu/gem5/src/python/m5/simulate.py", 
line 118, in instantiate
    for obj in root.descendants(): obj.createCCObject()
  File 
"/afs/cs.wisc.edu/p/hal/private/amd_apu/gem5/src/python/m5/SimObject.py", line 
1490, in createCCObject
    self.getCCParams()
  File 
"/afs/cs.wisc.edu/p/hal/private/amd_apu/gem5/src/python/m5/SimObject.py", line 
1431, in getCCParams
    value = value.getValue()
  File "/afs/cs.wisc.edu/p/hal/private/amd_apu/gem5/src/python/m5/params.py", 
line 247, in getValue
    return [ v.getValue() for v in self ]
  File 
"/afs/cs.wisc.edu/p/hal/private/amd_apu/gem5/src/python/m5/SimObject.py", line 
1494, in getValue
    return self.getCCObject()
  File 
"/afs/cs.wisc.edu/p/hal/private/amd_apu/gem5/src/python/m5/SimObject.py", line 
1472, in getCCObject
    params = self.getCCParams()
  File 
"/afs/cs.wisc.edu/p/hal/private/amd_apu/gem5/src/python/m5/SimObject.py", line 
1431, in getCCParams
    value = value.getValue()
  File 
"/afs/cs.wisc.edu/p/hal/private/amd_apu/gem5/src/python/m5/SimObject.py", line 
1494, in getValue
    return self.getCCObject()
  File 
"/afs/cs.wisc.edu/p/hal/private/amd_apu/gem5/src/python/m5/SimObject.py", line 
1472, in getCCObject
    params = self.getCCParams()
  File 
"/afs/cs.wisc.edu/p/hal/private/amd_apu/gem5/src/python/m5/SimObject.py", line 
1445, in getCCParams
    setattr(cc_params, param, value)
TypeError: (): incompatible function arguments. The following argument types 
are supported:
    1. (self: _m5.param_TCP_Controller.TCP_ControllerParams, arg0: 
GPUCoalescer) -> None



Most Probably, what ever changes I made for the errors that came before, caused 
this, Could someone tell me, if the changes I have made are in the right 
direction, if they aren't? How should I go about this process?


Thank you,



Preyesh Dalmia

_______________________________________________
gem5-users mailing list
[email protected]
http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users

Reply via email to