plctlab / plct-open-reports Goto Github PK
View Code? Open in Web Editor NEWPLCT实验室的公开演讲,或者决定公开的组内报告
License: Creative Commons Attribution Share Alike 4.0 International
PLCT实验室的公开演讲,或者决定公开的组内报告
License: Creative Commons Attribution Share Alike 4.0 International
要求写出:
1.测试系统的执行流程
2.测试系统的覆盖率
想询问下,Gem5是如何用顺序执行的软件来实现硬件的并行的呢?
因为课题需求,现在我在gem5上配置 带 RVV VectorEngine的多核硬件,每一个CPU内部都有一个RVV VectorEngine,并且是接到L1D Cache上(即没有VectorCache),配置脚本 是这个
然而我在运行一个RVV向量加法程序a + b = c
时,发生计算错误:c
没有被赋值
怀疑有可能是配置的方式有问题,可以的话想向各位请教正确的配置方法!!
建议整理一下目录结构,简单分下类,以后PPT越来越多,现在这样可能会不太好找
仓库 gem5向量扩展
环境 WSL2 Ubuntu20.04
Python Python2.7.18
分支 develop
Commit 692bcd05441baeb49482015f767b61d92eef5dc3
在运行benchmark时(blackscholes_vector.exe
),遇到了以下警告:算子的运算单元未找到
warn: CheckedInt already exists in allParams. This may be caused by the Python 2.7 compatibility layer.
warn: Enum already exists in allParams. This may be caused by the Python 2.7 compatibility layer.
warn: ScopedEnum already exists in allParams. This may be caused by the Python 2.7 compatibility layer.
gem5 Simulator System. http://gem5.org
gem5 is copyrighted software; use the --copyright option for details.
gem5 version [DEVELOP-FOR-V20.1]
gem5 compiled Jan 6 2022 17:53:18
gem5 started Jan 7 2022 10:01:00
gem5 executing on DESKTOP-9F2JKA5, pid 1176
command line: /mnt/d/AC/gem5/build/RISCV/gem5.opt /mnt/d/AC/gem5/configs/example/riscv_vector_engine.py '--cmd=/mnt/d/AC/gem5/riscv-vectorized-benchmark-suite/_jacobi-2d/bin/jacobi-2d_vector.exe 1 /mnt/d/AC/gem5/riscv-vectorized-benchmark-suite/_jacobi-2d/input/in_256.input output_vector.txt'
Global frequency set at 1000000000000 ticks per second
warn: DRAM device capacity (32768 Mbytes) does not match the address range assigned (2048 Mbytes)
warn: Unknown operating system; assuming Linux.
warn: No functional unit for OpClass VectorArith1Src
warn: No functional unit for OpClass VectorArith2Src
warn: No functional unit for OpClass VectorArith3Src
warn: No functional unit for OpClass VectorMaskLogical
warn: No functional unit for OpClass VectorReduction
warn: No functional unit for OpClass VectorConvertIntToFP
warn: No functional unit for OpClass VectorConvertFPToInt
warn: No functional unit for OpClass VectorWConvertFPToInt
warn: No functional unit for OpClass VectorWConvertIntToFP
warn: No functional unit for OpClass VectorWConvertFPToFP
warn: No functional unit for OpClass VectorNConvertFPToInt
warn: No functional unit for OpClass VectorNConvertIntToFP
warn: No functional unit for OpClass VectorNConvertFPToFP
warn: No functional unit for OpClass VectorFPCompare
warn: No functional unit for OpClass VectorIntCompare
warn: No functional unit for OpClass VectorSlideUp
warn: No functional unit for OpClass VectorSlideDown
warn: No functional unit for OpClass VectorToScalar
warn: No functional unit for OpClass VectorMemoryLoad
warn: No functional unit for OpClass VectorMemoryStore
warn: No functional unit for OpClass VectorConfig
0: system.remote_gdb: listening for remote gdb on port 7000
分析运行结束后的stats.txt
时,却发现这些算子是有被调用的
system.cpu.op_class_0::VectorArith1Src 1600 0.01% 98.47% # Class of committed instruction
system.cpu.op_class_0::VectorArith2Src 227200 0.96% 99.43% # Class of committed instruction
system.cpu.op_class_0::VectorArith3Src 62400 0.26% 99.69% # Class of committed instruction
system.cpu.op_class_0::VectorMaskLogical 0 0.00% 99.69% # Class of committed instruction
system.cpu.op_class_0::VectorReduction 0 0.00% 99.69% # Class of committed instruction
system.cpu.op_class_0::VectorConvertIntToFP 6400 0.03% 99.72% # Class of committed instruction
system.cpu.op_class_0::VectorConvertFPToInt 9600 0.04% 99.76% # Class of committed instruction
system.cpu.op_class_0::VectorWConvertFPToInt 0 0.00% 99.76% # Class of committed instruction
system.cpu.op_class_0::VectorWConvertIntToFP 0 0.00% 99.76% # Class of committed instruction
system.cpu.op_class_0::VectorWConvertFPToFP 0 0.00% 99.76% # Class of committed instruction
system.cpu.op_class_0::VectorNConvertFPToInt 0 0.00% 99.76% # Class of committed instruction
system.cpu.op_class_0::VectorNConvertIntToFP 0 0.00% 99.76% # Class of committed instruction
system.cpu.op_class_0::VectorNConvertFPToFP 0 0.00% 99.76% # Class of committed instruction
system.cpu.op_class_0::VectorFPCompare 11200 0.05% 99.81% # Class of committed instruction
system.cpu.op_class_0::VectorIntCompare 1600 0.01% 99.82% # Class of committed instruction
system.cpu.op_class_0::VectorSlideUp 0 0.00% 99.82% # Class of committed instruction
system.cpu.op_class_0::VectorSlideDown 0 0.00% 99.82% # Class of committed instruction
system.cpu.op_class_0::VectorToScalar 0 0.00% 99.82% # Class of committed instruction
system.cpu.op_class_0::VectorMemoryLoad 9600 0.04% 99.86% # Class of committed instruction
system.cpu.op_class_0::VectorMemoryStore 1600 0.01% 99.86% # Class of committed instruction
system.cpu.op_class_0::VectorConfig 32000 0.14% 100.00% # Class of committed instruction
请问这些数据是否能表明这些算子是真实被调用的(即是否可靠的?)?并且警告该如何解决(比如:是否需要切换commit?)?
region split的过程中使用了edge bundles的信息,我想请教一下具体什么样的Basic Block才会bundle在一起,将这样的BB bundle在一起对寄存器分配来说,其含义是什么?
另外,请问后续会有greedy register allocation 的实现细节的分享吗?
20220105-史玉龙-CMO指令介绍.pdf
关于这个分享,有几个疑问想请教下:
ppt中说 flush operation——执行invalidate operation之后的clean operation,invalidate和clean的顺序是不是反了?
这里我看了spec,原文是
A flush operation atomically performs a clean operation followed by an invalidate operation
followed by,应该是表明先clean 再 invalidate。先把内容刷到memory,在inval cache。
另外,这里的flush是为了【原子性的执行】 先clean 再 invalidate,在arm中的理解 flush只是执行一个写入传
输到另一个缓存或者内存,所以在arm中的flush应该是等同riscv cmo中的clean吧,感觉有点怪
您好~:
我目前在做关于LLVM移植的工作,想问下您,怎么屏蔽掉RISCV中的C,D指令子集?需要关注哪些文件?
安装好riscv-gnutoolchain之后在编译目录下执行make check-gcc RUNTESTFLAGS="--
target_board=riscv-sim testfile.exp execute.exp",compile测试pass,execute测试fail,结果如下:
分析:可能是测试平台的原因,x86平台上执行riscv测试,解决方法如下:
2.按照PLCT实验室测试方法(https://github.com/liujiawei929/GNU-Toolchain),../configure --prefix=$RISCV
make -j4 , make report-gcc-newlib 2>&1|tee rv64_newlib-reportgccnewlib.log出现如下问题:
请问我该用哪种方法可以顺利执行execute测试,上面两种问题该怎么解决,谢谢。
按照操作流程执行后。当我输入clang --target=riscv32-unknown-elf -menable-experimental-extensions -march=rv32gxplct0p1 -S test.c
遇到如下报错:clang-15: error: invalid arch name 'rv32gxplct0p1', unsupported version number 0.1 for extension 'xplct'。
如若输入:echo "plct a0,a1,a2"|llvm-mc --triple=riscv32 -mattr=+experimental-xplct -show-encoding
报错如下:'+experimental-xplct' is not a recognized feature for this target (ignoring feature)
恳请指正
1.在玄铁工具链中,仿照xuantie-gnu-toolchain/riscv-binutils/gas/testsuite/gas/riscv/THead/fp16-script里面的脚本写出inst_rd_rs1_rs2_imm2类型的指令,如addsl,在testlist中也添加了相关指令的声明,相关脚本和具体的gas.log信息见附件所示,脚本文件传不上去改成了文本文档。
inst_rd_rs1_imm5_imm2_case.txt
inst_rd_rs1_rs2_imm2_case.txt
gas.log
2.在上述目录下运行./gen_case.sh c906 ,生成测试案例
3.在build/build-binutils-linux文件下运行make check,addsl测试案例错误部分错误信息如下。
regexp_diff match failure
regexp "^[ ]+ 6bc:[ ]+05ff9f8b [ ]+addsl[ ]+x31,x31,x31,2$"
line " 6bc: 05ff9f8b addsl x31,x31,x31,2"
FAIL: gas/riscv/THead/case-fp16/inst_rd_rs1_rs2_imm2/good_case/addsl
在匹配.d文件时后面出现了"$"导致匹配出错,不知道什么原因。
罗云千_RISC-V向量指令集初探_20211211_Chisel小队 这个没有 能在上传一次吗?
如题。
AFAIK git is good at managing text based files and mainly for version control. And it seems we are using this repo as a file storage service of big binary files. When someone wants to add something to this repo, it's a must for her/him to clone or at least pull all irrelevant big chunks before addition can be commited, which makes no sense to me.
So is that better we move the contents of this repo to a proper file storage service like S3?
https://www.bilibili.com/video/BV1wC4y1t7Xa
就是这一节的ppt。找了几遍没有找到,可否把链接直接发出来,感谢!
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.