I am not sure that prefetch_nta is the problem. For different runs the
simulation would fail after different periods after printing the prefetch_
nta warning message. Also, from what I have seen in different posts it
seems that this warning has been around for a while.

I tried compiling my hello world program with -march=athlon64 alone and
together with -O0 and the the same problem happens.

Also, the I am building my benchmark on the disk image directly using qemu
and the gcc on the image is versio 5.4.0



On Sun, Sep 8, 2019 at 4:14 PM Pouya Fotouhi <pfoto...@ucdavis.edu> wrote:

> Hi Shehab,
>
> Good, that's "progress"!
> My guess off the top of my head is that you used a "more recent" compiler
> (compared to what other gem5 users tend to use), and thus some instructions
> are being generated that were not critical to the execution of applications
> other users had so far (and that's mostly why those instructions are not
> yet implemented). I think you have two options:
>
>    1. You can try implementing prefetch_nta, and possibly ignore the
>    non-temporal hint (i.e. implement it as a cacheable prefetch). You can
>    start by looking at the implementation of other prefetch instruction we
>    have in gem5 (basically you can do the same :) ).
>    2. Try compiling your application (I think we are still talking about
>    the hello world, right?), and target an older architecture (you can do as
>    extreme as march=athlon64) with less optimizations involved to avoid these
>    performance-optimizations (reducing cache pollution in this
>    particular case) that your compiler is trying to apply.
>
> My suggestion is to go with the first one, since running real applications
> compiled for an older architecture with less optimization on a "newer"
> system is the equivalent of not using "parts/features" of your system (e.g.
> SIMD units, direct prefetch, etc), which would (possibly) directly impact
> any study you are working on.
>
> Best,
>
> On Sat, Sep 7, 2019 at 8:27 PM Shehab Elsayed <shehaby...@gmail.com>
> wrote:
>
>> I am sorry for the late update. I tried running with MESI_Two_Level but
>> the simulation ends with this error.
>>
>> warn: instruction 'prefetch_nta' unimplemented
>>
>> gem5.opt: build/X86_MESI_Two_Level/cpu/o3/lsq_unit.hh:621: Fault
>> LSQUnit<Impl>::read(LSQUnit<Impl>::LSQRequest*, int) [with Impl =
>> O3CPUImpl; Fault = std::shared_ptr<FaultBase>; LSQUnit<Impl>::LSQRequest = L
>> SQ<O3CPUImpl>::LSQRequest]: Assertion `!load_inst->isExecuted()' failed.
>>
>> Which I believe has something to do with a recent update since I don't
>> remember seeing it before. And this error happens even for just 2 cores and
>> 2 threads.
>>
>> On Fri, Sep 6, 2019 at 3:16 PM Pouya Fotouhi <pfoto...@ucdavis.edu>
>> wrote:
>>
>>> Hi Shehab,
>>>
>>> As Jason pointed out, I won’t be surprised if you are having issues with
>>> classic caches running workloads that rely on locking mechanisms. Your
>>> pthread implementation is possibly using some synchronization variables
>>> which requires cache coherence to maintain its  correctness, and classic
>>> caches (at least for now) doesn’t support that.
>>>
>>> Switch to ruby caches (I suggest MESI Two Level to begin with), and
>>> given your kernel version you should be getting stable behavior from gem5.
>>>
>>> Best,
>>>
>>> On Fri, Sep 6, 2019 at 11:47 AM Jason Lowe-Power <ja...@lowepower.com>
>>> wrote:
>>>
>>>> Hi Shehab,
>>>>
>>>> IIRC, there are some issues when using classic caches + x86 + multiple
>>>> cores on full system mode. I suggest using Ruby (MESI_two_level or
>>>> MOESI_hammer) for FS simulations.
>>>>
>>>> Jason
>>>>
>>>> On Fri, Sep 6, 2019 at 11:24 AM Shehab Elsayed <shehaby...@gmail.com>
>>>> wrote:
>>>>
>>>>> My latest experiments are with the classical memory system, but I
>>>>> remember trying Ruby and it was not different. I am using kernel 4.8.13 
>>>>> and
>>>>> ubuntu-16.04.1-server-amd64 disk image. I am using Pthreads for my Hello
>>>>> World program.
>>>>>
>>>>>
>>>>> On Fri, Sep 6, 2019 at 1:13 PM Pouya Fotouhi <pfoto...@ucdavis.edu>
>>>>> wrote:
>>>>>
>>>>>> Hi Shehab,
>>>>>>
>>>>>> Can you confirm a few details about the configuration you are using?
>>>>>> Are you using classic caches or Ruby? What is the kernel version and disk
>>>>>> image you are using? What is the implementation of your "multithreaded
>>>>>> hello world" (are you using OMP)?
>>>>>>
>>>>>> Best,
>>>>>>
>>>>>> On Fri, Sep 6, 2019 at 8:58 AM Shehab Elsayed <shehaby...@gmail.com>
>>>>>> wrote:
>>>>>>
>>>>>>> First of all, thanks for your replies, Ryan and Jason.
>>>>>>>
>>>>>>> I have already pulled the latest changes by Pouya and the problem
>>>>>>> still persists.
>>>>>>>
>>>>>>> As for checkpointing, I was originally doing exactly what Jason
>>>>>>> mentioned and ran into the same problem. I then switched to not
>>>>>>> checkpointing just to avoid any problems that might be caused by
>>>>>>> checkpointing (if any). My plan was to go back to checkpointing
>>>>>>> after proving that it works without it.
>>>>>>>
>>>>>>> However, the problem doesn't seem to be related to KVM as linux
>>>>>>> boots reliable every time. The problem happens after the benchmarks 
>>>>>>> starts
>>>>>>> execution and it seems to be happening only when running multiple cores
>>>>>>> (>=4). My latest experiments with a single core and 8 threads for the
>>>>>>> benchmark seem to be working fine. But once I increase the number of
>>>>>>> simulated cores problems happen.
>>>>>>>
>>>>>>> Also, I have posted a link to the repo I am using to run my tests
>>>>>>> in a previous message. I have also added 2 debug traces with the Exec 
>>>>>>> flag
>>>>>>> for a working and non-working examples.
>>>>>>>
>>>>>>>
>>>>>>> On Fri, Sep 6, 2019 at 11:28 AM Jason Lowe-Power <
>>>>>>> ja...@lowepower.com> wrote:
>>>>>>>
>>>>>>>> Hi Shehab,
>>>>>>>>
>>>>>>>> One quick note: There is *no way* to have deterministic behavior
>>>>>>>> when running with KVM. Since you are using the hardware, the underlying
>>>>>>>> host OS will influence the execution path of the workload.
>>>>>>>>
>>>>>>>> To try to narrow down the bug you're seeing, you can try to take a
>>>>>>>> checkpoint after booting with KVM. Then, the execution from the 
>>>>>>>> checkpoint
>>>>>>>> should be deterministic since it is 100% in gem5.
>>>>>>>>
>>>>>>>> BTW, I doubt you can run the KVM CPU in a VM since this would
>>>>>>>> require your hardware and the VM to support nested virtualization. 
>>>>>>>> There
>>>>>>>> *is* support for this in the Linux kernel, but I don't think it's been
>>>>>>>> widely deployed outside of specific cloud environments.
>>>>>>>>
>>>>>>>> One other note: Pouya has pushed some changes which implement some
>>>>>>>> x86 instructions that were causing issues for him. You can try with the
>>>>>>>> current gem5 mainline to see if that helps.
>>>>>>>>
>>>>>>>> Cheers,
>>>>>>>> Jason
>>>>>>>>
>>>>>>>> On Fri, Sep 6, 2019 at 8:22 AM Shehab Elsayed <shehaby...@gmail.com>
>>>>>>>> wrote:
>>>>>>>>
>>>>>>>>> That's interesting. Are you using Full System as well? I don't
>>>>>>>>> think FS behavior is supposed to be so dependent on the host 
>>>>>>>>> environment!
>>>>>>>>>
>>>>>>>>> On Fri, Sep 6, 2019 at 11:16 AM Gambord, Ryan <
>>>>>>>>> gambo...@oregonstate.edu> wrote:
>>>>>>>>>
>>>>>>>>>> I have found that gem5 behavior is sensitive to the execution
>>>>>>>>>> environment. I now run gem5 inside an ubuntu vm on qemu and have had 
>>>>>>>>>> much
>>>>>>>>>> more consistent results. I haven't tried running kvm gem5 inside a 
>>>>>>>>>> kvm qemu
>>>>>>>>>> vm, so not sure how that works, but might be worth trying.
>>>>>>>>>>
>>>>>>>>>> Ryan
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> On Fri, Sep 6, 2019, 08:07 Shehab Elsayed <shehaby...@gmail.com>
>>>>>>>>>> wrote:
>>>>>>>>>>
>>>>>>>>>>> I was wondering if anyone is running into the same problem or if
>>>>>>>>>>> anyone has any suggestions on how to proceed with debugging this 
>>>>>>>>>>> problem.
>>>>>>>>>>>
>>>>>>>>>>> On Mon, Jul 29, 2019 at 4:57 PM Shehab Elsayed <
>>>>>>>>>>> shehaby...@gmail.com> wrote:
>>>>>>>>>>>
>>>>>>>>>>>> Sorry for the spam. I just forgot to mention that the system
>>>>>>>>>>>> configuration I am using is mainly from
>>>>>>>>>>>> https://github.com/darchr/gem5/tree/jason/kvm-testing/configs/myconfigs.
>>>>>>>>>>>> <https://github.com/darchr/gem5/tree/jason/kvm-testing/configs/myconfigs>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> Shehab Y. Elsayed, MSc.
>>>>>>>>>>>> PhD Student
>>>>>>>>>>>> The Edwards S. Rogers Sr. Dept. of Electrical and Computer
>>>>>>>>>>>> Engineering
>>>>>>>>>>>> University of Toronto
>>>>>>>>>>>> E-mail: shehaby...@gmail.com
>>>>>>>>>>>> <https://webmail.rice.edu/imp/message.php?mailbox=INBOX&index=11#>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> On Mon, Jul 29, 2019 at 4:08 PM Shehab Elsayed <
>>>>>>>>>>>> shehaby...@gmail.com> wrote:
>>>>>>>>>>>>
>>>>>>>>>>>>> I have set up a repo with gem5 that demonstrates the problem.
>>>>>>>>>>>>> The repo includes the latest version of gem5 from gem5's github 
>>>>>>>>>>>>> repo with a
>>>>>>>>>>>>> few patches applied to get KVM working together with the kernel 
>>>>>>>>>>>>> binary and
>>>>>>>>>>>>> disk image I am using. You can get the repo at
>>>>>>>>>>>>> https://github.com/ShehabElsayed/gem5_debug.git.
>>>>>>>>>>>>> <https://github.com/ShehabElsayed/gem5_debug.git>
>>>>>>>>>>>>>
>>>>>>>>>>>>> These steps should reproduce the problem:
>>>>>>>>>>>>> 1- scons build/X86/gem5.opt
>>>>>>>>>>>>> 2- ./scripts/get_fs_stuff.sh
>>>>>>>>>>>>> 3- ./scripts/run_fs.sh 8
>>>>>>>>>>>>>
>>>>>>>>>>>>> I have also included sample m5term outputs for both a 2 thread
>>>>>>>>>>>>> run (m5out_2t) and an 8 thread run (m5out_8t)
>>>>>>>>>>>>>
>>>>>>>>>>>>> Any help is really appreciated.
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> On Tue, Jul 23, 2019 at 11:01 AM Shehab Elsayed <
>>>>>>>>>>>>> shehaby...@gmail.com> wrote:
>>>>>>>>>>>>>
>>>>>>>>>>>>>> When I enable the Exec debug flag I can see that it seems to
>>>>>>>>>>>>>> be stuck in a spin lock (queued_spin_lock_slowpath)
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> On Fri, Jul 19, 2019 at 5:28 PM Shehab Elsayed <
>>>>>>>>>>>>>> shehaby...@gmail.com> wrote:
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Hello All,
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> I have a gem5 X86 full system set up that starts with KVM
>>>>>>>>>>>>>>> cores and then switches to O3 cores once the benchmark reaches 
>>>>>>>>>>>>>>> the region
>>>>>>>>>>>>>>> of interest. Right now I am testing with a simple
>>>>>>>>>>>>>>> multithreaded hello world benchmark. Sometimes the
>>>>>>>>>>>>>>> benchmark completes successfully while others gem5 just seems 
>>>>>>>>>>>>>>> to hang after
>>>>>>>>>>>>>>> starting the benchmark. I believe it is still executing some 
>>>>>>>>>>>>>>> instructions
>>>>>>>>>>>>>>> but without making any progress. The chance of this behavior (
>>>>>>>>>>>>>>> indeterminism) happening increases as the number of
>>>>>>>>>>>>>>> simulated cores or the number of threads created by the 
>>>>>>>>>>>>>>> benchmark increases.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Any ideas what might be the reason for this or how I can
>>>>>>>>>>>>>>> start debugging this problem?
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Note: I have tried the patch in https://gem5-review.
>>>>>>>>>>>>>>> googlesource.com/c/public/gem5/+/19568 but the problem
>>>>>>>>>>>>>>> persists.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Thanks!
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>> _______________________________________________
>>>>>>>>>>> gem5-users mailing list
>>>>>>>>>>> gem5-users@gem5.org
>>>>>>>>>>> http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users
>>>>>>>>>>
>>>>>>>>>> _______________________________________________
>>>>>>>>>> gem5-users mailing list
>>>>>>>>>> gem5-users@gem5.org
>>>>>>>>>> http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users
>>>>>>>>>
>>>>>>>>> _______________________________________________
>>>>>>>>> gem5-users mailing list
>>>>>>>>> gem5-users@gem5.org
>>>>>>>>> http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users
>>>>>>>>
>>>>>>>> _______________________________________________
>>>>>>>> gem5-users mailing list
>>>>>>>> gem5-users@gem5.org
>>>>>>>> http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users
>>>>>>>
>>>>>>> _______________________________________________
>>>>>>> gem5-users mailing list
>>>>>>> gem5-users@gem5.org
>>>>>>> http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users
>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>>>>> Pouya Fotouhi
>>>>>> PhD Candidate
>>>>>> Department of Electrical and Computer Engineering
>>>>>> University of California, Davis
>>>>>> _______________________________________________
>>>>>> gem5-users mailing list
>>>>>> gem5-users@gem5.org
>>>>>> http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users
>>>>>
>>>>> _______________________________________________
>>>>> gem5-users mailing list
>>>>> gem5-users@gem5.org
>>>>> http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users
>>>>
>>>> _______________________________________________
>>>> gem5-users mailing list
>>>> gem5-users@gem5.org
>>>> http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users
>>>
>>> --
>>> Pouya Fotouhi
>>> PhD Candidate
>>> Department of Electrical and Computer Engineering
>>> University of California, Davis
>>> _______________________________________________
>>> gem5-users mailing list
>>> gem5-users@gem5.org
>>> http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users
>>
>> _______________________________________________
>> gem5-users mailing list
>> gem5-users@gem5.org
>> http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users
>
>
>
> --
> Pouya Fotouhi
> PhD Candidate
> Department of Electrical and Computer Engineering
> University of California, Davis
> _______________________________________________
> gem5-users mailing list
> gem5-users@gem5.org
> http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users
_______________________________________________
gem5-users mailing list
gem5-users@gem5.org
http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users

Reply via email to