| … | … | @@ -0,0 +1,25 @@ |
| 1 | Design Notes G |
| 2 | ============== |
| 3 | September 2025 |
| 4 | |
| 5 | Notes about the mechanics of running AST's on GPU's. |
| 6 | |
| 7 | The base implementation of the GPU interfaces is now sufficiently |
| 8 | advanced that the next steps open up: the ability to take a given |
| 9 | Atomese AST and run it on a GPU. That is, to create a GPU-cenetric |
| 10 | library of arithmetic functions, and then take a specific abstract |
| 11 | syntax tree (AST) written as e.g. `(AccumLink (TimesLink A B))` and |
| 12 | run it on the GPU. But what is the API to this, and what is the |
| 13 | mechanics of doing this? |
| 14 | |
| 15 | One possibility is to have PlusGPULink and TimesGPULink, and then have |
| 16 | RuleLinks to transpose the AST from its "abstract" form to these |
| 17 | concrete Atoms. This is problematic because RuleLinks remain difficult |
| 18 | to work with and apply. They seem like a great idea but are tough. |
| 19 | There are also little details that threaten coherency: stuff that might |
| 20 | need to run locally before getting pushed off to the GPU, and the rules |
| 21 | for these could be very arcane and detailed and prone to bugs. |
| 22 | |
| 23 | Another possibility is to have an `(ExecOnGPULink AST)`, similar to |
| 24 | `(PureExec AST)` |
| 25 | |