Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Need help to get quartz to work on skylake cpus #32

Open
zxjcarrot opened this issue Nov 16, 2018 · 2 comments
Open

Need help to get quartz to work on skylake cpus #32

zxjcarrot opened this issue Nov 16, 2018 · 2 comments

Comments

@zxjcarrot
Copy link

zxjcarrot commented Nov 16, 2018

Hi, I'm trying to get quartz to work on Skylake cpus.
According to the paper, LDM_STALL is derived from L2stalls, L3 hits L3 miss.. which in turn are derived from the performance counter events on different cpu micro-architecture. I looked up(with papi_native_avail command) the events used on Haswell and found that most of the events still exist on Skylake except CYCLE_ACTIVITY:STALLS_L2_PENDING. The closest event I know is CYCLE_ACTIVITY:STALLS_L2_MISS which counts the Execution stalls while at least one L2 demand load is outstanding . But I'm not sure. So any idea on Skylake which event is equivalent?

By the way, I'm tyring to access native event counter instead of PAPI for performance reasons. So I have to assemble integer format of event id similar to the number 0x55305a3 in here. Any useful references for how this event id is represented?

@hadibrais
Copy link
Contributor

You need to modify the following existing files to add support for a new microarchitecture: cpu.h, cpu.c, known_cpus.h, and xeon-ex.h. In addition, you have to add a new file called skylake.h that is similar to the header files of other microarchitectures.

The event codes are the values written into the PERFEVTSEL registers. Each byte of the value 0x55305a3 specifies some part of the event. Refer to the Intel manual V3 Chapter 18 and 19 for more information on the format of PERFEVTSEL.

I think that the two events CYCLE_ACTIVITY:STALLS_L2_PENDING and CYCLE_ACTIVITY:STALLS_L2_MISS represent the same thin. Although it's not clear whether L1 prefetcher requests are counted by any of these events. This issue exists with all microarchitectures though.

You can also make use of the event CYCLE_ACTIVITY.STALLS_L3_MISS, which is new in Skylake to improve the accuracy of calculating the number of cycles to inject.

@kjhnet
Copy link

kjhnet commented Mar 22, 2019

Hi, I've tried to follow what you mentioned to support Skylake microarchitecture. But still have a problem to run the quartz on Skylake cpus.

After modifying, then I've verified it by executing "bandwidth-model-building.sh file". I have noticed that the file "/tmp/mc_pci_bus" is empty and it doesn't work further.
I was wondering it's due to the modification. Does anyone have done on Skylake or others?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants