Hi,

When i tried running from checkpoint with --restore-with-cpu atomic: 
build/X86/gem5.opt -d results/blackscholes ./configs/example/ruby_fs.py 
--cpu-type=detailed --caches --l2cache --checkpoint-restore=1 -n 1 
--restore-with-cpu atomic 
I get the same error message:
panic: RubyPort::M5Port::recvAtomic() not implemented!

I tried taking checkpoint with detailed mode instead of atomic mode. Then 
running from checkpoint, I get the following error:

Panic: Pio port of system.switch_cpus.interrupts not connected to anything!

If i follow this patch 
(http://www.mail-archive.com/[email protected]/msg01936.html), the pio port 
error goes away, but i get this message:

fatal: Can't unserialize 'Globals:curTick'

If i just run the simulation w/o checkpoint, I get segmentation fault.

I don't know what else to try to be able to simulate x86 FS to run PARSEC…Any 
pointers would be greatly appreciated.

Thanks,
-Trang

On Feb 22, 2012, at 11:06 PM, Nilay Vaish wrote:

> The problem here is that you are trying to restore from a checkpoint. The set 
> of scripts that are present in configs/ assume that the checkpoint was 
> created using an atomic CPU and therefore the state should be restored using 
> an atomic CPU. It is only after some T cycles that the simulation would 
> switch to detailed CPU. The solution is to mention the CPU that should be 
> used for restoring from a checkpoint. There is an option --restore-with-cpu 
> that can be used to specify the cpu type to be used while restoring from a 
> checkpoint. I think, as of now, it is not possible to restore from a 
> checkpoint created with atomic CPU to a system that makes use of Ruby.
> 
> One more thing, when you are using Ruby, the options --caches and --l2cache 
> are most likely not required.
> 
> --
> Nilay
> 
> On Wed, 22 Feb 2012, Trang Le wrote:
> 
>> Hi,
>> 
>> I turned on the debug-flag Ruby with the following command: 
>> build/X86/gem5.opt -d results/blackscholes --debug-flags=Ruby 
>> ./configs/example/ruby_fs.py --cpu-type=detailed --caches --l2cache 
>> --checkpoint-restore=1 -n 1
>> 
>> And here is the printout:
>> ===================================================================
>>     0: system.sys_port_proxy-slave0: creating port from ruby sequcner to cpu 
>> system.sys_port_proxy-slave0
>>     0: system.l1_cntrl0.sequencer-physMemPort: creating port to ruby 
>> sequencer to cpu system.l1_cntrl0.sequencer-physMemPort
>>     0: system.l1_cntrl0.sequencer-pio-port-1: creating port to ruby 
>> sequencer to cpu system.l1_cntrl0.sequencer-pio-port-1
>>     0: system.dma_cntrl0.dma_sequencer-physMemPort: creating port to ruby 
>> sequencer to cpu system.dma_cntrl0.dma_sequencer-physMemPort
>>     0: system.dma_cntrl0.dma_sequencer-slave0: creating port from ruby 
>> sequcner to cpu system.dma_cntrl0.dma_sequencer-slave0
>>     0: system.sys_port_proxy-physMemPort: creating port to ruby sequencer to 
>> cpu system.sys_port_proxy-physMemPort
>>     0: system.l1_cntrl0.sequencer-slave0: creating port from ruby sequcner 
>> to cpu system.l1_cntrl0.sequencer-slave0
>>     0: system.l1_cntrl0.sequencer-slave1: creating port from ruby sequcner 
>> to cpu system.l1_cntrl0.sequencer-slave1
>>     0: system.l1_cntrl0.sequencer-slave3: creating port from ruby sequcner 
>> to cpu system.l1_cntrl0.sequencer-slave3
>>     0: system.l1_cntrl0.sequencer-slave2: creating port from ruby sequcner 
>> to cpu system.l1_cntrl0.sequencer-slave2
>> warn: Reading current count from inactive timer.
>>     0: global: Returning shortest path
>> (src-(2*max_machines)): -8, (next-(2*max_machines)): 0, src: 0, next: 8, 
>> result: [NetDest (4) 1  - 1  - 1  - 1  - ]
>>     0: global: Returning shortest path
>> (src-(2*max_machines)): -7, (next-(2*max_machines)): 1, src: 1, next: 9, 
>> result: [NetDest (4) 1  - 1  - 1  - 1  - ]
>>     0: global: Returning shortest path
>> (src-(2*max_machines)): -6, (next-(2*max_machines)): 2, src: 2, next: 10, 
>> result: [NetDest (4) 1  - 1  - 1  - 1  - ]
>>     0: global: Returning shortest path
>> (src-(2*max_machines)): -5, (next-(2*max_machines)): 3, src: 3, next: 11, 
>> result: [NetDest (4) 1  - 1  - 1  - 1  - ]
>>     0: global: Returning shortest path
>> (src-(2*max_machines)): 0, (next-(2*max_machines)): -4, src: 8, next: 4, 
>> result: [NetDest (4) 1  - 0  - 0  - 0  - ]
>>     0: global: Returning shortest path
>> (src-(2*max_machines)): 0, (next-(2*max_machines)): 4, src: 8, next: 12, 
>> result: [NetDest (4) 0  - 1  - 1  - 1  - ]
>>     0: global: Returning shortest path
>> (src-(2*max_machines)): 1, (next-(2*max_machines)): -3, src: 9, next: 5, 
>> result: [NetDest (4) 0  - 1  - 0  - 0  - ]
>>     0: global: Returning shortest path
>> (src-(2*max_machines)): 1, (next-(2*max_machines)): 4, src: 9, next: 12, 
>> result: [NetDest (4) 1  - 0  - 1  - 1  - ]
>>     0: global: Returning shortest path
>> (src-(2*max_machines)): 2, (next-(2*max_machines)): -2, src: 10, next: 6, 
>> result: [NetDest (4) 0  - 0  - 1  - 0  - ]
>>     0: global: Returning shortest path
>> (src-(2*max_machines)): 2, (next-(2*max_machines)): 4, src: 10, next: 12, 
>> result: [NetDest (4) 1  - 1  - 0  - 1  - ]
>>     0: global: Returning shortest path
>> (src-(2*max_machines)): 3, (next-(2*max_machines)): -1, src: 11, next: 7, 
>> result: [NetDest (4) 0  - 0  - 0  - 1  - ]
>>     0: global: Returning shortest path
>> (src-(2*max_machines)): 3, (next-(2*max_machines)): 4, src: 11, next: 12, 
>> result: [NetDest (4) 1  - 1  - 1  - 0  - ]
>>     0: global: Returning shortest path
>> (src-(2*max_machines)): 4, (next-(2*max_machines)): 0, src: 12, next: 8, 
>> result: [NetDest (4) 1  - 0  - 0  - 0  - ]
>>     0: global: Returning shortest path
>> (src-(2*max_machines)): 4, (next-(2*max_machines)): 1, src: 12, next: 9, 
>> result: [NetDest (4) 0  - 1  - 0  - 0  - ]
>>     0: global: Returning shortest path
>> (src-(2*max_machines)): 4, (next-(2*max_machines)): 2, src: 12, next: 10, 
>> result: [NetDest (4) 0  - 0  - 1  - 0  - ]
>>     0: global: Returning shortest path
>> (src-(2*max_machines)): 4, (next-(2*max_machines)): 3, src: 12, next: 11, 
>> result: [NetDest (4) 0  - 0  - 0  - 1  - ]
>> 0: system.remote_gdb.listener: listening for remote gdb #0 on port 7000
>> Switch at curTick count:10000
>> info: Entering event queue @ 5159803018000.  Starting simulation...
>> panic: RubyPort::M5Port::recvAtomic() not implemented!
>> @ cycle 5159803018500
>> [recvAtomic:build/X86/mem/ruby/system/RubyPort.cc, line 139]
>> ====================================================================
>> 
>> Is this helpful ?
>> 
>> -Trang
>> 
>> On Feb 22, 2012, at 9:49 AM, Ali Saidi wrote:
>> 
>>> Hi Trang,
>>> 
>>> 
>>> Could you run gem5 in a debugger and get a back trace. We need a bit more 
>>> information to debug it.
>>> 
>>> 
>>> Thanks,
>>> 
>>> Ali
>>> 
>>> On 22.02.2012 02:43, Trang Le wrote:
>>> 
>>>> Hi,
>>>> 
>>>> I was trying to run PARSEC benchmarks in X86 FS mode with Ruby (my gem5 
>>>> was updated recently). However, I've run into this error message:
>>>> panic: RubyPort::M5Port::recvAtomic() not implemented!
>>>> 
>>>> I know Ruby doesn't support Atomic transactions and it shouldn't even be 
>>>> called….so I am not sure why it's doing this. Do you have any suggestions 
>>>> what I should do to have more clue of what's going on…
>>>> 
>>>> Thanks,
>>>> -Trang
>>>> _______________________________________________
>>>> gem5-users mailing list
>>>> [email protected]
>>>> http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users
>>>> 
>>> 
>>> 
>>> _______________________________________________
>>> gem5-users mailing list
>>> [email protected]
>>> http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users
>> 
> _______________________________________________
> gem5-users mailing list
> [email protected]
> http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users

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

Reply via email to