array
Kbd
Our great sponsors
array | Kbd | |
---|---|---|
4 | 8 | |
187 | 26 | |
- | - | |
6.9 | 1.8 | |
3 months ago | almost 2 years ago | |
C++ | APL | |
Apache License 2.0 | MIT License |
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.
array
-
Benchmarking 20 programming languages on N-queens and matrix multiplication
I should have mentioned somewhere, I disabled threading for OpenBLAS, so it is comparing one thread to one thread. Parallelism would be easy to add, but I tend to want the thread parallelism outside code like this anyways.
As for the inner loop not being well optimized... the disassembly looks like the same basic thing as OpenBLAS. There's disassembly in the comments of that file to show what code it generates, I'd love to know what you think is lacking! The only difference between the one I linked and this is prefetching and outer loop ordering: https://github.com/dsharlet/array/blob/master/examples/linea...
This gets to 90% of BLAS: https://github.com/dsharlet/array/blob/38f8ce332fc4e26af0832...
But this is quite general. I’m claiming you can beat BLAS if you have some unique knowledge of the problem that you can exploit. For example, some kinds of sparsity can be implemented within the above example code yet still far outperform the more general sparsity supported by MKL and similar.
-
A basic introduction to NumPy's einsum
Compilers can be pretty good if you help them out a bit. Here's my implementation of Einstein reductions (including summations) in C++, which generate pretty close to ideal code until you start getting into processor architecture specific optimizations: https://github.com/dsharlet/array#einstein-reductions
If you are looking for something like this in C++, here's my attempt at implementing it: https://github.com/dsharlet/array#einstein-reductions
It doesn't do any automatic optimization of the loops like some of the projects linked in this thread, but, it provides all the tools needed for humans to express the code in a way that a good compiler can turn it into really good code.
Kbd
-
Dyalog APL Keyboard Layouts
Should you wish to type them on a normal keyboard:
https://abrudz.github.io/lb/apl has a browser bookmarklet which adds an APL language bar to the top of any web page so you can type in any input box with backtick prefixes.
https://github.com/abrudz/Kbd has a Windows Input Method Editor (IME) that adds system-wide RightAlt+letter combos.
-
Ngn/k (free K implementation)
This might have been true a couple of years ago but it is totally untrue now.
I'm not sure why you couldn't use the student version of Dyalog? Sounds like it would have been fine. There are also many more FOSS implementations of array languages now, such as ngn/k and April. https://github.com/phantomics/april
'only available for Linux' - not true https://github.com/abrudz/Kbd/ and others (also different input modes like `w for ⍵)
'no community support' - on the contrary there is a big and helpful APL community https://aplwiki.com/wiki/Chat_rooms_and_forums that is (imo) more useful than stackoverflow
'Dynamic scoping...' - Dyalog's (and other APL's) dfns have lexical scope.
'The language is extremely terse' - is this meant to be a bad thing?
'The code tends to be very hacky' - maybe if you write bad code or try and write C in APL (it won't work)
-
Use TAB entry style in Dyalog for Mac?
I don't think so, but maybe - you're actually the first person I've ever seen express that they actually use and prefer the tab input. I'll let https://github.com/abrudz/ know. I need to check but I wonder if that's what the compositions keyboard in https://github.com/abrudz/Kbd is - if not he'll probably be able to make it happen
So Adam says the compositions keyboard is similar but slightly different. While the tab input goes Component1,Component2,Tab the CompUS keyboard from abrudz/Kbd goes AltGr+Component1,Component2. It has not been well tested so please report any issues here: https://github.com/abrudz/Kbd/issues
-
Learning APL
In general programming I like to use a keyboard layout which allows typing APL glyphs with Right Alt: https://github.com/abrudz/Kbd
What are some alternatives?
BQN - An APL-like programming language. Self-hosted!
kalamine - Keyboard Layout Maker
optimizing-the-memory-layout-of-std-tuple - Optimizing the memory layout of std::tuple
pdp11.jl - PDP-11 Simulator written in Julia
dyalog-apl-extended - Dyalog APL Extended
aoc2017 - ngn/k
PDP_11_Simulator - PDP11 Simulator written in APL
kona - Open-source implementation of the K programming language
ok - An open-source interpreter for the K5 programming language.
bqn-libs - Informal collection of BQN utilities
keyboards - My Keyboard Configurations (QMK and ZMK)
kerf1 - Kerf (Kerf1) is a columnar tick database and time-series language for Linux/OSX/BSD/iOS/Android. It is written in C and natively speaks JSON and SQL. Kerf can be used for trading platforms, feedhandlers, low-latency networking, high-volume analysis of realtime and historical data, logfile processing, and more.