-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Update documentatino, citation, readme
- Loading branch information
Showing
3 changed files
with
27 additions
and
19 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,26 +1,31 @@ | ||
# GPU Vendor/Programming Model Compatibility Matrix | ||
# GPU Vendor/Programming Model Compatibility Overview | ||
|
||
There are three vendors of HPC-grade GPUs (NVIDIA, AMD, Intel), and many different programming models to use the devices for general computing. It's a zoo. For a presentation, I assessed the status of the possible combinations of some more established programming models. | ||
There are three vendors of HPC-grade GPUs (NVIDIA, AMD, Intel), and many different programming models to use the devices for general computing. It's a zoo! This repository collects data about the state of support of the various combinations, for C/C++ and Fortran. | ||
|
||
**BRANCH: `dev-p3hpc23`. This is a WIP branch, updating the material significantly for submission as a SC23 workshop paper. The infrastructure has also been reworked. As of now, only TeX implements the newly added features (like references)!** | ||
The initial collection was done for a presentation (v1.0), continued to a blog post (v1.2), and further extended to a proper paper (v2.0). | ||
|
||
Since I needed this Compatibility Matrix both in PDF form (for presentations) and HTML form (for a blog), I wrote a little Python tool which consumes a definition file and generates HTML and LaTeX from it. | ||
I'm happy to accept contributions for extension/correction. Please add issues or file a pull request (note the MIT license). | ||
|
||
The tool – `render_table.py` – uses Jinja2 templates to create the respective overview tables and descriptions. The data source is `compat.yml`. | ||
## Structure | ||
|
||
The core of the work is the `compat.yml` file, the YAML-structured raw data. By scripts and templates, this data is converted to HTML or PDF (via LaTeX; an SVG version is created from the PDF as well). | ||
|
||
Files: | ||
|
||
* `render_table.py`: Read in definitions from `compat.yml`, massage data, and generate HTML and/or LaTeX code. Can be either printed to screen and/or written to file. See `render_table.py -h` | ||
* `compat.yml`: All the raw data, in YAML. Starts with SVG code for status icons. Then come the status assessments in form of dictionaries. And finally, a list of descriptions of the assessments. | ||
* `table-template.in.html`/`table-template--*.in.tex`: The Jinja2 template files generating the respective code from the raw data. While a lot of the content is similar, there are some distinct differences – like how the footnotes are handled, because LaTeX is typeset while HTML is static. | ||
* `gpu-vendor-model-matrix.skeleton.html`/`gpu-vendor-model-matrix.tex`: Example boilerplate code to augment the generated table. For HTML, this is not much beyond the CSS; but for LaTeX this also includes some important definitions; but I did not want to cascade it any further. | ||
* Pre-compiled examples: | ||
- `gpu-vendor-model-matrix.table.html`/`gpu-vendor-model-matrix.table.*.tex`: Generated version of the raw data | ||
- `gpu-vendor-model-matrix.pdf`: Typeset PDF from `gpu-vendor-model-matrix.tex` with XeLaTeX | ||
- `gpu-vendor-model-matrix.svg`: Converted SVG from PDF with Inkscape | ||
- `gpu-vendor-model-matrix.html`: Simple container HTML page with inserted table and some style | ||
* `templates/`: Folder for all templates to be consumed by the Python script, containing Jinja2 template files generating the respective code from the raw data. While a lot of the content is similar, there are some distinct differences – like how the footnotes are handled, because LaTeX is typeset while HTML is static. | ||
* `output-fragments/`: Folder for generated files from the templates, plus skeletons containing boilerplate code to augment the generated files. For HTML, this is not much beyond the CSS; but for LaTeX this also includes some important definitions; but I did not want to cascade it any further. | ||
* `Makefile`: Generate all of these. Check out `make html pdf svg`. | ||
|
||
Also, `_gen-symbols/` exist, which is part of my exploration for all of this. I just might need it if I change the icons. | ||
|
||
## SC23 P3HPC Paper | ||
|
||
The template `table-template--descriptions.in.paper.tex` is a heavily modified version of the _standard_ TeX template extended to -- amongst others -- support references (from `references.bib`). Currently, the references are not supported in the HTML output. I'm happy to accept your pull request on this! | ||
|
||
A preprint of the paper can be found at [arxiv.org/abs/2309.05445](https://arxiv.org/abs/2309.05445). | ||
|
||
## SVG Snapshot | ||
|
||
<img src="gpu-vendor-model-matrix.svg" /> |