Octavian.jl VS rr

Compare Octavian.jl vs rr and see what are their differences.

Octavian.jl

Multi-threaded BLAS-like library that provides pure Julia matrix multiplication (by JuliaLinearAlgebra)
InfluxDB - Power Real-Time Data Analytics at Scale
Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
www.influxdata.com
featured
SaaSHub - Software Alternatives and Reviews
SaaSHub helps you find the best software and product alternatives
www.saashub.com
featured
Octavian.jl rr
17 102
222 8,640
0.0% 0.8%
3.9 9.6
24 days ago 7 days ago
Julia C++
GNU General Public License v3.0 or later GNU General Public License v3.0 or later
The number of mentions indicates the total number of mentions that we've tracked plus the number of user suggested alternatives.
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.

Octavian.jl

Posts with mentions or reviews of Octavian.jl. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2023-02-22.
  • Yann Lecun: ML would have advanced if other lang had been adopted versus Python
    9 projects | news.ycombinator.com | 22 Feb 2023
  • Julia 1.8 has been released
    8 projects | news.ycombinator.com | 18 Aug 2022
    For some examples of people porting existing C++ Fortran libraries to julia, you should check out https://github.com/JuliaLinearAlgebra/Octavian.jl, https://github.com/dgleich/GenericArpack.jl, https://github.com/apache/arrow-julia (just off the top of my head). These are all ports of C++ or Fortran libraries that match (or exceed) performance of the original, and in the case of Arrow.jl is faster, more general, and 10x less code.
  • Why Julia matrix multiplication so slow in this test?
    2 projects | /r/Julia | 31 May 2022
    Note that a performance-optimized Julia implementation is on par or even outperform the specialized high-performance BLAS libraries, see https://github.com/JuliaLinearAlgebra/Octavian.jl .
  • Multiple dispatch: Common Lisp vs Julia
    4 projects | /r/Julia | 5 Mar 2022
    If you look at the thread for your first reference, there were a large number of performance improvements suggested that resulted in a 30x speedup when combined. I'm not sure what you're looking at for your second link, but Julia is faster than Lisp in n-body, spectral norm, mandelbrot, pidigits, regex, fasta, k-nucleotide, and reverse compliment benchmarks. (8 out of 10). For Julia going faster than C/Fortran, I would direct you to https://github.com/JuliaLinearAlgebra/Octavian.jl which is a julia program that beats MKL and openblas for matrix multiplication (which is one of the most heavily optimized algorithms in the world).
  • Why Fortran is easy to learn
    19 projects | news.ycombinator.com | 7 Jan 2022
    > But in the end, it's FORTRAN all the way down. Even in Julia.

    That's not true. None of the Julia differential equation solver stack is calling into Fortran anymore. We have our own BLAS tools that outperform OpenBLAS and MKL in the instances we use it for (mostly LU-factorization) and those are all written in pure Julia. See https://github.com/YingboMa/RecursiveFactorization.jl, https://github.com/JuliaSIMD/TriangularSolve.jl, and https://github.com/JuliaLinearAlgebra/Octavian.jl. And this is one part of the DiffEq performance story. The performance of this of course is all validated on https://github.com/SciML/SciMLBenchmarks.jl

  • Show HN: prometeo – a Python-to-C transpiler for high-performance computing
    19 projects | news.ycombinator.com | 17 Nov 2021
    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

  • Python behind the scenes #13: the GIL and its effects on Python multithreading
    2 projects | news.ycombinator.com | 29 Sep 2021
    The initial results are that libraries like LoopVectorization can already generate optimal micro-kernels, and is competitive with MKL (for square matrix-matrix multiplication) up to around size 512. With help on macro-kernel side from Octavian, Julia is able to outperform MKL for sizes up to to 1000 or so (and is about 20% slower for bigger sizes). https://github.com/JuliaLinearAlgebra/Octavian.jl.
  • From Julia to Rust
    14 projects | news.ycombinator.com | 5 Jun 2021
    > The biggest reason is because some function of the high level language is incompatible with the application domain. Like garbage collection in hot or real-time code or proprietary compilers for processors. Julia does not solve these problems.

    The presence of garbage collection in julia is not a problem at all for hot, high performance code. There's nothing stopping you from manually managing your memory in julia.

    The easiest way would be to just preallocate your buffers and hold onto them so they don't get collected. Octavian.jl is a BLAS library written in julia that's faster than OpenBLAS and MKL for small matrices and saturates to the same speed for very large matrices [1]. These are some of the hottest loops possible!

    For true, hard-real time, yes julia is not a good choice but it's perfectly fine for soft realtime.

    [1] https://github.com/JuliaLinearAlgebra/Octavian.jl/issues/24#...

  • Julia 1.6 addresses latency issues
    5 projects | news.ycombinator.com | 25 May 2021
    If you want performance benchmarks vs Fortran, https://benchmarks.sciml.ai/html/MultiLanguage/wrapper_packa... has benchmarks with Julia out-performing highly optimized Fortran DiffEq solvers, and https://github.com/JuliaLinearAlgebra/Octavian.jl shows that pure Julia BLAS implementations can compete with MKL and openBLAS, which are among the most heavily optimized pieces of code ever written. Furthermore, Julia has been used on some of the world's fastest super-computers (in the performance critical bits), which as far as I know isn't true of Swift/Kotlin/C#.

    Expressiveness is hard to judge objectively, but in my opinion at least, Multiple Dispatch is a massive win for writing composable, re-usable code, and there really isn't anything that compares on that front to Julia.

  • Octavian.jl – BLAS-like Julia procedures for CPU
    1 project | news.ycombinator.com | 23 May 2021

