[gem5-users] Re: M5 Fs utility workbegin

2022-03-09 Thread Jason Lowe-Power via gem5-users
Great question!

Since KVM is executing using the host's hardware, you can't use the magic
instructions! However, we have another interface (called `m5_addr` or
`m5-addr` in the code, IIRC) that will work with KVM. If you compile using
-DM5_ADDR=, it should work in KVM. For x86, we usually
use 0x. Then, I believe you need to call a function to map
the memory (not sure what it's called, it's not in the documentation)
before calling any m5 functions.

See
https://gem5.googlesource.com/public/gem5-resources/+/refs/heads/stable/src/parsec/disk-image/parsec/parsec-benchmark/pkgs/libs/hooks/src/hooks.c#96
for an example.
Also see
https://gem5.googlesource.com/public/gem5-resources/+/refs/heads/stable/src/parsec/disk-image/parsec/parsec-benchmark/pkgs/libs/hooks/src/Makefile.shared#9
for how we compile the parsec hooks with m5 addr.

Note: it looks like either parsec is a bit out of date with current gem5
develop or the README.md in util/m5 is out of date. I'm not sure which.

Cheers,
Jason

On Wed, Mar 9, 2022 at 4:47 PM George Michelogiannakis <
mixelog...@yahoo.co.uk> wrote:

> Hello Jason and everyone,
>
> I'll add the fix to my todo list :)
>
> But before then, I'm confused by something. Thanks for the link to hooks
> and indeed I "m5_work_begin(0,0);. I recompiled the benchmarks I had with
> work begin and end. It's just adding "m5_work_begin(0,0)" and 
> "m5_work_end(0,0)"
> at the right spots, without anything else fancy. It compiles and links
> fine. When I try to run natively as expected they terminate due to an
> illegal instruction ("./run: line 1:  1161 Illegal instruction").
> However, the exact same error happens if I run the same binary in FS mode.
> Note that I'm running first in KVM mode on a x86 host hoping to switch CPUs
> once the work start event happens. Are magic ops unsupported in KVM mode?
>
> Thanks!
>
>
> On Wednesday, March 9, 2022, 09:14:24 AM PST, Jason Lowe-Power via
> gem5-users  wrote:
>
>
> Hi George,
>
> For workbegin/workend, they can be called from within applications if you
> link to the libm5 library. For instance, in the parsec resource here:
> https://resources.gem5.org/resources/parsec we use the m5_workbegin()
> function in the ROI hooks. See
> https://gem5.googlesource.com/public/gem5-resources/+/refs/heads/stable/src/parsec/disk-image/parsec/parsec-benchmark/pkgs/libs/hooks/src/hooks.c#96
> for the code.
>
> This works in both SE mode and FS mode. I have no idea why those functions
> are not available in the m5 binary. This seems like an oversight, and it
> should be a simple fix. If you want to make the fix, we'd appreciate it,
> otherwise, we'll put it on the to do list :).
>
> If you require using the m5 binary without any changes, then you can use
> `m5 exit` and modify your run script to "understand" that the first exit is
> to reset the stats, the second exit means to dump the stats, etc.
>
> Cheers,
> Jason
>
> On Wed, Mar 9, 2022 at 4:08 AM Gabe Black via gem5-users <
> gem5-users@gem5.org> wrote:
>
> I don't think we ever transitioned from an assembly based mechanism to a C
> based one, since we have always (as far as I know) used both, assembly to
> actually invoke the call into gem5, and C to provide a friendly
> interface/wrapper around the assembly. That said, yes, it looks like work
> begin and work end are just not in the utility, but they are in the header
> files and are implemented in gem5 itself.
>
> Looking at this again triggered a vague memory where I think these didn't
> make sense being called from the utility for some reason? Maybe they only
> make sense in SE mode, or they should be called from code directly instead
> of from a shell or script? I'm not very familiar with them so I can't say
> for sure, but I vaguely remember there was something like that.
>
> Gabe
>
> On Wed, Mar 9, 2022 at 2:45 AM Giacomo Travaglini <
> giacomo.travagl...@arm.com> wrote:
>
> Hi George,
>
>
>
> Thanks for reporting this, I noticed the same issue. When we transitioned
> from the old m5 subsystem (assembly based) to the new C based one we forgot
> to provide an implementation for workbegin and workend I suppose. Putting
> Gabe on CC
>
>
>
> Kind Regards
>
>
>
> Giacomo
>
>
>
> *From: *George Michelogiannakis via gem5-users 
> *Date: *Wednesday, 9 March 2022 at 06:54
> *To: *gem5-users@gem5.org 
> *Cc: *George Michelogiannakis 
> *Subject: *[gem5-users] M5 Fs utility workbegin
>
> Hello Gem5 community,
>
>
>
> I'm trying to use the M5 utility meant for full system mode to signal work
> begin and end. I see in the documentation that the utility supports these
> parameters:
>
>
>
>- workbegin: Cause an exit evet of type, “workbegin”, that could be
>used to mark the begining of an ROI.
>- workend: Cause an exit event of type, “workend”, that could be used
>to mark the termination of an ROI.
>
> But when I run the utility in X86 after compiling it for X86 those two
> options aren't available as commands. There is a "fail" option with a
> para

