日韩精品一区二区三区高清_久久国产热这里只有精品8_天天做爽夜夜做爽_一本岛在免费一二三区

合肥生活安徽新聞合肥交通合肥房產生活服務合肥教育合肥招聘合肥旅游文化藝術合肥美食合肥地圖合肥社保合肥醫院企業服務合肥法律

CSC3050代做、C++程序語言代寫
CSC3050代做、C++程序語言代寫

時間:2024-11-16  來源:合肥網hfw.cc  作者:hfw.cc 我要糾錯



CSC3050 Project 3: RISC-V Simulator with RVV
1 Background
RISC-V, an open standard instruction set architecture (ISA), has rapidly become a
pivotal force in academic research and industrial development due to its flexibility
and open-source nature. Unlike proprietary ISAs, RISC-V offers the freedom for
developers to customize and extend the architecture, making it an ideal platform
for innovation in research, education, and the design of specialized hardware. One
of its most impactful extensions is the RISC-V Vector Extension (RVV), which
introduces efficient vector processing capabilities—a cornerstone of modern high performance computing. This is especially critical for applications like machine
learning, cryptography, and scientific simulations, where parallel data processing is
essential for improving computational speed and efficiency.
In this project, you are tasked with extending the QTRVSim RISC-V simulator
to support vector operations by implementing some of the RVV instructions.
After reviewing the number of cycles, you will get a feeling of how this is faster
than conducting element-wise operations.
Start early, this project can be time-consuming if you are not familiar with
simulators.
2 QTRVSim
QTRVSim is a RISC-V CPU simulator for education, where you can try its online
version on this link. Just in case you want to try different instructions, you can refer
to this page: RISC-V Instruction Set Specifications. A helpful video about using
QTRVSim can be found on Youtube
After familiarizing yourself with the QtRVSim manual, you can begin planning how
to integrate RVV instructions into the existing implementation. The simulator’s
source code, written in C++ and including both the core simulation functions and
graphical user interfaces (GUIs), can be found in the repository at this link. To test
your modifications, QtRVSim offers two methods for simulating assembly code: GUI
or command-line prompts.
Note: For this project, you are not required to modify any of the GUI components.
Your primary goal is to ensure that the RVV instructions function correctly when
using command-line prompts. Another objective in this project is to save the number
of cycles; the smaller the number you get, the better the score you get.
1
2.1 How to run
We give the example of running QTRVSim on Ubuntu with the terminal. You can
follow these steps:
1. We assume you already have the necessary packages for compiling cpp. If
not, you can easily find tutorial for them on the internet.
2. Install QT6 (QT5 does not work in most cases) with sudo apt install qt6-
base-dev. You might need sudo apt update first, and make sure you are
installing QT6, not QT5.
3. Download QTRVSim from the given repository.
4. Make a new directory for building files (mkdir build; cd build)
5. cmake -DCMAKE BUILD TYPE=Release /path/to/qtrvsim
6. make -j X, where X is the number of threads you want to use
7. If everything goes correctly, you can use ./target/qtrvsim cli –asm XXXXX.S
to run your .S file.
8. Via ./target/qtrvsim cli –help, you can check all helpful arguments.
3 RVV Instructions
In this assignment, you are required to implement the following RVV instructions
(suppose max vector size is **):
1. vsetvl rd, rs1, rs2: sets the length register vl to rs1 and rd, also sets the
register holding the type of vector to rs2 (8/16/**).
2. vadd.vv vd, vs2, vs1: adds two vectors vs2 and vs1, and stores the result
in vd
3. vadd.vx vd, vs2, rs1: adds rs1 to each element of vector vs2, and stores
the result in vd
4. vadd.vi vd, vs2, imm: adds the scalar value imm to each element of vector
vs2, and stores the result in vd
5. vmul.vv vd, vs2, vs1: conducts dot production on two vectors vs2 and vs1,
and stores the result in vd
6. vlw.v vd, (rs1): loads elements stored starting at rs1 into vector vd. The
length to load is dependent on the length stored at vl and the unit length
specified earlier.
7. vsw.v vs3, (rs1): stores vector elements of vs3 into memory starting at rs1.
The length to load is dependent on the length stored at vl and the unit length
specified earlier.
2
Figure 1: Matrix stored as vector
The whole point of this project is that, through the implementation, you will
understand why are vector operations is much faster than manipulate each ele ment individually. For example, writing 100 elements into memory will require 100
individual store instructions if in an element-wise manner. However, using vector
write, you only need to do one vector store instruction.
A detailed explanation of RVV instructions can be found at this manual. Reminder:
Do not forget to update vl when switching to operate on vectors with different
lengths.
4 Matrix Multiplication
After implementing and testing the aforementioned functionalities, you are required
to write a .S file that conduct matrix to matrix multiplication.
Ci,j =
X Ai,kBk,j
k
The actual matrix will be stored as a vector in memory, as shown in Figure 1. In
order to conduct vector multiplication, the size of the matrix n × m will be given.
We require you to generate two random matrices with sizes of 20 × 46 and
46 × 50 where elements can be of your own choice.
5 Tricks
There are several tricks you can apply to reduce cycle counts.
1. Reduction (required): This is similar to calculate the summation of a
vector, but more efficiently. The basic requirement is that you conduct this
summation on each element one-by-one, which leads to excessive cycles.
Another approach is to do binary split, i.e. repeatedly decompose the a vector
of size n into 2 vectors of size n//2, and then conduct vadd. There are also
other trick for conducting reduction, and you can explore any of them.
3
Possible reduction:
(a) scalar loop
(b) vector shift
(c) reduction instruction
(d) ...
2. Chaining (Extra credit): When conducting vector operations, it is not nec essary to wait for the entire instruction to complete. As shown in Figure 2, it
is possible to conduct VADD on the first element, right after obtaining the
first element of VMUL. A much better illustration can be found at Prof.Hsu’s
slides at this link.
Figure 2: chaining
6 Instruction on Implementation
The code involved in QTRVSim is quite complicated. Luckily, you only need to
focus on few script files.
1. src/machine/instruction.cpp: Edit this file to add new instructions. The
boxed fields are:
• instruction name
• instruction enum type (you can edit this by yourself; no need to follow
the example)
• input types (you can go through instruction.cpp to see what char is for
what type)
• machine code (hexadecimal)
• mask for effective bits for instruction (hexadecimal)
• customize flags (you can edit this by yourself; no need to follow the
example)
2. src/machine/core.cpp: Main pipeline of the simulator. You can find fetch,
decode, execute, writeback, memory in it, and edit these codes for your con venience.
4
3. src/machine/execute/alu.cpp: specify what to do for each alu operation.
You can create/edit these codes for your own convenience.
Other files might also interest you, but we will not go through all of them here.
Feel free to modify any codes as long as they work.
Notice: you need to use state.cycle count++; in core.cpp when needed.
Notice2: If you want to use v1,v2... as the vector register, you can modify
parse reg from string() in instruction.cpp.
Notice3: You might want to check dt.num rt, dt.num rd, dt.num rs for specific
register indexing.
Notice4: The largest vector register length is **. Load instruction will have a
memory latency of **. Besides, the cycles for multiplication is 4. (This means that,
to load a vector of length 10, the total cycles will be 1 + 1 + ** + 10 + 1 + 1 = 46)
7 Grading Criteria
The maximum score you can get for this lab is 100 points. We will first exam ine the correctness of your outputs to test cases. Since hard-coding each opera tion is fairly easy in C++, we will check the execution information, such as the
number of cycles, and content in memories/registers. Using of ChatGPT to im prove writing/generate codes/provide ideas is allowed and highly-recommended
as ChatGPT has become one of the best productivity tools.
Conducting ”higher-level” reduction or finishing the task with less number of cycles
will be granted with extra credit.
You are also required to compose a report, where you should show the results
of your test case executions. Besides you also need to show the total number of
cycles and explain where those cycles come from. (few sentences, no need to be
super specific.)
The deadline of this project is 23:59, Tuesday, 2024/11/19. For each day after
the deadline, 10 points will be deducted from your final score up to 30 points, after
which you will get 0 points.
Besides, if anyone is interested in developing with QT, you are more than welcome
to implement GUI support for RVV instruction. If done properly, you will earn extra
credits, and might contribute to future contents of this class.
Feel free to ask questions if you find anything confusing.
5
8 Submission
You should make sure your code compiles and runs. Then, it should be compressed
into a .zip file and submitted to BlackBoard. Any necessary instructions to
compile and run your code should also be documented and included. Finally, you are
also required to include a report containing the results of your test case execution.



請加QQ:99515681  郵箱:99515681@qq.com   WX:codinghelp






 

掃一掃在手機打開當前頁
  • 上一篇:ENGG1110代做、R編程語言代寫
  • 下一篇:代寫CCIT4020、代做python語言編程
  • 無相關信息
    合肥生活資訊

    合肥圖文信息
    2025年10月份更新拼多多改銷助手小象助手多多出評軟件
    2025年10月份更新拼多多改銷助手小象助手多
    有限元分析 CAE仿真分析服務-企業/產品研發/客戶要求/設計優化
    有限元分析 CAE仿真分析服務-企業/產品研發
    急尋熱仿真分析?代做熱仿真服務+熱設計優化
    急尋熱仿真分析?代做熱仿真服務+熱設計優化
    出評 開團工具
    出評 開團工具
    挖掘機濾芯提升發動機性能
    挖掘機濾芯提升發動機性能
    海信羅馬假日洗衣機亮相AWE  復古美學與現代科技完美結合
    海信羅馬假日洗衣機亮相AWE 復古美學與現代
    合肥機場巴士4號線
    合肥機場巴士4號線
    合肥機場巴士3號線
    合肥機場巴士3號線
  • 短信驗證碼 trae 豆包網頁版入口 目錄網 排行網

    關于我們 | 打賞支持 | 廣告服務 | 聯系我們 | 網站地圖 | 免責聲明 | 幫助中心 | 友情鏈接 |

    Copyright © 2025 hfw.cc Inc. All Rights Reserved. 合肥網 版權所有
    ICP備06013414號-3 公安備 42010502001045

    日韩精品一区二区三区高清_久久国产热这里只有精品8_天天做爽夜夜做爽_一本岛在免费一二三区

      <em id="rw4ev"></em>

        <tr id="rw4ev"></tr>

        <nav id="rw4ev"></nav>
        <strike id="rw4ev"><pre id="rw4ev"></pre></strike>
        一本色道久久综合亚洲二区三区| 亚洲一区二区欧美| 在线看日韩av| 一区二区欧美日韩| 校园春色综合网| 亚洲一级影院| 久久久久天天天天| 国产乱子伦一区二区三区国色天香| 欧美在线啊v| 欧美三级日韩三级国产三级| 国产精品视频导航| 毛片一区二区| 在线精品国产成人综合| 在线观看欧美激情| 亚洲一区二区免费看| 欧美午夜精品久久久久久人妖| 亚洲最新视频在线| 国产精品欧美经典| 欧美区亚洲区| 在线免费精品视频| 午夜久久久久久久久久一区二区| 国产精品久久久久久久浪潮网站| 久久婷婷人人澡人人喊人人爽| 午夜性色一区二区三区免费视频| 欧美日韩亚洲高清| 亚洲国产人成综合网站| 国产精品视频专区| 99riav久久精品riav| 亚洲天堂偷拍| 韩国亚洲精品| 欧美日韩一区在线观看| 国产伦精品一区二区三区视频黑人| 欧美福利电影在线观看| 国产日韩欧美麻豆| 国产一区二区三区在线观看免费| 亚洲欧美资源在线| 欧美调教视频| 国产精品国产三级国产aⅴ浪潮| 国产精品久久久久久久久免费樱桃| 欧美一区二区三区日韩视频| 国产精品sm| 欧美黑人一区二区三区| 欧美成人一区二免费视频软件| 久久久精品一区二区三区| 国产综合视频在线观看| 一本久道久久综合婷婷鲸鱼| 亚洲人成在线观看| 一区二区三区精品视频在线观看| 免费h精品视频在线播放| 欧美亚洲一区| 亚洲一区二区三区欧美| 欧美日韩亚洲三区| 久久国产精品久久w女人spa| 欧美国产日韩亚洲一区| 欧美大胆成人| 中文网丁香综合网| 亚洲精品视频在线播放| 亚洲国产精品久久人人爱蜜臀| 国语自产精品视频在线看| 国产原创一区二区| 欧美精品久久久久久久久老牛影院| 欧美日本中文| 影音先锋另类| 亚洲欧美日本在线| 亚洲美女在线看| 国产精品一区二区三区四区| 欧美视频亚洲视频| 一区二区不卡在线视频 午夜欧美不卡在| 国产精品亚洲а∨天堂免在线| 国产一区二区成人久久免费影院| 在线观看视频一区二区欧美日韩| 久热国产精品视频| 国产精品久久久久久久免费软件| 裸体一区二区三区| 尤物精品国产第一福利三区| 国模叶桐国产精品一区| 久久精品首页| 亚洲在线日韩| 国产精品午夜视频| 黄色一区二区在线| 亚洲黄色在线| 久久久久久九九九九| 国产精品一区二区三区成人| 欧美人在线观看| 国产精品萝li| 久久精品夜色噜噜亚洲aⅴ| 亚洲伊人网站| 一区在线视频观看| 有码中文亚洲精品| 99国产精品| 国产精品自在欧美一区| 一本色道久久综合亚洲91| 欧美不卡一区| 欧美另类久久久品| 久久国产精品一区二区三区四区| 久久最新视频| 妖精视频成人观看www| 欧美日韩裸体免费视频| 欧美日韩国产成人在线观看| 久久久久久噜噜噜久久久精品| 一区二区国产在线观看| 亚洲精品视频在线| 欧美在线免费播放| 亚洲精品女av网站| 日韩亚洲欧美高清| 亚洲欧美精品在线| 香蕉成人啪国产精品视频综合网| 久久成人18免费网站| 欧美婷婷在线| 国产在线观看91精品一区| 亚洲国产裸拍裸体视频在线观看乱了| 久久福利一区| 欧美色欧美亚洲高清在线视频| 国产亚洲人成a一在线v站| 亚洲欧美卡通另类91av| 国产精品毛片va一区二区三区| 久久久青草婷婷精品综合日韩| 国外成人在线视频网站| 欧美日韩一区二区三区在线看| 性欧美videos另类喷潮| 午夜精品久久久久久久久久久久| 欧美三日本三级少妇三99| 午夜日韩电影| 99视频日韩| 国产综合av| 久久精品亚洲精品| 国产精品美女一区二区| 国产精品日韩精品欧美精品| 国产热re99久久6国产精品| 亚洲精品系列| 尤妮丝一区二区裸体视频| 欧美a级一区| 欧美一区二区三区视频在线观看| 9色国产精品| 欧美日韩免费观看中文| 在线观看国产精品网站| 久久免费视频这里只有精品| 国产亚洲精品自拍| 欧美日韩亚洲一区二区三区在线观看| 国内久久视频| 欧美精品午夜| 久久性天堂网| 免费在线观看一区二区| 欧美日本不卡视频| 欧美一区二区三区在| 久久精品亚洲乱码伦伦中文| 国产精品二区影院| 香蕉免费一区二区三区在线观看| 小处雏高清一区二区三区| 国产情侣久久| 一区二区三区欧美在线观看| 欧美午夜一区二区福利视频| 国产热re99久久6国产精品| 欧美激情aaaa| 国产精品伦理| 国产视频一区免费看| 亚洲午夜精品视频| 在线观看日韩av| 久久一区二区三区四区五区| 亚洲国产成人在线| 久久国产精品一区二区三区| 国产目拍亚洲精品99久久精品| 欧美大秀在线观看| 久久久久青草大香线综合精品|