OpenBLAS
llvm-cbe
Our great sponsors
OpenBLAS | llvm-cbe | |
---|---|---|
21 | 14 | |
5,886 | 783 | |
2.0% | 2.0% | |
9.8 | 6.5 | |
4 days ago | about 1 month ago | |
C | C++ | |
BSD 3-clause "New" or "Revised" License | GNU General Public License v3.0 or later |
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.
OpenBLAS
- Assume I'm an idiot - oogabooga LLaMa.cpp??!
-
Learn x86-64 assembly by writing a GUI from scratch
Yeah. I'm going to be helping to work on expanding CI for OpenBlas and have been diving into this stuff lately. See the discussion in this closed OpenBlas issue gh-1968 [0] for instance. OpenBlas's Skylake kernels do rely on intrinsics [1] for compilers that support them, but there's a wide range of architectures to support, and when hand-tuned assembly kernels work better, that's what are used. For example, [2].
[0] https://github.com/xianyi/OpenBLAS/issues/1968
[1] https://github.com/xianyi/OpenBLAS/blob/develop/kernel/x86_6...
[2] https://github.com/xianyi/OpenBLAS/blob/23693f09a26ffd8b60eb...
-
AI’s compute fragmentation: what matrix multiplication teaches us
We'll have to wait until part 2 to see what they are actually proposing, but they are trying to solve a real problem. To get a sense of things check out the handwritten assembly kernels in OpenBlas [0]. Note the level of granularity. There are micro-optimized implementations for specific chipsets.
If progress in ML will be aided by a proliferation of hyper-specialized hardware, then there really is a scalability issue around developing optimized matmul routines for each specialized chip. To be able to develop a custom ASIC for a particular application and then easily generate the necessary matrix libraries without having to write hand-crafted assembly for each specific case seems like it could be very powerful.
-
The Bitter Truth: Python 3.11 vs Cython vs C++ Performance for Simulations
There isn't any fortran code in the repo there itself but numpy itself can be linked with several numeric libraries. If you look through the wheels for numpy available on pypi, all the latest ones are packaged with OpenBLAS which uses Fortran quite a bit: https://github.com/xianyi/OpenBLAS
- Optimizing compilers reload vector constants needlessly
-
Just a quick question, can a programming language be as fast as C++ and efficient with as simple syntax like Python?
Sure - write functions in another language, export C bindings, and then call those functions from Python. An example is NumPy - a lot of its linear algebra functions are implemented in C and Fortran.
-
CL-AUTOWRAP generated (C)BLAS wrapper in QUICKLISP
Is there a canonical (C)BLAS header file? I've been using the one provided by netlib, however OpenBLAS also provides a cblas.h and this also defines some additional functions such as cblas_crotg and cblas_zrotg. What about versioning for header files?
- Russia to Legalize Software Piracy
- Fork() is evil; vfork() is goodness; afork() would be better; clone() is stupid
-
Benchmarking the Apple M1 Max
I used OpenBLAS on my cheap last-generation AMD Ryzen 7 4700U laptop like so:
git clone https://github.com/xianyi/OpenBLAS
llvm-cbe
-
Ask HN: LLVM vs. C
So how does the LLVM C backend work then?
-
rust to c complication?
One alternative worth mentioning, though, would be the LLVM C Backend maintained by the Julia community.
-
Programming language that compiles to clean C89 or C99?
If you drop "easily" and "human" (/s) from your requirements list, then the C backend for LLVM might work. Then you can choose any programming language you want that has LLVM 10-compatible frontend.
- Snowman native code to C/C++ decompiler for x86/x86_64/ARM
-
Can Rust do every low level stuff C/C++ do?
You can convert llvm bitcode to C and then use C compiler, there is such project https://github.com/JuliaComputingOSS/llvm-cbe .
-
lipstick: a Rust-like syntax frontend for C
I'm really surprised that the LLVM C backends have continually been resurrected then abandoned over the years. It's a good solution to this sort of thing and would enable a lot of cool stuff like Rust to weird embedded platforms. The most recent one is the Julia backend: https://github.com/JuliaComputingOSS/llvm-cbe
-
Show HN: prometeo – a Python-to-C transpiler for high-performance computing
Well IMO it can definitely be rewritten in Julia, and to an easier degree than python since Julia allows hooking into the compiler pipeline at many areas of the stack. It's lispy an built from the ground up for codegen, with libraries like (https://github.com/JuliaSymbolics/Metatheory.jl) that provide high level pattern matching with e-graphs. The question is whether it's worth your time to learn Julia to do so.
You could also do it at the LLVM level: https://github.com/JuliaComputingOSS/llvm-cbe
For interesting takes on that, you can see https://github.com/JuliaLinearAlgebra/Octavian.jl which relies on loopvectorization.jl to do transforms on Julia AST beyond what LLVM does. Because of that, Octavian.jl beats openblas on many linalg benchmarks
-
Writing a SQLite clone from scratch in C
You can try your luck with the "resurrected" C backend: https://github.com/JuliaComputingOSS/llvm-cbe
I don't understand why I see so many requests for LLVM-based languages to change around their backend or IR, that seems to be a huge amount of work for comparatively little benefit. The correct thing to do there is to just add support for those to LLVM.
-
uLisp
Just to clarify - Gambit, Chicken, and Carp all compile to portable C.
I hadn't realized LLVM mainline doesn't support Xtensa. I'm surprised.
D does support Xtensa via LDC (https://forum.dlang.org/thread/[email protected]...). It looks like GDC also nearly supports it, requiring only a minor patch at present.
A functioning LLVM backend does exist (https://github.com/espressif/llvm-project/issues/4) and might be making very slow progress towards being merged. A quick search shows that it works for Rust. I suspect (but don't know) that it might work for Terra as well.
There's also the LLVM C backend (https://github.com/JuliaComputingOSS/llvm-cbe) but I've no idea how efficient such an approach is when applied to real world embedded tasks.
-
Speed of Rust vs C
The Julia community maintains llvm-cbe, a C-backend for LLVM.
What are some alternatives?
Eigen
GLM - OpenGL Mathematics (GLM)
cblas - Netlib's C BLAS wrapper: http://www.netlib.org/blas/#_cblas
blaze
Boost.Multiprecision - Boost.Multiprecision
ceres-solver - A large scale non-linear optimization library
CGal - The public CGAL repository, see the README below
Octavian.jl - Multi-threaded BLAS-like library that provides pure Julia matrix multiplication
QuantLib - The QuantLib C++ library
ExprTK - C++ Mathematical Expression Parsing And Evaluation Library https://www.partow.net/programming/exprtk/index.html
Vc - SIMD Vector Classes for C++
Klein - P(R*_{3, 0, 1}) specialized SIMD Geometric Algebra Library