[gem5-users] Re: M5 Fs utility workbegin

2022-03-09 Thread George Michelogiannakis via gem5-users
Hello Jason and everyone,
I'll add the fix to my todo list :)
But before then, I'm confused by something. Thanks for the link to hooks and 
indeed I "m5_work_begin(0,0);. I recompiled the benchmarks I had with work 
begin and end. It's just adding "m5_work_begin(0,0)" and "m5_work_end(0,0)" at 
the right spots, without anything else fancy. It compiles and links fine. When 
I try to run natively as expected they terminate due to an illegal instruction 
("./run: line 1:  1161 Illegal instruction"). However, the exact same error 
happens if I run the same binary in FS mode. Note that I'm running first in KVM 
mode on a x86 host hoping to switch CPUs once the work start event happens. Are 
magic ops unsupported in KVM mode?
Thanks! 

On Wednesday, March 9, 2022, 09:14:24 AM PST, Jason Lowe-Power via 
gem5-users  wrote:  
 
 Hi George,
For workbegin/workend, they can be called from within applications if you link 
to the libm5 library. For instance, in the parsec resource here: 
https://resources.gem5.org/resources/parsec we use the m5_workbegin() function 
in the ROI hooks. See 
https://gem5.googlesource.com/public/gem5-resources/+/refs/heads/stable/src/parsec/disk-image/parsec/parsec-benchmark/pkgs/libs/hooks/src/hooks.c#96
 for the code.
This works in both SE mode and FS mode. I have no idea why those functions are 
not available in the m5 binary. This seems like an oversight, and it should be 
a simple fix. If you want to make the fix, we'd appreciate it, otherwise, we'll 
put it on the to do list :).
If you require using the m5 binary without any changes, then you can use `m5 
exit` and modify your run script to "understand" that the first exit is to 
reset the stats, the second exit means to dump the stats, etc.
Cheers,Jason
On Wed, Mar 9, 2022 at 4:08 AM Gabe Black via gem5-users  
wrote:

I don't think we ever transitioned from an assembly based mechanism to a C 
based one, since we have always (as far as I know) used both, assembly to 
actually invoke the call into gem5, and C to provide a friendly 
interface/wrapper around the assembly. That said, yes, it looks like work begin 
and work end are just not in the utility, but they are in the header files and 
are implemented in gem5 itself.
Looking at this again triggered a vague memory where I think these didn't make 
sense being called from the utility for some reason? Maybe they only make sense 
in SE mode, or they should be called from code directly instead of from a shell 
or script? I'm not very familiar with them so I can't say for sure, but I 
vaguely remember there was something like that.
Gabe
On Wed, Mar 9, 2022 at 2:45 AM Giacomo Travaglini  
wrote:


Hi George,

 

Thanks for reporting this, I noticed the same issue. When we transitioned from 
the old m5 subsystem (assembly based) to the new C based one we forgot to 
provide an implementation for workbegin and workend I suppose. Putting Gabe on 
CC

 

Kind Regards

 

Giacomo

 

