Skip to content

Commit 6dbbc62

Browse files
authored
Merge pull request #200 from Udit8348/develop-docker-micro
Develop Docker Micro
2 parents 98b5860 + 667fa16 commit 6dbbc62

13 files changed

+357
-229
lines changed

README.md

+30-4
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,30 @@
11
# Vortex GPGPU
22

3-
Vortex is a full-stack open-source RISC-V GPGPU.
3+
Vortex is a full-stack open-source RISC-V GPGPU. Vortex supports multiple **backend drivers**, including our C++ simulator (simx), an RTL simulator, and physical Xilinx and Altera FPGAs-- all controlled by a single driver script. The chosen driver determines the corresponding code invoked to run Vortex. Generally, developers will prototype their intended design in simx, before completing going forward with an RTL implementation. Alternatively, you can get up and running by selecting a driver of your choice and running a demo program.
4+
5+
## Website
6+
Vortex news can be found on its [website](https://vortex.cc.gatech.edu/)
7+
8+
## Citation
9+
```
10+
@inproceedings{10.1145/3466752.3480128,
11+
author = {Tine, Blaise and Yalamarthy, Krishna Praveen and Elsabbagh, Fares and Hyesoon, Kim},
12+
title = {Vortex: Extending the RISC-V ISA for GPGPU and 3D-Graphics},
13+
year = {2021},
14+
isbn = {9781450385572},
15+
publisher = {Association for Computing Machinery},
16+
address = {New York, NY, USA},
17+
url = {https://doi.org/10.1145/3466752.3480128},
18+
doi = {10.1145/3466752.3480128},
19+
abstract = {The importance of open-source hardware and software has been increasing. However, despite GPUs being one of the more popular accelerators across various applications, there is very little open-source GPU infrastructure in the public domain. We argue that one of the reasons for the lack of open-source infrastructure for GPUs is rooted in the complexity of their ISA and software stacks. In this work, we first propose an ISA extension to RISC-V that supports GPGPUs and graphics. The main goal of the ISA extension proposal is to minimize the ISA changes so that the corresponding changes to the open-source ecosystem are also minimal, which makes for a sustainable development ecosystem. To demonstrate the feasibility of the minimally extended RISC-V ISA, we implemented the complete software and hardware stacks of Vortex on FPGA. Vortex is a PCIe-based soft GPU that supports OpenCL and OpenGL. Vortex can be used in a variety of applications, including machine learning, graph analytics, and graphics rendering. Vortex can scale up to 32 cores on an Altera Stratix 10 FPGA, delivering a peak performance of 25.6 GFlops at 200 Mhz.},
20+
booktitle = {MICRO-54: 54th Annual IEEE/ACM International Symposium on Microarchitecture},
21+
pages = {754–766},
22+
numpages = {13},
23+
keywords = {reconfigurable computing, memory systems., computer graphics},
24+
location = {Virtual Event, Greece},
25+
series = {MICRO '21}
26+
}
27+
```
428

529
## Specifications
630

@@ -30,12 +54,14 @@ Vortex is a full-stack open-source RISC-V GPGPU.
3054
- `ci`: Continuous integration scripts.
3155
- `miscs`: Miscellaneous resources.
3256

33-
## Build Instructions
34-
More detailed build instructions can be found [here](docs/install_vortex.md).
57+
## Quick Start
58+
If you are interested in a stable release of Vortex, you can download the latest release [here](https://github.com/vortexgpgpu/vortex/releases/latest). Otherwise, you can pull the most recent, but (potentially) unstable version as shown below. The following steps demonstrate how to build and run Vortex with the default driver: SimX. If you are interested in a different backend, look [here](docs/simulation.md).
59+
3560
### Supported OS Platforms
3661
- Ubuntu 18.04, 20.04, 22.04, 24.04
3762
- Centos 7
3863
### Toolchain Dependencies
64+
The following dependencies will be fetched prebuilt by `toolchain_install.sh`.
3965
- [POCL](http://portablecl.org/)
4066
- [LLVM](https://llvm.org/)
4167
- [RISCV-GNU-TOOLCHAIN](https://github.com/riscv-collab/riscv-gnu-toolchain)
@@ -105,4 +131,4 @@ echo "source <build-path>/ci/toolchain_env.sh" >> ~/.bashrc
105131
```sh
106132
./ci/blackbox.sh --app=demo --debug=3
107133
```
108-
- For additional information, check out the /docs.
134+
- For additional information, check out the [documentation](docs/index.md)

ci/install_dependencies.sh

+1-1
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ check_gcc_version() {
3131
apt-get update -y
3232

3333
# install system dependencies
34-
apt-get install -y build-essential valgrind libstdc++6 binutils python3 uuid-dev ccache
34+
apt-get install -y build-essential valgrind libstdc++6 binutils python3 uuid-dev ccache cmake
3535

3636
# Check and install GCC 11 if necessary
3737
if check_gcc_version; then

docs/altera_fpga_guide.md

-92
This file was deleted.

docs/contributing.md

+32-13
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,37 @@
1-
# Contributing to Vortex on Github
1+
# Contributing to Vortex
22

3-
## Github Details
4-
- There are two main repos, `vortex` (public, this one) and `vortex-dev` (private)
5-
- todo: Most current development is on `vortex`
6-
- If you have a legacy version of `vortex`, you can use the releases branch or tags to access the repo at that point in time
3+
## Github
4+
Vortex uses Github to host its git repositories.
5+
There are a lot of ways to use the features on Github for collaboration.
6+
Therefore, this documentation details the standard procedure for contributing to Vortex.
7+
Development of Vortex is consolidated to this repo, `vortex` and any associated forks.
8+
Previously, there was active work done on a private repo named `vortex-dev`.
9+
`vortex-dev` has officially been deprecated and fully merged into this public repo, `vortex`.
10+
If you are returning to this project and have legacy versions of Vortex, you can use the releases branches to access older versions.
711

812
## Contribution Process
9-
- You should create a new branch from develop that is clearly named with the feature that you want to add
10-
- Avoid pushing directly to the `master` branch instead you will need to make a Pull Request (PR)
11-
- There should be protections in place that prevent pushing directly to the main branch, but don't rely on it
12-
- When you make a PR it will be tested against the continuous integration (ci) pipeline (see `continuous_integration.md`)
13-
- It is not sufficient to just write some tests, they need to be incorporated into the ci pipeline to make sure they are run
14-
- During a PR, you might receive feedback regarding your changes and you might need to make further commits to your branch
13+
In an effort to keep `vortex` organized, permissions to directly create branches and push code has been limited to admins.
14+
However, contributions are strongly encouraged and keep the project moving forward! Here is the procedure for contributing:
1515

16+
1. Create a fork of `vortex`
17+
2. In your fork, create a branch from `master` that briefly explains the work you are adding (ie: `develop-documentation`)
18+
3. Make your changes on the new branch in your fork. You may create as many commits as you need, which might be common if you are making multiple iterations
19+
4. Since you are the owner of your fork, you have full permissions to push commits to your fork
20+
4. When you are satisfied with the changes on your fork, you can open a PR from your fork using the online interface
21+
5. If you recently made a push, you will get automatically get a prompt on Github online to create a PR, which you can press
22+
6. Otherwise, you can go to your fork on Github online and manually create a PR (todo)
23+
(todo): how to name and format your PR, what information you should add to the PR, does not need to be too strict if you are attending the weekly meetings*
24+
7. Github uses the following semantics: `base repository` gets the changes from your `head repository`
25+
8. Therefore, you should set the `base repository` to `vortexgpgpu/vortex` and the `base` branch to `master` since the master branch is protected by reviewed PRs.
26+
9. And you should assign the `head repository` to `<your-github-username>/vortex` (which represents your fork of vortex) and the `base` branch to the one created in step 2
27+
10. Now that your intended PR has been specified, you should review the status. Check for merge conflicts, if all your commits are present, and all the modified files make sense
28+
11. You can still make a PR if there are issues in step 10, just make sure the structure is correct according to steps 7-9
29+
12. Once the PR is made, the CI pipeline will run automatically, testing your changes
30+
13. Remember, a PR is flexible if you need to make changes to the code you can go back to your branch of the fork to commit and push any updates
31+
14. As long as the `head repository`'s `base` branch is the one you edited, the PR will automatically get the most recent changes
32+
15. When all merge conflicts are resolved, changes are made, and tests pass you can have an admin merge your PR
1633

17-
## Creating and Adding Tests
18-
see `testing.md`
34+
## What Makes a Good Contribution?
35+
- If you are contributing code changes, then review [testing.md](./testing.md) to ensure your tests are integrated into the [CI pipeline](continuous_integration.md)
36+
- During a PR, you should consider the advice you are provided by your reviewers. Remember you keep adding commits to an open PR!
37+
- If your change aims to fix an issue opened on Github, please tag that issue in the PR itself

docs/environment_setup.md

+9-3
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,19 @@
11
# Environment Setup
2-
These instructions apply to the development vortex repo using the updated toolchain. The updated toolchain is considered to be any commit of `master` pulled from July 2, 2023 onwards. The toolchain update in question can be viewed in this [commit](https://github.com/vortexgpgpu/vortex-dev/commit/0048496ba28d7b9a209a0e569d52d60f2b68fc04). Therefore, if you are unsure whether you are using the new toolchain or not, then you should check the `ci` folder for the existence of the `toolchain_prebuilt.sh` script. Furthermore, you should notice that the `toolchain_install.sh` script has the legacy `llvm()` split into `llvm-vortex()` and `llvm-pocl()`.
32

3+
These instructions apply to the development vortex repo using the updated toolchain. The updated toolchain is considered to be any commit of `master` pulled from July 2, 2023 onwards. The toolchain update in question can be viewed in this [commit](https://github.com/vortexgpgpu/vortex-dev/commit/0048496ba28d7b9a209a0e569d52d60f2b68fc04). Therefore, if you are unsure whether you are using the new toolchain or not, then you should check the `ci` folder for the existence of the `toolchain_prebuilt.sh` script. Furthermore, you should notice that the `toolchain_install.sh` script has the legacy `llvm()` split into `llvm-vortex()` and `llvm-pocl()`.
44

55
## Set Up on Your Own System
6-
The toolchain binaries provided with Vortex are built on Ubuntu-based systems. To install Vortex on your own system, [follow these instructions](install_vortex.md).
76

7+
The toolchain binaries provided with Vortex are built on Ubuntu-based systems. To install Vortex on your own system, [follow these instructions](install_vortex.md).
88

99
## Servers for Georgia Tech Students and Collaborators
10+
1011
### Volvo
12+
1113
Volvo is a 64-core server provided by HPArch. You need valid credentials to access it. If you don't already have access, you can get in contact with your mentor to ask about setting your account up.
1214

1315
Setup on Volvo:
16+
1417
1. Connect to Georgia Tech's VPN or ssh into another machine on campus
1518
2. `ssh volvo.cc.gatech.edu`
1619
3. Clone Vortex to your home directory: `git clone --recursive https://github.com/vortexgpgpu/vortex.git`
@@ -19,21 +22,24 @@ Setup on Volvo:
1922
6. Run a test program: `./ci/blackbox.sh --cores=2 --app=dogfood`
2023

2124
### Nio
25+
2226
Nio is a 20-core desktop server provided by HPArch. If you have access to Volvo, you also have access to Nio.
2327

2428
Setup on Nio:
29+
2530
1. Connect to Georgia Tech's VPN or ssh into another machine on campus
2631
2. `ssh nio.cc.gatech.edu`
2732
3. Clone Vortex to your home directory: `git clone --recursive https://github.com/vortexgpgpu/vortex.git`
2833
4. `source /opt/set_vortex_env_dev.sh` to set up the necessary environment variables.
2934
5. `make -s` in the `vortex` root directory
3035
6. Run a test program: `./ci/blackbox.sh --cores=2 --app=dogfood`
3136

32-
3337
## Docker (Experimental)
38+
3439
Docker allows for isolated pre-built environments to be created, shared and used. The emulation mode required for ARM-based processors will incur a decrease in performance. Currently, the dockerfile is not included with the official vortex repository and is not actively maintained or supported.
3540

3641
### Setup with Docker
42+
3743
1. Clone repo recursively onto your local machine: `git clone --recursive https://github.com/vortexgpgpu/vortex.git`
3844
2. Download the dockerfile from [here](https://github.gatech.edu/gist/usubramanya3/f1bf3e953faa38a6372e1292ffd0b65c) and place it in the root of the repo.
3945
3. Build the Dockerfile into an image: `docker build --platform=linux/amd64 -t vortex -f dockerfile .`

0 commit comments

Comments
 (0)