{"id":13809670,"url":"https://github.com/Conqueror712/CUDA-Simulator","last_synced_at":"2025-05-14T08:33:24.764Z","repository":{"id":178040310,"uuid":"661250328","full_name":"Conqueror712/CUDA-Simulator","owner":"Conqueror712","description":"A self-developed version of the user-mode CUDA emulator project and a learning repository for Rust","archived":false,"fork":false,"pushed_at":"2023-09-22T02:34:52.000Z","size":37198,"stargazers_count":4,"open_issues_count":0,"forks_count":2,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-11-19T02:39:00.826Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Conqueror712.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2023-07-02T09:02:25.000Z","updated_at":"2024-09-18T15:18:33.000Z","dependencies_parsed_at":"2024-02-24T09:15:16.363Z","dependency_job_id":"be9cc4ca-e265-488a-a711-a8da0d4638cd","html_url":"https://github.com/Conqueror712/CUDA-Simulator","commit_stats":null,"previous_names":["conqueror712/cuda-practice"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Conqueror712%2FCUDA-Simulator","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Conqueror712%2FCUDA-Simulator/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Conqueror712%2FCUDA-Simulator/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Conqueror712%2FCUDA-Simulator/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Conqueror712","download_url":"https://codeload.github.com/Conqueror712/CUDA-Simulator/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254104943,"owners_count":22015570,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-04T02:00:34.123Z","updated_at":"2025-05-14T08:33:19.736Z","avatar_url":"https://github.com/Conqueror712.png","language":"Rust","funding_links":[],"categories":["Frameworks","GPU Programming"],"sub_categories":[],"readme":"# 一、Linux环境选择\r\n\r\n首先准备一个带NVIDIA GPU的Linux环境；\r\n\r\n笔者这里用的是WSL，N卡是原本Windows上带的。\r\n\r\n*   Ubuntu 20.04 LTS\r\n*   RTX 1650\r\n\r\n\u003e 尝试过的其他方法：\r\n\u003e\r\n\u003e *   Windows环境（兼容性问题）\r\n\u003e *   Vmware虚拟机环境（虚拟化过程繁琐）\r\n\u003e *   单主机双系统（切换不便，卡顿）\r\n\u003e *   云服务器（成本问题，有些驱动版本需要更新）\r\n\u003e *   Mac环境（不支持CUDA）\r\n\r\n# 二、NVIDIA驱动安装\r\n\r\n直接用Windows下载.exe文件安装；\r\n\r\n另外，安装过程会伴随多次黑屏和重启，并且会需要一段时间，请耐心等待，会自动同步到WSL中；\r\n\r\n\u003e 如果没同步就请`apt install nvidia-utils-535-server`\r\n\r\n值得一提的是，安装之前需要把旧版的带NVIDIA的软件全部卸载（除了NVIDIA Control Panel）\r\n\r\n![image.png](https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/b3d5beaf549e4132992979a706d3110f~tplv-k3u1fbpfcp-watermark.image?)\r\n\r\n作为参考，笔者的驱动版本是536.67\r\n\r\n\u003e check: `nvidia-smi`\r\n\u003e\r\n\u003e ![image.png](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/e1e603154d6e442e8d38a39790e2d95f~tplv-k3u1fbpfcp-watermark.image?)\r\n# 三、更新依赖\r\n\r\n    sudo apt update\r\n    sudo apt-get update\r\n    sudo apt-get install libclang-dev\r\n    sudo apt-get install freeglut3-dev build-essential libx11-dev libxmu-dev libxi-dev libgl1-mesa-glx libglu1-mesa libglu1-mesa-dev\r\n\r\n获取权限（可选）：`sudo su`\r\n\r\n# 四、CUDA 12.2下载安装：\r\n\r\n## 方式一：\r\n\r\n推荐基于发行版的文档进行安装，这里是Ubuntu，参考文档如下：\r\n\r\n\u003chttps://help.ubuntu.com/community/NvidiaDriversInstallation\u003e\r\n\r\n## 方式二：\r\n\r\n直接安装：\r\n\r\n    wget https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64/cuda-keyring_1.1-1_all.deb\r\n    sudo dpkg -i cuda-keyring_1.1-1_all.deb\r\n    sudo apt-get update\r\n    sudo apt-get -y install cuda\r\n\r\n更新环境变量`nano ~/.bashrc` --\u003e 以下操作 --\u003e `source ~/.bashrc`\r\n\r\n\u003e 注意，这一步如果原本机器上没有旧版的CUDA就不用做\r\n\r\n    export CUDA_HOME=/usr/local/cuda\r\n    export PATH=$PATH:$CUDA_HOME/bin\r\n    export LD_LIBRARY_PATH=/usr/local/cuda-12.2/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}\r\n\r\n注：退出nano的方法可以是`Ctrl + X, Y, Enter`（三步）\r\n\r\n\u003e check: `nvcc --version`\r\n\u003e\r\n\u003e ![image.png](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/75208dd1dbe7446196a243e56dc4e58c~tplv-k3u1fbpfcp-watermark.image?)\r\n# 五、Rust \u0026 Cargo下载\r\n\r\n`curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh`之后输入`1`；\r\n\r\n随后重新加载`source $HOME/.cargo/env`；\r\n\r\n\u003e check: `cargo --version` \u0026\u0026 `rustc --version`\r\n\u003e\r\n\u003e ![image.png](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/47b0d93c12c1454b9d20fda8e583febd~tplv-k3u1fbpfcp-watermark.image?)\r\n***\r\n\r\n\r\n# 六、克隆仓库 + 环境变量\r\n\r\n`git clone https://github.com/Conqueror712/CUDA-Simulator.git`\r\n\r\n配置环境变量，用nano写入`nano ~/.bashrc`，写入后保存`source ~/.bashrc`\r\n\r\n    export PATH=/usr/local/cuda-12.2/bin${PATH:+:${PATH}}\r\n    export LD_LIBRARY_PATH=/usr/local/cuda-12.2/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}\r\n    export LD_LIBRARY_PATH=/usr/local/cuda-12.2/lib64:$LD_LIBRARY_PATH\r\n    export PATH=/usr/local/cuda-12.2/bin:$PATH\r\n    export LIBCLANG_PATH=/usr/lib/x86_64-linux-gnu/\r\n    export BINDGEN_EXTRA_CLANG_ARGS=\"-I /usr/local/cuda-12.2/include\"\r\n\r\n# 七、生成动态链接库\r\n\r\n于项目根目录下`cargo build --release`，生成libcuda.so文件，默认在target/release/\r\n\r\n\r\n![image.png](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/06e88351e7f24d39829cdadef7112cbf~tplv-k3u1fbpfcp-watermark.image?)\r\n\r\n# 八、简单测试\r\n\r\n1.  cd进入smoketest，用`nvcc smoketest.cu`编译得到`a.out`，再运行`./a.out`\r\n\r\n    ![image.png](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/bf7c94df9cd948fa84fd41f95d14b921~tplv-k3u1fbpfcp-watermark.image?)\r\n\r\n2.  无错误之后方可`LD_PRELOAD=/home/\u003cusername\u003e/CUDA-Simulator/cargo_demo/target/release/libcuda.so ./a.out`查看trace（已经实现的会显示..... --\u003e CUDA\\_SUCCESS）\r\n\r\n    ![image.png](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/304ecd2ad37e4ea79a58f14177393fab~tplv-k3u1fbpfcp-watermark.image?)\r\n\r\n3.  `cargo doc --open`在浏览器中打开文档查看函数签名\r\n\r\n    ![image.png](https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/eadc237df6f9445999b22761abab2b88~tplv-k3u1fbpfcp-watermark.image?)\r\n\r\n4.  之后往`lib.rs中添加自己的实现即可`\r\n\r\n***\r\n\r\nFIN\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FConqueror712%2FCUDA-Simulator","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FConqueror712%2FCUDA-Simulator","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FConqueror712%2FCUDA-Simulator/lists"}