4 ms·
For numeric code sure but its because Julia are using BLAS (or any other instruction for CPU/GPU u give to LLVM). Julia (no BLAS) -> In matmul its on pair with
by komuher 7y ago
For numeric code sure but its because Julia are using BLAS (or any other instruction for CPU/GPU u give to LLVM).
Julia (no BLAS) -> In matmul its on pair with Golang and Swift and a bit slower then RUST and Nim.
If u need BLAS then just use lib with that :)
- ViralBShah 7y agoProviding a well functioning BLAS experience in a language is a non-trivial task. Saying "just use lib" seems to severely understate this. How many go or swift or Nim issues discuss matmul vs the Julia repo?
- komuher 7y agoNim have Arraymancer https://github.com/mratsim/Arraymancer https://github.com/mratsim/Arraymancer sure it isn't easy but still most of top dogs have some libs supporting BLAS/CUDA etc.
- the_monster 7y agoPlease double check your grammar before posting
- komuher 7y agoSorry im not native :( I tried my best
- the_monster 7y agoNobody is expecting pristine English here, but basic grammar rules must be obeyed. I don't intend to discourage you. I am just asking you to review carefully before posting.
- DoreenMichele 7y agoThe account calling you out for poor grammar is only three hours old. Please don't take that as some reasonable representative of general HN culture or sentiment.
- dang 7y agoYour comment was fine. We're grateful to everyone who participates here even though English isn't their first language. HN is a highly international forum.
- rolph 7y agoI would just like to say welcome to HN. what happened to you is exactly what no one here should do.
- camgunz 7y agoPlease end your sentences with periods. It's basic grammar. Alternatively, relax a little.
- dang 7y agoPlease don't do this here.
- logicchains 7y agoNumeric code doesn't just mean matrix multiplication. If I have a random nested for loop, it will probably run at least as fast as those languages(apart from maybe Nim, never used it) if annotated with @simd and @inbounds. If I'm operating on a small array/matrix, then Julia will blow Go/Rust out of the water via stack-allocated static arrays (https://github.com/JuliaArrays/StaticArrays.jl https://github.com/JuliaArrays/StaticArrays.jl). These can't be implemented in Go because it doesn't support type parameters, let alone integer type parameters, and is only recently supported in Rust via const generics, which as far as I'm aware haven't stabilised yet.
- komuher 7y agoOk let me get it here cause there are a lot of misunderstanding my post on top. Swift have built in simd same about Rust https://github.com/apple/swift-evolution/blob/master/proposals/0229-simd.md https://github.com/apple/swift-evolution/blob/master/proposa... Nim have arraymancer https://github.com/mratsim/Arraymancer https://github.com/mratsim/Arraymancer @inbounds it is just compiler option u can use it in any language with LLVM backend i would be suprised if Julia will be faster then Rust/Swift or Nim in this regard. But True about GO in that particular case.
- logicchains 7y ago>@inbounds it is just compiler option u can use it in any language with LLVM backend i would be suprised if Julia will be faster then Rust/Swift or Nim in this regard. I agree it wouldn't necessarily be faster, but it also wouldn't be slower. Plus in Rust at least disabling bounds checks requires marking code as unsafe, which really gets the community's hackles up.
- steveklabnik 7y agoIt only requires unsafe if the compiler can’t figure out that removing them is okay. Often bounds checks are not emitted, even in safe code.
- eigenspace 7y ago
- ViralBShah 7y agoI'm having a hard time trying to follow your argument. You seem to have had some issues with Julia, and I would like to take those issues at face value. It would be nice if you could point to specific issues since we always like to fix things. However, in response to discussion about Julia having an integrated set of abstractions that provide high performance - you are discussing a collection of features in Rust, Go, Swift, Nim, TensorFlow, Jax, PyTorch, etc. For any single feature, there can always be some other thing that does it better. But it is unclear how that makes one system better than another.