Giter Site home page Giter Site logo

vineodd / pimsim Goto Github PK

View Code? Open in Web Editor NEW
175.0 6.0 85.0 38.49 MB

PIMSim is a Process-In-Memory Simulator with the compatibility of GEM5 full-system simulation.

License: GNU General Public License v3.0

C# 2.34% Makefile 0.14% Python 13.11% HTML 0.37% Java 2.66% Shell 0.21% C 7.38% C++ 71.88% CMake 0.16% M4 0.16% sed 0.01% Scala 0.01% Assembly 1.47% Awk 0.01% Forth 0.01% Perl 0.08% Emacs Lisp 0.01% Roff 0.02% Vim Script 0.01% SWIG 0.01%

pimsim's Introduction

PIMSim had updated to V2.0!

Add support to GEM5 full-sytem simulation.

  • Add PIM instructions in GEM5.
  • Executable PIM binary compiler.
  • Detailed User Instruction to help you custmize your own PIM system.      

Author

Sheng Xu, Xiaoming Chen, Yinhe Han (HomePage) , Xuehai Qian(University of Southern California)

This program is currently maintaind by Liang Yan ([email protected]) .

Control Computing Laboratory, State Key Laboratory of Computer Architecture, ICT, CAS.            

Some recent PIM papers:

And older ones:

pimsim's People

Contributors

vineodd avatar zouxingqi avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

pimsim's Issues

A question about code

Hello, I have a question about code in abstractmem.cc .
if(senderState->isRegistration()){ pendingPIMqueue.push_back(senderState); pkt->popLabel(); delete pkt; }
When abstractmem receives a request package, it will push it into pendingPIMqueue. However, I didn't find the place where the PIM device handles the requests in this queue. Can you give me some advice? Thank you very much.

No build directory in /PIMSim/GEM5Simulation/gem5, unable to build

If you try to build gem5 to run the simulator in full-system mode, in the README file they say:

This is the gem5 simulator which support PIM features.

Recommand g++/gcc version is 4.8.1

To start:

sh hellopim.sh

Then in the hellopim.sh file, the first two lines are:

echo "\033[33m(PIMSim): Building gem5... \033[0m"
scons -j16 build/X86/gem5.opt

But there is not build directory in the project. I have tried to copy the build directory there is in the original gem5, but as you could expect it is not working because it is not adapted to this simulator. It is giving me the following error:

invalid debug flag 'PIM'

Is this correct? Thanks in advance!

fatal error while trying to run pim_test.cpp

command line: build/X86/gem5.opt configs/example/se.py --cmd=./tests/test-progs/pim-hello/hellopim --num-cpus=1 --mem-type=HMC_2500_1x32 --enable-pim --num-pim-processors=16 --pim-type=kernel --kernel-type=adder --num-pim-kernels=16

xxx
4294967295
Enable PIM simulation in the system.
Creating PIM kernels...
Global frequency set at 1000000000000 ticks per second
42949672964294967297429496729842949672994294967300429496730142949673024294967303429496730442949673054294967306429496730742949673084294967309429496731042949673110: system.remote_gdb: listening for remote gdb on port 7000
**** REAL SIMULATION ****
info: Entering event queue @ 0. Starting simulation...
warn: ignoring syscall access(...)
warn: ignoring syscall access(...)
warn: ignoring syscall access(...)
warn: ignoring syscall mprotect(...)
warn: ignoring syscall access(...)
warn: ignoring syscall mprotect(...)
warn: ignoring syscall access(...)
warn: ignoring syscall mprotect(...)
warn: ignoring syscall access(...)
info: Increasing stack size by one page.
warn: ignoring syscall mprotect(...)
warn: ignoring syscall mprotect(...)
warn: ignoring syscall mprotect(...)
warn: ignoring syscall mprotect(...)
warn: ignoring syscall mprotect(...)
warn: ignoring syscall mprotect(...)
warn: ignoring syscall mprotect(...)
(pim_test.cpp) : Use PIM to calculate the sum from 1 to 100
(pim_test.cpp) : PIM [0x140737488350512] [0x140737488350520] -> [0x140737488350512]
fatal: Base CPU cannot process PIM.
Memory Usage: 4380004 KBytes

Getting this to run?

So I have built PIMSIM via msbuild on VS Code. I passed in the CPU0.trace as the trace file, PIMConfigs.cs as the config file, a random output file text name, the number of cores, and executions. Nothing seems to be apperaring. I do not know where the output file is or even if it is being written to one. Does anyone have a clue on this?

Found bug in gem5/src/mem/abstract_mem.cc