From:George Michelogiannakis via gem5-users 
Date: Wednesday, 9 March 2022 at 06:54
To: gem5-users@gem5.org 
Cc: George Michelogiannakis 
Subject: [gem5-users] M5 Fs utility workbegin

Hello Gem5 community,

 

I'm trying to use the M5 utility meant for full system mode to signal work 
begin and end. I see in the documentation that the utility supports these 
parameters:

 
   
   - workbegin: Cause an exit evet of type, “workbegin”, that could be used to 
mark the begining of an ROI.
   - workend: Cause an exit event of type, “workend”, that could be used to 
mark the termination of an ROI.

But when I run the utility in X86 after compiling it for X86 those two options 
aren't available as commands. There is a "fail" option with a parameter that 
isn't mentioned in the documentation. Is that the way to simulate workbegin and 
workend?

 

Thanks in advance,

  George M

 

 
IMPORTANT NOTICE: The contents of this email and any attachments are 
confidential and may also be privileged. If you are not the intended recipient, 
please notify the sender immediately and do not disclose the contents to any 
other person, use it for any purpose, or store or copy the information in any 
medium. Thank you.
___
gem5-users mailing list -- gem5-users@gem5.org
To unsubscribe send an email to gem5-users-le...@gem5.org
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s
___
gem5-users mailing list -- gem5-users@gem5.org
To unsubscribe send an email to gem5-users-le...@gem5.org
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s  ___
gem5-users mailing list -- gem5-users@gem5.org
To unsubscribe send an email to gem5-users-le...@gem5.org
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s

[gem5-users] Re: M5 Fs utility workbegin

2022-03-09 Thread George Michelogiannakis via gem5-users
Indeed there is a way to signal workbegin and workend from the program itself 
with m5 ops. But I'm trying to avoid recompiling a whole bunch of code to make 
it happen, though I can do that too. If there is a way to simulate workbegin 
and workend from the command line great, otherwise no worries I'll implement 
alternatives. Thanks for the responses!





 

On Wednesday, March 9, 2022, 04:06:03 AM PST, Gabe Black 
 wrote:  
 
 I don't think we ever transitioned from an assembly based mechanism to a C 
based one, since we have always (as far as I know) used both, assembly to 
actually invoke the call into gem5, and C to provide a friendly 
interface/wrapper around the assembly. That said, yes, it looks like work begin 
and work end are just not in the utility, but they are in the header files and 
are implemented in gem5 itself.
Looking at this again triggered a vague memory where I think these didn't make 
sense being called from the utility for some reason? Maybe they only make sense 
in SE mode, or they should be called from code directly instead of from a shell 
or script? I'm not very familiar with them so I can't say for sure, but I 
vaguely remember there was something like that.
Gabe
On Wed, Mar 9, 2022 at 2:45 AM Giacomo Travaglini  
wrote:


Hi George,

 

Thanks for reporting this, I noticed the same issue. When we transitioned from 
the old m5 subsystem (assembly based) to the new C based one we forgot to 
provide an implementation for workbegin and workend I suppose. Putting Gabe on 
CC

 

Kind Regards

 

Giacomo

 

From:George Michelogiannakis via gem5-users 
Date: Wednesday, 9 March 2022 at 06:54
To: gem5-users@gem5.org 
Cc: George Michelogiannakis 
Subject: [gem5-users] M5 Fs utility workbegin

Hello Gem5 community,

 

I'm trying to use the M5 utility meant for full system mode to signal work 
begin and end. I see in the documentation that the utility supports these 
parameters:

 
   
   - workbegin: Cause an exit evet of type, “workbegin”, that could be used to 
mark the begining of an ROI.
   - workend: Cause an exit event of type, “workend”, that could be used to 
mark the termination of an ROI.

But when I run the utility in X86 after compiling it for X86 those two options 
aren't available as commands. There is a "fail" option with a parameter that 
isn't mentioned in the documentation. Is that the way to simulate workbegin and 
workend?

 

Thanks in advance,

  George M

 

 
IMPORTANT NOTICE: The contents of this email and any attachments are 
confidential and may also be privileged. If you are not the intended recipient, 
please notify the sender immediately and do not disclose the contents to any 
other person, use it for any purpose, or store or copy the information in any 
medium. Thank you.
  ___
