phobos-next
anydsl
phobos-next | anydsl | |
---|---|---|
1 | 5 | |
0 | 98 | |
- | - | |
2.6 | 3.4 | |
about 2 months ago | 2 months ago | |
D | Shell | |
Boost Software License 1.0 | GNU General Public License v3.0 only |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
phobos-next
-
A new programming language for high-performance computers
The only language I know for sure to do it for you (as in you don't have to write the type) was Jai a while back (I'm told Blow removed that feature).
The only language I've actually done it in, is D. It's probably doable in many other nu-C languages these days, but D at very least can make it basically seamless as long as you do some try-and-break-shit testing to make sure nothing is relying on saving pointers when they shouldn't. This obviously constrains the definition of automatic ;)
I don't have my implementation to hand because it grew out of patch that failed due to aforementioned pointer-saving in code that I'm not paid enough to refactor (), but here's one someone else made https://github.com/nordlow/phobos-next/blob/master/src/nxt/s... there's another one in that repository too. I've never used those particular implementations but they're both by people I know so hopefully they're not too bad.
A more subtle thing, which I haven't used in anger, but would like to try at some point is to use programmer annotations (probably in the form of user defined attributes) to try and group things so things are stored such that temporal locality <=> spacial locality, but I've never bothered to actually do it.
There are some arrays of structs in an old bit of the D compiler that are roughly the size of a cacheline, and aren't accessed particularly uniformly. I profiled this and found that something like 75% of all LLC misses (hitting DRAM) were due to 2 particularly miserable lines... inside an O(n^2) algorithm.
anydsl
- AnyDSL: Partial Evaluation Framework for Programming High-Performance Libraries
-
The trouble with SPIR-V, 2022 edition
I work on the AnyDSL research project, we have our own IR and optimizing compiler (Thorin), our framework supports partial evaluation and efficient codegen for the host as well as multiple compute offload targets (CUDA, OpenCL C, the NVVM and AMDGPU targets in LLVM), and I've been pursuing targeting SPIR-V as well.
-
A new programming language for high-performance computers
There is also this:
https://anydsl.github.io/
They have some framework that achieves high level compute!
-
Interesting Language / Architecture: AnyDSL + Impala (Add your comments + parallels in Rust?)
While waiting for std::simd to become a thing in stable and looking for alternatives I stumbled upon this: https://anydsl.github.io/
-
Compiler IR (well, IL) design question: Syntax for multiple function entry points?
I had a look at Impala previously. It describes itself as dialect of Rust, but somehow I'm not exactly happy with Rust syntax, but found Impala's much more cuter, up to actually bother to report a doc glitch to make it even more cuter to passers-by ;-). I understand that it's pretty hard to bootstrap a language nowadays, so understand that "any DSL" marketing niche, though I guess it wouldn't look bad if it was promoted as a general-purpose language either. I also understand that it's open-source, but I'm not rushing to look there, by various reasons, like complexity, copyright and possibility to pick up bad ideas ;-). Preferring to do "black box" studying by papers for now, so thanks again for the links.
What are some alternatives?
verified-scheduling
SPIRV-Cross - SPIRV-Cross is a practical tool and library for performing reflection on SPIR-V and disassembling SPIR-V back to high level languages.
exo - Exocompilation for productive programming of hardware accelerators
truenas-useful-scripts - A collection of scripts for TrueNAS to display useful information, do some reporting by email and backup the TrueNAS config.
toast - Time Ordered Astrophysics Scalable Tools
poudriere - Port/Package build and test system