I have not been able to run the simulator, but I was having a look at the code and I saw the following in line 458 of the file gem5/src/mem/abstract_mem.cc

for(auto i=pendingPIMqueue.begin();i!=pendingPIMqueue.end();i++){
    if((*i)->addr[0]==senderState->addr[0]&&(*i)->addr[0]==senderState->addr[0]&&(*i)->addr[0]==senderState->addr[0]){
        found=true;
        index=i;
        threadid=(*i)->threadid;
        break;
    
    }
 }

The condition of the if repeats three times, I think it should be checking that the positions 0, 1 and 2 of the addr vector are the same as the ones of the addr vector in the SenderState.

IndexError: list index out of range

./build/X86/gem5.opt --debug-flags=PIM configs/example/se.py --cpu-type=TimingSimpleCPU --cpu-clock=2GHz --caches --l2cache --l1d_size=32kB --l1i_size=32kB --l2_size=2MB --l1d_assoc=4 --l1i_assoc=4 --l2_assoc=8 --enable-pim --pim-type=hybrid --kernel-type=adder --num-pim-kernels=4 --num-pim-processors=8 --number-mem-crossbar=2 --num-links-controller=2 --hmc-dev-vault-size=256MB --hmc-dev-num-vaults=32 --burst-length=256 --arch=same --mem-size=8GB --coherence-granularity=64B --mem-type=HMC_2500_1x32 --xbar-width=128 --enable-global-monitor --xbar-frequency=2.5GHz --xbar-frontend-latency=2 --xbar-forward-latency=2 --xbar-response-latency=2 --link-buffer-size-req=32 --link-buffer-size-rsp=32 --num-links-controllers=4 --num-lanes-per-link=16 --serial-link-speed=40 --link-buffer-size-req=64 --link-buffer-size-rsp=64 -c ./tests/test-progs/pim-hello/hellopim

Whenever I write this code, I get the following error message:
Traceback (most recent call last):
File "", line 1, in
File "/home/sayandip/PIMSim/GEM5Simulation/gem5/src/python/m5/main.py", line 435, in main
exec filecode in scope
File "configs/example/se.py", line 275, in
MemConfig.config_mem(options, system)
File "/home/sayandip/PIMSim/GEM5Simulation/gem5/configs/common/MemConfig.py", line 176, in config_mem
HMC.config_hmc_dev(options, system, HMChost.hmc_host)
File "/home/sayandip/PIMSim/GEM5Simulation/gem5/configs/common/HMC.py", line 425, in config_hmc_dev
system.hmc_host.seriallink[i].master = system.hmc_dev.xbar[i].slave
IndexError: list index out of range

Please state the reason and specify a solution

How to use PIMProcess

I see PIMProcess is declared in pseudo_inst.cc, so how can I use this function in my program. Should I run my program in fs mode?

SST Simulator Support

Curious to know if PIMSim will be supported as a Component in SST Simulator any time in future?

Fast Simulation not responsive

I have been trying to use fast simulation mode to simulate the trace file provided in /example/1cpu_1pu_cpu_pc/CPU0.trace. I think I am giving all the input attributes correctly. It doesn't respond anything so I'm not sure if it's working or not.
It would be nice if you could add a sample execution command for using Fast simulation.
fastsim_pimsim

How to run benchmarks?

Hello everyone,

I am new to PIMSim and I really have no idea how to run benchmarks in it, either in full-simulation or fast-simulation mode.
could you please guide me step by step?

thank you

Run hellopim.sh

Dear Sir,

Many thanks for a great job. I'm interested to run a hello case located in PIMSim/GEM5Simulation/gem5
However, when I try to execute hellopim.sh in PIMSim/GEM5Simulation/gem5, I receive the following error, I really appreciate it if you please shed a light on this and help me to solve it

Configuration:Ubuntu 20.04 Python 2.7.18 gcc-4.8.1 g++-4.8.1

command line: ./build/X86/gem5.opt --debug-flags=PIM configs/example/se.py --cpu-type=TimingSimpleCPU --cpu-clock=2GHz --caches --l2cache --l1d_size=32kB --l1i_size=32kB --l2_size=2MB --l1d_assoc=4 --l1i_assoc=4 --l2_assoc=8 --enable-pim --pim-type=kernel --kernel-type=adder --num-pim-kernels=1 --mem-size=512MB --coherence-granularity=64B -c ./tests/test-progs/pim-hello/hellopim

/home/birdman/Downloads/PIMSim-master/GEM5Simulation/gem5/configs/common/CacheConfig.py:50: SyntaxWarning: import * only allowed at module level
  def config_cache(options, system):