rr

Posts with mentions or reviews of rr. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2024-04-18.
  • rr: Lightweight Recording and Deterministic Debugging
    1 project | news.ycombinator.com | 21 Apr 2024
  • Hermit is a hermetic and reproducible sandbox for running programs
    3 projects | news.ycombinator.com | 18 Apr 2024
    I think this tool must share a lot techniques and use cases with rr. I wonder how it compares in various aspects.

    https://rr-project.org/

    rr "sells" as a "reversible debugger", but it obviously needs the determinism for its record and replay to work, and AFAIK it employs similar techniques regarding system call interception and serializing on a single CPU. The reversible debugger aspect is built on periodic snapshotting on top of it and replaying from those snapshots, AFAIK. They package it in a gdb compatible interface.

    Hermit also lists record/replay as a motivation, although it doesn't list reversible debugging in general.

  • Rr: Lightweight Recording and Deterministic Debugging
    1 project | news.ycombinator.com | 10 Apr 2024
  • Deep Bug
    1 project | news.ycombinator.com | 10 Apr 2024
    Interesting. Perhaps you can inspect the disassembly of the function in question when using Graal and HotSpot. It is likely related to that.

    Another debugging technique we use for heisenbugs is to see if `rr` [1] can reproduce it. If it can then that's great as it allows you to go back in time to debug what may have caused the bug. But `rr` is often not great for concurrency bugs since it emulates a single-core machine. Though debugging a VM is generally a nightmare. What we desperately need is a debugger that can debug both the VM and the language running on top of it. Usually it's one or the other.

    > In general I’d argue you haven’t fixed a bug unless you understand why it happened and why your fix worked, which makes this frustrating, since every indication is that the bug exists within proprietary code that is out of my reach.

    Were you using Oracle GraalVM? GraalVM community edition is open source, so maybe it's worth checking if it is reproducible in that.

    [1]: https://github.com/rr-debugger/rr

  • So you think you want to write a deterministic hypervisor?
    2 projects | news.ycombinator.com | 20 Mar 2024
    https://rr-project.org/ had the same problem. They use the retired conditional branch counter instead of instruction counter, and then instruction steeping until at the correct address.
  • Is Something Bugging You?
    10 projects | news.ycombinator.com | 13 Feb 2024
    That'll work great for your Distributed QSort Incorporated startup, where the only product is a sorting algorithm.

    Formal software verification is very useful. But what can be usefully formalized is rather limited, and what can be formalized correctly in practice is even more limited. That means you need to restrict your scope to something sane and useful. As a result, in the real world running thousands of tests is practically useful. (Well, it depends on what those tests are; it's easy to write 1000s of tests that either test the same thing, or only test the things that will pass and not the things that would fail.) They are especially useful if running in a mode where the unexpected happens often, as it sounds like this system can do. (It's reminiscent of rr's chaos mode -- https://rr-project.org/ linking to https://robert.ocallahan.org/2016/02/introducing-rr-chaos-mo... )

  • When "letting it crash" is not enough
    4 projects | news.ycombinator.com | 7 Feb 2024
    The approach of check-pointing computation such that it is resumable and restartable sounds similar to a time-traveling debugger, like rr or WinDbg:

    https://rr-project.org/

    https://learn.microsoft.com/windows-hardware/drivers/debugge...

  • When I got started I debugged using printf() today I debug with print()
    3 projects | news.ycombinator.com | 30 Jan 2024
  • Rr: Record and Replay Debugger – Reverse Debugger
    1 project | news.ycombinator.com | 9 Jan 2024
  • OpenBSD KDE Plasma Desktop
    2 projects | news.ycombinator.com | 8 Jan 2024
    https://github.com/rr-debugger/rr?tab=readme-ov-file#system-...

What are some alternatives?

When comparing Octavian.jl and rr you can also consider the following projects:

OpenBLAS - OpenBLAS is an optimized BLAS library based on GotoBLAS2 1.13 BSD version.

CodeLLDB - A native debugger extension for VSCode based on LLDB

Symbolics.jl - Symbolic programming for the next generation of numerical software

rrweb - record and replay the web

owl - Owl - OCaml Scientific Computing @ https://ocaml.xyz

gef - GEF (GDB Enhanced Features) - a modern experience for GDB with advanced debugging capabilities for exploit devs & reverse engineers on Linux

Verilog.jl - Verilog for Julia

Module Linker - browse modules by clicking directly on "import" statements on GitHub

Automa.jl - A julia code generator for regular expressions

nbdev - Create delightful software with Jupyter Notebooks

StaticCompiler.jl - Compiles Julia code to a standalone library (experimental)

clog-cli - Generate beautiful changelogs from your Git commit history