Confusion about spec2017

Viewed 194

Recently I am learning about cache prefetching. I want to use spec2017 to test the previous prefetch strategies and learn how to extract the instruction sequence in spec2017. I browsed the introduction of spec2017 on the official website, and successfully installed and ran it according to the tutorial. But I still have some questions?

  1. First, I copied Example-gcc-linux-x86.cfg in the config folder as Example-gcc-linux-x86-test.cfg. And modified the gcc path, etc., when I use this config file to compile and run spec2017, there were a lot of Example-gcc-linux-x86-test.cfg.2021-06-16T113335, Example-gcc-linux- in the config folder x86-test.cfg.2021-06-17T145932, Example-gcc-linux-x86-test.cfg.2021-06-17T150445 and so on, and they occupy the config folder. Are these files temporary files and can they be deleted?

  2. The server I use is x86_64 GNU/Linux model. So I think the spec2017 I compiled is x86. If I want to compile into risc-v, do I just need to point the gcc path in the .cfg file to the gcc in my risc-v tool chain?

  3. The third point I don't understand is how to set the number of copies and the number of threads. When running SPECrate, I need to set the number of copies. For SPECspeed, I need to set the number of threads. Copies may be set to the number of cores of the CPU, what about threads? Does this setting affect the results of the final evaluation? If it does, then if everyone uses a different number, how to compare?

  4. I plan to use an emulator to run spec2017, such as gem5. I found a lot of runtime parameters. For example, for 500.perlbench r / 600.perlbench s, in the case of ref size, the following figure shows the three inputs given. What do these three inputs represent? Which one should I choose?

  5. When using gem5 to run spec2017, do I need to set the CPU frequency or Cache related information?

  6. I am doing some prefetching experiments. How should I extract the corresponding trace from spec2017? Does this spec2017 provide relevant support?

There may be a lot of problems. But if someone is willing to answer me, I will be grateful! Thanks!

enter image description here

1 Answers
  1. Yes, these files can be deleted.
  2. Yes, replacing them with your RV toolchain.
  3. What about threads? Users can fine-tune to find the better "threads" of their system. Why is there not a recommended # of threads? Because SPECSpeed uses OpenMP to communicate and the communication cost varies across different machines. SPECSpeed reflects the scalability of the machine and the auto-parallelization ability of the compiler.
  4. I think you can find the answer with google. Briefly, For checking correctness, we usually use test inputs. For reports results in papers, we usually use ref inputs. In principle, all of these inputs should be run. Because if you read the formula to calculate SPEC score, you will find reftime is the sum of execution time of all inputs.
  5. If you are modeling a specific u-arch of a real-world machine, you might pass related info through march to gcc or icc to obtain better performance. If not, you do need to pass the uarch infomation to SPEC or compiler.
  6. No. SPECCPU 2017 does not account for that. I recommend you to read some paper like SimPoints and SMARTS.
Related