gem5-users mailing list -- gem5-users@gem5.org
To unsubscribe send an email to gem5-users-le...@gem5.org
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s

[gem5-users] Re: M5 Fs utility workbegin

2022-03-09 Thread Jason Lowe-Power via gem5-users
Hi George,

For workbegin/workend, they can be called from within applications if you
link to the libm5 library. For instance, in the parsec resource here:
https://resources.gem5.org/resources/parsec we use the m5_workbegin()
function in the ROI hooks. See
https://gem5.googlesource.com/public/gem5-resources/+/refs/heads/stable/src/parsec/disk-image/parsec/parsec-benchmark/pkgs/libs/hooks/src/hooks.c#96
for the code.

This works in both SE mode and FS mode. I have no idea why those functions
are not available in the m5 binary. This seems like an oversight, and it
should be a simple fix. If you want to make the fix, we'd appreciate it,
otherwise, we'll put it on the to do list :).

If you require using the m5 binary without any changes, then you can use
`m5 exit` and modify your run script to "understand" that the first exit is
to reset the stats, the second exit means to dump the stats, etc.

Cheers,
Jason

On Wed, Mar 9, 2022 at 4:08 AM Gabe Black via gem5-users <
gem5-users@gem5.org> wrote:

> I don't think we ever transitioned from an assembly based mechanism to a C
> based one, since we have always (as far as I know) used both, assembly to
> actually invoke the call into gem5, and C to provide a friendly
> interface/wrapper around the assembly. That said, yes, it looks like work
> begin and work end are just not in the utility, but they are in the header
> files and are implemented in gem5 itself.
>
> Looking at this again triggered a vague memory where I think these didn't
> make sense being called from the utility for some reason? Maybe they only
> make sense in SE mode, or they should be called from code directly instead
> of from a shell or script? I'm not very familiar with them so I can't say
> for sure, but I vaguely remember there was something like that.
>
> Gabe
>
> On Wed, Mar 9, 2022 at 2:45 AM Giacomo Travaglini <
> giacomo.travagl...@arm.com> wrote:
>
>> Hi George,
>>
>>
>>
>> Thanks for reporting this, I noticed the same issue. When we transitioned
>> from the old m5 subsystem (assembly based) to the new C based one we forgot
>> to provide an implementation for workbegin and workend I suppose. Putting
>> Gabe on CC
>>
>>
>>
>> Kind Regards
>>
>>
>>
>> Giacomo
>>
>>
>>
>> *From: *George Michelogiannakis via gem5-users 
>> *Date: *Wednesday, 9 March 2022 at 06:54
>> *To: *gem5-users@gem5.org 
>> *Cc: *George Michelogiannakis 
>> *Subject: *[gem5-users] M5 Fs utility workbegin
>>
>> Hello Gem5 community,
>>
>>
>>
>> I'm trying to use the M5 utility meant for full system mode to signal
>> work begin and end. I see in the documentation that the utility supports
>> these parameters:
>>
>>
>>
>>- workbegin: Cause an exit evet of type, “workbegin”, that could be
>>used to mark the begining of an ROI.
>>- workend: Cause an exit event of type, “workend”, that could be used
>>to mark the termination of an ROI.
>>
>> But when I run the utility in X86 after compiling it for X86 those two
>> options aren't available as commands. There is a "fail" option with a
>> parameter that isn't mentioned in the documentation. Is that the way to
>> simulate workbegin and workend?
>>
>>
>>
>> Thanks in advance,
>>
>>   George M
>>
>>
>>
>>
>> IMPORTANT NOTICE: The contents of this email and any attachments are
>> confidential and may also be privileged. If you are not the intended
>> recipient, please notify the sender immediately and do not disclose the
>> contents to any other person, use it for any purpose, or store or copy the
>> information in any medium. Thank you.
>>
> ___
> gem5-users mailing list -- gem5-users@gem5.org
> To unsubscribe send an email to gem5-users-le...@gem5.org
> %(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s
___
gem5-users mailing list -- gem5-users@gem5.org
To unsubscribe send an email to gem5-users-le...@gem5.org
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s

[gem5-users] Re: M5 Fs utility workbegin

2022-03-09 Thread Gabe Black via gem5-users
I don't think we ever transitioned from an assembly based mechanism to a C
based one, since we have always (as far as I know) used both, assembly to
actually invoke the call into gem5, and C to provide a friendly
interface/wrapper around the assembly. That said, yes, it looks like work
begin and work end are just not in the utility, but they are in the header
files and are implemented in gem5 itself.

Looking at this again triggered a vague memory where I think these didn't
make sense being called from the utility for some reason? Maybe they only
make sense in SE mode, or they should be called from code directly instead
of from a shell or script? I'm not very familiar with them so I can't say
for sure, but I vaguely remember there was something like that.

Gabe

On Wed, Mar 9, 2022 at 2:45 AM Giacomo Travaglini <
giacomo.travagl...@arm.com> wrote:

> Hi George,
>
>
>
> Thanks for reporting this, I noticed the same issue. When we transitioned
> from the old m5 subsystem (assembly based) to the new C based one we forgot
> to provide an implementation for workbegin and workend I suppose. Putting
> Gabe on CC
>
>
>
> Kind Regards
>
>
>
> Giacomo
>
>
>
> *From: *George Michelogiannakis via gem5-users 
> *Date: *Wednesday, 9 March 2022 at 06:54
> *To: *gem5-users@gem5.org 
> *Cc: *George Michelogiannakis 
> *Subject: *[gem5-users] M5 Fs utility workbegin
>
> Hello Gem5 community,
>
>
>
> I'm trying to use the M5 utility meant for full system mode to signal work
> begin and end. I see in the documentation that the utility supports these
> parameters:
>
>
>
>- workbegin: Cause an exit evet of type, “workbegin”, that could be
>used to mark the begining of an ROI.
>- workend: Cause an exit event of type, “workend”, that could be used
>to mark the termination of an ROI.
>
> But when I run the utility in X86 after compiling it for X86 those two
> options aren't available as commands. There is a "fail" option with a
> parameter that isn't mentioned in the documentation. Is that the way to
> simulate workbegin and workend?
>
>
>
> Thanks in advance,
>
>   George M
>
>
>
>
> IMPORTANT NOTICE: The contents of this email and any attachments are
> confidential and may also be privileged. If you are not the intended
> recipient, please notify the sender immediately and do not disclose the
> contents to any other person, use it for any purpose, or store or copy the
> information in any medium. Thank you.
>
___
gem5-users mailing list -- gem5-users@gem5.org
To unsubscribe send an email to gem5-users-le...@gem5.org
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s

[gem5-users] Re: M5 Fs utility workbegin

2022-03-09 Thread Giacomo Travaglini via gem5-users
Hi George,

Thanks for reporting this, I noticed the same issue. When we transitioned from 
the old m5 subsystem (assembly based) to the new C based one we forgot to 
provide an implementation for workbegin and workend I suppose. Putting Gabe on 
CC

Kind Regards

Giacomo

From: George Michelogiannakis via gem5-users 
Date: Wednesday, 9 March 2022 at 06:54
To: gem5-users@gem5.org 
Cc: George Michelogiannakis 
Subject: [gem5-users] M5 Fs utility workbegin
Hello Gem5 community,

I'm trying to use the M5 utility meant for full system mode to signal work 
begin and end. I see in the documentation that the utility supports these 
parameters:


  *   workbegin: Cause an exit evet of type, “workbegin”, that could be used to 
mark the begining of an ROI.
  *   workend: Cause an exit event of type, “workend”, that could be used to 
mark the termination of an ROI.
But when I run the utility in X86 after compiling it for X86 those two options 
aren't available as commands. There is a "fail" option with a parameter that 
isn't mentioned in the documentation. Is that the way to simulate workbegin and 
workend?

Thanks in advance,
  George M




IMPORTANT NOTICE: The contents of this email and any attachments are 
confidential and may also be privileged. If you are not the intended recipient, 
please notify the sender immediately and do not disclose the contents to any 
other person, use it for any purpose, or store or copy the information in any 
medium. Thank you.
___
gem5-users mailing list -- gem5-users@gem5.org
To unsubscribe send an email to gem5-users-le...@gem5.org
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s