Enable PIM simulation in the system.
Creating PIM kernels...
Global frequency set at 1000000000000 ticks per second
warn: DRAM device capacity (4096 Mbytes) does not match the address range assigned (512 Mbytes)
536870912      0: system.pim_kernerls: Kernel: 0 [0x20000000 - 0x0]
0: system.remote_gdb: listening for remote gdb on port 7000
      0: system.cpu: Add 3 caches to the cache list
**** REAL SIMULATION ****
info: Entering event queue @ 0.  Starting simulation...
warn: ignoring syscall access(...)
info: Increasing stack size by one page.
warn: ignoring syscall mprotect(...)
fatal: syscall pread64 (#17) unimplemented.
Memory Usage: 634016 KBytes

Thanks

Merge with latest GEM5

Hi,
I would like to know if anyone trying to update the GEM5 to latest.
Owners of the repository, can you tell us the original gem5 commit-id the current PIMSim is using?

With Regards,
Narasinga.

fatal: PIM ports on system.pim_kernels0 are not connected.

Whenever i want to run any command with --mem-type = HMC_2500_1x32 or HBM_1000_4H_1x64, PIMSIm throws back this error at me saying fatal: PIM ports on system.pim_kernels0 are not connected.

I'm running the following command.

./build/X86/gem5.opt --debug-flags=PIM configs/example/se.py --cpu-type=TimingSimpleCPU --caches --l2cache --l1d_size=32kB --l1i_size=32kB --l2_size=2MB --l1d_assoc=4 --l1i_assoc=4 --l2_assoc=8 --enable-pim --pim-type=hybrid --kernel-type=adder --num-pim-kernels=4 --num-pim-processors=8 --number-mem-crossbar=2 --num-links-controller=2 --arch=same --mem-size=8GB --mem-type= HMC_2500_1x32 -c ./tests/test-progs/pim-hello/hellopim

Gem5 couldn't be built

Hi, thanks for your efforts. I want to evaluate your project, but I found that your project of Full system simulation loss the compiling file "SConstruct" I try to add an SContruct file which is downloaded from official website. but compiling is failed.

Can you tell me your gem5 version?

There are some errors when I begin to compile "PIMSim/Full-System Simulation/gem5" using the latest gem5:
image
Then I notice there is lots of different code in "PIMSim/Full-System Simulation/gem5" compared to the latest gem5. So i guess that the errors may be caused by different versions.

Fast Simulation is not working

I think there is a problem with fast simulation. All of input attributes is correct and I'm trying to simulate the examples but I received this err message:
Please make sure that all the args are input correctly.
I'll be so happy if you show an example for me.

No performance improvement in PIM as compared to cpu

./build/X86/gem5.opt --debug-flags=PIM configs/example/se.py --cpu-type=TimingSimpleCPU --cpu-clock=2GHz --caches --l2cache --l1d_size=32kB --l1i_size=32kB --l2_size=2MB --l1d_assoc=4 --l1i_assoc=4 --l2_assoc=8 --enable-pim --pim-type=cpu --kernel-type=adder --num-pim-kernels=16 --mem-size=512MB --coherence-granularity=64B -c ./tests/test-progs/example_pim/test_cpu
gives no. of ticks=4356369500

./build/X86/gem5.opt --debug-flags=PIM configs/example/se.py --cpu-type=TimingSimpleCPU --cpu-clock=2GHz --caches --l2cache --l1d_size=32kB --l1i_size=32kB --l2_size=2MB --l1d_assoc=4 --l1i_assoc=4 --l2_assoc=8 --enable-pim --pim-type=kernel --kernel-type=adder --num-pim-kernels=16 --mem-size=512MB --coherence-granularity=64B -c ./tests/test-progs/example_pim/test_pim
gives no. of ticks=4890508500
Why is there more no. of ticks in case of PIM as compared to CPU?

Segmentation Fault Bug with Out of Order CPUs

With the current code that simulates hellopim with PIMAdder and Out of Order CPUs, Segmentation Fault happens. There is code for supporting OoO CPUs, but that doesn't work. Did you abandon the OoO Segmentation Fault bug? If so, I have to fix the bug my own for research.

GEM5 to simulate testbenches - sample execution

I have been trying to run the provided hello-pim program of adding 1 to 100 using PIM function. It shows a segmentation fault every time I run it using the provided commands in 'hellopim.sh'.

msbuild:command not found

Hey,I am completely new to these stuffs...Please help
I tried to build pimsim, but encountered the error msbuild: command not found.

PIMSim/Fast Simulation/PIMSim is the folder i went into...

Any suggestion

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.