Skip to content

Commit

Permalink
Update documentatino, citation, readme
Browse files Browse the repository at this point in the history
  • Loading branch information
AndiH committed Nov 7, 2023
1 parent dc64347 commit dd92a84
Show file tree
Hide file tree
Showing 3 changed files with 27 additions and 19 deletions.
15 changes: 9 additions & 6 deletions CITATION.cff
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
cff-version: 1.2.0
title: GPU Vendor/Programming Model Compatibility Table
title: GPU Vendor/Programming Model Compatibility Overview
message: >-
If you use this software, please cite it using the
metadata from this file.
Expand All @@ -14,16 +14,19 @@ identifiers:
- type: doi
value: 10.34732/xdvblg-r1bvif
description: Blogpost of Table
- type: doi
value: 10.1145/3624062.3624178
description: SC23 Workshop Paper of extended version (v2) of material with discussions
repository-code: 'https://github.com/AndiH/gpu-lang-compat'
abstract: >-
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. The table
devices for general computing. It's a zoo! The overview
presents the status of the possible combinations of some
more established programming models, given comments and
details for every combination. The repository contains the
YAML raw data and scripts to generate tables (HTML, PDF
via LaTeX).
YAML raw data and scripts and templates to generate tables
(HTML, PDF via LaTeX (also SVG from PDF)).
keywords:
- Intel
- AMD
Expand All @@ -35,5 +38,5 @@ keywords:
- HIP
- SYCL
license: MIT
version: '1.2'
date-released: '2022-11-12'
version: '2.0'
date-released: '2023-11-13'
2 changes: 1 addition & 1 deletion LICENSE
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
MIT License

Copyright (c) 2022 Andreas Herten
Copyright (c) 2023 Andreas Herten

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
Expand Down
29 changes: 17 additions & 12 deletions README.md
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" />

0 comments on commit dd92a84

Please sign in to comment.