# 测试用例: Gaussian / 高斯消元
## 简介
本例来源于[GPU-Rodinia](https://github.com/yuhc/gpu-rodinia)项目的`Gaussian`测试.
现有n元一次方程组:
$$
Ax=B
$$
$A$为$n\times n$矩阵, $B$为n维向量. 对方程组进行消元, 获得新方程组:
$$
A'x=B'
$$
此时$A'$为上三角阵.
## 文件及输入格式
| 文件 | 说明 |
| ---------------- | ------------------------------------------------------------ |
| `gaussian.s` | 汇编源代码 |
| `gaussian.txt` | 汇编器输出的反汇编文本文档 |
| `gaussian.vmem` | 汇编器输出的指令段文件, 但并不能直接用于仿真 |
| `gaussian_.vmem` | 用于仿真的指令段文件, 相比`gaussian.vmem`, 去除了形如`@xxxxxxxx`的前导, 且每一行只有一个32bit数据, 对应于一条指令. |
| `gaussian8.data` | 用于仿真的数据段文件, 具体格式见下 |
### gaussian8.data数据文件格式
* 每行为一个32bit数据, 以十六进制文本形式保存.
* 矩阵尺寸$n=2^k, k\ge3$.
* 第一行为$k$, 后续31行均为0.
* 33行开始为矩阵$A$的所有元素, 以行主序方式存储, 数据均为float32格式, 共$n^2$个元素.
* 矩阵$A$之后为零矩阵$M$, 同样为$n^2$个元素.
* 矩阵$M$之后为向量$B$, 数据均为float32格式, 共$n$个元素.
## 运行
在`src/main/scala/pipeline/Top.scala`中找到类`TopForTest_SingleSM`, 修改其中的两个文件路径,分别指向指令vmem文件和数据文件.
```scala
class TopForTest_SingleSM extends Module {
val io = IO(new Bundle{})
val param=(new MyConfig).toInstance
val CPU = Module(new CPUtest_SingleSM)
val inst_filepath="./txt/gaussian/gaussian_.vmem"
val data_filepath="./txt/gaussian/gaussian8.data"
val NUMBER_CU=1
val sm=VecInit(Seq.fill(NUMBER_CU)(Module(new SM_wrapper).io))
val mem = Module(new L2ModelWithName(inst_filepath,data_filepath,5)(param))
val sm2l2model = Module(new SM2L2ModelArbiter()(param))
// ... ... ... ...
}
```
而后在`src/test/scala/pipeline/hello_test.scala`中运行相应测试, `c.clock.step()`中需要填入一个足以运行完成的周期数, 如:
```scala
class hello_test extends FreeSpec with ChiselScalatestTester{
"first_test" in {
val SINGLE_INST=true
test(new TopForTest_SingleSM()).withAnnotations(Seq(WriteVcdAnnotation)) { c =>
c.clock.setTimeout(0)
c.clock.step(10000)
}
}
}
```
`.withAnnotations(Seq(WriteVcdAnnotation))`会将运行结果输出为波形文件, 此外, 也可以在scala源码中插入`printf()`以进行简单的运行状态监控.
## 注意事项
* 由于时间有限, 虽然汇编源码没有指定矩阵规模以及硬件规模, 但本测试用例目前仅验证了在每warp 8线程的单元上对8*8矩阵进行消元的情况;
* 其他矩阵规模的测试数据可以使用`gpu-rodinia/data/gaussian`下的python脚本生成, 但需自行转换为前文的格式;
* 由于浮点精度问题, 消元后的上三角阵0元素并非真正的0, 而是一个很小的非0数值.
没有合适的资源?快使用搜索试试~ 我知道了~
支持RISCV-V扩展的GPGPU处理器,使用Chisel HDL开发
共141个文件
scala:91个
vmem:8个
data:5个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 5 浏览量
2024-02-23
13:51:44
上传
评论
收藏 3.3MB ZIP 举报
温馨提示
支持RISCV-V扩展的GPGPU处理器,使用Chisel HDL开发.对于 ISA 模拟器和 riscv-gnu-toolchain.基于 LLVM 的 OpenCL C 编译器由 Terapines(兆松科技)开发
资源推荐
资源详情
资源评论
收起资源包目录
支持RISCV-V扩展的GPGPU处理器,使用Chisel HDL开发 (141个子文件)
naive_driver.c 920B
single_read.data 5KB
gaussian8.data 2KB
saxpy.data 2KB
saxpy.data 2KB
warptest.data 318B
.gitignore 126B
.gitmodules 655B
naive_driver.h 5KB
LICENSE 9KB
Makefile 747B
Ventus-GPGPU-doc.md 16KB
readme.md 3KB
readme.md 2KB
readme.md 2KB
shell.nix 2KB
saxpy.o 1KB
saxpy2.o 1KB
2.patch 11KB
3013.patch 841B
承影GPGPU架构文档手册v1.95.pdf 1.39MB
ventus GPGPU architecture whitepaper v1.95.pdf 983KB
GPGPUL1DCache_pub20220822.pdf 912KB
GPGPUcoreReq_pub20220822.pdf 206KB
ventus_arch2.png 49KB
ventus_arch.png 37KB
GPGPU_output_diff.py 875B
gaussian.s 4KB
saxpy.s 930B
saxpy2.s 797B
build.sc 5KB
Instructions.scala 62KB
execution.scala 36KB
DecodeUnit.scala 34KB
resource_table.scala 24KB
inflight_wg_buffer.scala 22KB
operandCollector.scala 22KB
SIMT_STACK.scala 20KB
DCache.scala 20KB
cta_scheduler.scala 18KB
GPGPU_top.scala 17KB
Parameters.scala 16KB
LSU.scala 15KB
allocator_neo.scala 15KB
gpu_interface.scala 15KB
FloatDivSqrt.scala 13KB
pipe.scala 12KB
CSR.scala 12KB
cu_handler.scala 10KB
top_resource_table.scala 10KB
fpu_utils.scala 10KB
resource_table_group.scala 10KB
multi_cta_scheduler_interface.scala 9KB
DCacheMSHR.scala 9KB
ICache.scala 9KB
BankedStore.scala 9KB
Scheduler.scala 8KB
ShareMem.scala 8KB
ICacheMSHR.scala 8KB
WDB.scala 8KB
config.scala 8KB
BankConflictArbiter.scala 8KB
AXI4Adapter.scala 8KB
BankConflictArbiter.scala 7KB
warp_schedule.scala 7KB
Directory_test.scala 7KB
Multiplier.scala 7KB
multi_cta_scheduler.scala 7KB
SourceD.scala 7KB
issue.scala 7KB
SRAMTemplate.scala 6KB
SRAMTemplate.scala 6KB
AXI4Lite2CTA.scala 6KB
dis_controller.scala 6KB
ListBuffer.scala 5KB
IntDivMod.scala 5KB
MSHR.scala 5KB
scoreboard.scala 5KB
ExternalMemModel.scala 5KB
L1CacheSubModules.scala 5KB
parameters.scala 5KB
SinkA.scala 4KB
mul_utils.scala 4KB
ALU.scala 4KB
opt_dyn_cta_engine.scala 4KB
wg_slot_id_convert_opt.scala 4KB
regfile.scala 3KB
tests.scala 3KB
writeback.scala 3KB
AXI4Lite.scala 3KB
opt_mshr_based_engine.scala 3KB
DCacheDataAccess.scala 3KB
CTA2warp.scala 3KB
MSHR.scala 3KB
SinkD.scala 3KB
wf_done_interface.scala 3KB
wg_slot_id_convert.scala 3KB
L1CacheParameters.scala 3KB
cam_allocator_neo.scala 3KB
throttling_engine.scala 3KB
共 141 条
- 1
- 2
资源评论
Java程序员-张凯
- 粉丝: 1w+
- 资源: 6651
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功