• Gem5全系统模式下运行SPLASH-2 Benchmarks使用alpha ISA


    Steps to run the SPLASH-2 Benchmarks on M5 in full system mode using the alpha ISA.

    This Guide is aimed at the M5 beginner.

    1.下载gem5稳定版

    Get M5

    hg clone http://repo.m5sim.org/m5-stable   

     2.编译gem5 ALPHA

    Build M5

    scons build/ALPHA_FS/m5.opt   

    3.下载全系统文件

    Get Full System Files  

    wget http://www.m5sim.org/dist/current/m5_system_2.0b3.tar.bz2

    4.下载SPLASH-2特定的全系统文件

    Most the default full system files don't work well with SPLASH-2.  Download the ones that work for Parsec for M5 and use them instead.  Get tsb_osfpal from the obsolete full system files if you want to run more than 8 processors.


    wget http://www.cs.utexas.edu/~parsec_m5/vmlinux_2.6.27-gcc_4.3.4

    wget http://www.cs.utexas.edu/~parsec_m5/linux-parsec-2-1-m5.img.bz2

    wget http://www.m5sim.org/dist/current/tsb_osfpal

    5.修改Python配置文件

    Keep the directory structure of the system files from m5sim.org, but move the parsec disk image in to disks and modify ./configs/common/Benchmarks.py line 53  ( may not be line 53) to return env.get('LINUX_IMAGE', disk('linux-parsec-2-1-m5.img')) instead of linux-latest.img.  Do the same thing to line 67 (may be line 77 for some version) of ./configs/common/FSConfig.py.  Move the vmlinux... file into binaries but change its name to just vmlinux.  


    To allow support for more than 4 processors move tsb_osfpal into binaries and modify ./configs/common/FSConfig.py and change the line self.pal = binary('ts_osfpal') from ts_osfpal to tsb_osfpal.  

    (将下载的tsb_osfpal放入binaries下)

    The file console is the only original file that you will use from the default m5 system files.  It may be necessary to chmod +x the other files in binaries.  

    (将console放入binaries下,并增加执行权限)

    Now you need to tell M5 where the disk images are set up.  You can do that either by exporting an environment variable M5_PATH or editing ./configs/common/SysPaths.py line 53.

    6.启动全系统

    At this point either run the regression tests to ensure you have everything set up ok or run ./build/ALPHA_FS/m5.opt configs/example/fs.py and log in to the booted linux instance with m5term.

    7.下载patch

    Get SPLASH-2

    The original website has been down since late 2009, so try downloading from the wayback machine.  When you untar the file it may say "unexpected end of file", but that is OK.

    wget http://web.archive.org/web/20080528165352/http://www-flash.stanford.edu/apps/SPLASH/splash2.tar.gz

    tar -xzvf splash2.tar.gz

    7.下载补丁文件

    Patch SPLASH-2  

    Download patches from the Modified SPLASH-2 Home Page and use them.

    cd splash2


    wget http://www.capsl.udel.edu/splash/splash2-modified.patch.gz

    gzip -d splash2-modified.patch.gz

    patch -p1 < splash2-modified.patch

    8.测试benchmark

    Test SPLASH-2  

    In codes/Makefile.export change the BASEDIR to where you downloaded it, and on line 9 change the macros to c.m4.null.POSIX to support parallelism.

    cd kernels/fft

    make

    ./FFT -t


    This will make the file natively on your machine and should result in TEST PASSED.

    9.下载alpha交叉编译工具

    Get the Alpha Cross-Compiler  

    The previous step just compiled the FFT benchmark for x86, to run in M5 we need to compile it for the alpha ISA.

    wget http://www.m5sim.org/dist/current/alphaev67-unknown-linux-gnu.tar.bz2

    tar -xjvf alphaev67-unknown-linux-gnu.tar.bz2


    (Comments from Samuel Tan (samutan at hotmail dot com): Above link is for 64bit linux, make sure your platform and choose the approriate cross-compiler version in section Pre-compiled cross-compilers at the bottom of page http://www.gem5.org/Download.)

    10.修改splash2中的Makefile.config文件

    Change Makefile.export to use the crosscompiler by modifying CC, CFLAGS, and LDFLAGS

    CC := /path/to/alphaev67-unknown-linux-gnu/bin/alphaev67-unknown-linux-gnu-gcc

    CFLAGS := $(CFLAGS) -I/path/to/alphaev67-unknown-linux-gnu/alphaev67-unknown-linux-gnu/sys-root/usr/include

    LDFLAGS := $(LDFLAGS) -L/path/to/alphaev67-unknown-linux-gnu/alphaev67-unknown-linux-gnu/lib/


    You also need to modify the Makefile to compile statically, since the disk image doesn't have the correct libraries to dynamically link to.

    CFLAGS := $(CFLAGS) -static -static-libgcc


    If you don't do this you may see this error:

    ./FFT: /lib/libc.so.6.1: version `GLIBC_2.4' not found (required by ./FFT)

    我修改的Makefile.config配置文件如下:

    ALPHAGCC := $(HOME)/桌面/gem5-stable/fs-image/alphaev67-unknown-linux-gnu
    CC := $(ALPHAGCC)/bin/alphaev67-unknown-linux-gnu-gcc
    CFLAGS := $(CFLAGS)-I$(ALPHAGCC)/alphaev67-unknown-linux-gnu/sys-root/usr/include/
    LDFLAGS := $(LDFLAGS)-L$(ALPHAGCC)/alphaev67-unknown-linux-gnu/lib/
    CFLAGS := $(CFLAGS) -static -static-libgcc

    BASEDIR := $(HOME)/桌面/gem5-stable/fs-image/splash2/codes
    #BASEDIR := $(HOME)/splash2/codes
    MACROS := $(BASEDIR)/null_macros/c.m4.null.POSIX
    #MACROS := $(BASEDIR)/null_macros/c.m4.null
    M4 := m4 -s -Ulen -Uindex

    x = *

    $(TARGET): $(OBJS)
    $(CC) $(OBJS) $(CFLAGS) -o $(TARGET) $(LDFLAGS) -lpthread -lm(在链接是出现了找不到定义的错误,加入这两个链接选项)

    clean:
    rm -rf *.c *.h *.o $(TARGET)

    .SUFFIXES:
    .SUFFIXES: .o .c .C .h .H

    .H.h:
    $(M4) $(MACROS) $*.H > $*.h

    .C.c:
    $(M4) $(MACROS) $*.C > $*.c

    .c.o:
    $(CC) -c $(CFLAGS) $*.c

    .C.o:
    $(M4) $(MACROS) $*.C > $*.c
    $(CC) -c $(CFLAGS) $*.c

    Now when you type make you should get a Alpha executable.


    Run FFT in M5

    Note: This is a quick and dirty way to run the FFT benchmark on M5.  Later I will present some scripts that do all this automatically.

    11.将编译好的FFT复制进img镜像文件中

    First copy FFT onto the disk image M5 will boot.

    mount -o loop,offset=32256 linux-parsec-2-1-m5.img /mnt/m5_disk

    mkdir -p /mnt/m5_disk/benchmarks/

    cp FFT /mnt/m5_disk/benchmarks/

    umount /mnt/m5_disk/

    12.修改Python配置文件

    Now add a fft benchmark to configs/common/Benchmarks.py.  Add the following data to the Benchmarks data structure:

    'fft':   [SysConfig('fft.rcS', '512MB')],

    13.添加fft.rcS脚本文件

    Next make the rcS script at configs/boot/fft.rcS.  This is the script m5 will run when it boots linux.

    #!/bin/sh

    cd benchmarks

    echo "Running FFT now..."

    ./FFT -t -p1

    #Gracefully exit M5

    /sbin/m5 exit

    14.启动最终的仿真

    Now run M5:

    ./build/ALPHA_FS/m5.opt configs/example/fs.py -n 1 -b fft

    使用m5term登录查看

    m5term localhost 3456

    FFT with Blocking Transpose
    1024 Complex Doubles
    1 Processors
    65536 Cache lines
    16 Byte line size
    4096 Bytes per page


    PROCESS STATISTICS
    Computation Transpose Transpose
    Proc Time Time Fraction
    0 977 0 0.00000

    TIMING INFORMATION
    Start time : 1230768002246122
    Initialization finish time : 1230768002247099
    Overall finish time : 1230768002248076
    Total time with initialization : 1954
    Total time without initialization : 977
    Overall transpose time : 0
    Overall transpose fraction : 0.00000

    INVERSE FFT TEST RESULTS
    Checksum difference is -0.000 (1033.228, 1033.228)
    TEST PASSED


     


     

  • 相关阅读:
    Ubuntu18.04下搭建LNMP教程-超详细图文(Nginx+MySQL+PHP含各种解决报错问题)
    win10下Ubuntu18.04安装的简单教程
    Bugku-CTF加密篇之富强民主
    PHP中PHP $_POST和PHP $_REQUEST及PHP $_GET的用法及区别
    Base系列编码浅析【base16 base32 base64 base85 base36 base 58 base91 base 92 base62】
    Bugku-CTF加密篇之贝斯家族(@iH<,{bdR2H;i6*Tm,Wx2izpx2!)
    Bugku-CTF加密篇之这不是md5(666c61677b616537333538376261353662616566357d)
    Bugku-CTF加密篇之告诉你个秘密(ISCCCTF)
    攻防世界—pwn—guess_num
    攻防世界—pwn—level2
  • 原文地址:https://www.cnblogs.com/fengjl/p/5549219.html
Copyright © 2020-2023  润新知