Join GitHub today
GitHub is home to over 31 million developers working together to host and review code, manage projects, and build software together.
Sign upBinary release error in 2.6.32-573.7.1.el6.x86_64 GNU/Linux #135
Comments
This comment has been minimized.
This comment has been minimized.
|
Can you show the output of I build binaries with I can certainly put on binaries without SIMD support if that would help. (I was seeing if I could get away with not doing it, since it will be confusing to users. "Which one should I download?") |
BurntSushi
added
the
question
label
Sep 29, 2016
This comment has been minimized.
This comment has been minimized.
|
This comment has been minimized.
This comment has been minimized.
|
Yeah, looks like your CPU doesn't support |
BurntSushi
added
bug
and removed
question
labels
Sep 29, 2016
This comment has been minimized.
This comment has been minimized.
|
So... I want to fix this issue but I'm not sure what the best way is. I understand the technical issues at play, but I'm concerned more about the user experience here. Let me describe what I think is the problem. Today, if I'm on Linux and I want to download a Linux binary for ripgrep, I click on the "releases" link and there is exactly one choice that makes sense: In the future, if we add different downloads for various flavors of SIMD support, then will be multiple choices and none of them will be obvious. For example, you might have to choose between How can I fix this? I could add some notes about this in the release page, but I feel like that will be ineffective. |
BurntSushi
added
the
question
label
Nov 19, 2016
This comment has been minimized.
This comment has been minimized.
acmay
commented
Jan 10, 2017
|
It is not unheard of to have a program do run time detection of the supported instruction set and pick the correct functions as needed. Openssl with AES instruction support is one example. VLC and other video players are another good source of examples. Here they actually fork and test the instruction works since they don't trust the CPU ID bits to be correct. https://mailman.videolan.org/pipermail/vlc-devel/2009-September/066544.html So the general solution may be to create one binary that detects and loads the correct arch specific module. I have no idea how to do that in rust, but I would like to hope it is possible without too many hoops. And hopefully it is just a small subset of the code that really needs the instructions for the performance boost. |
This comment has been minimized.
This comment has been minimized.
|
@acmay Ah, thanks for the update! Yup, Rust has a few cpuid crates that we could use to avoid running SSSE3 code if it's not available. The problem is actually a bit more sinister then that though. In particular, if I compile a binary using the equivalent of The only way to solve this problem for real is using target specific function attributes. (Which I just recently added to the Rust compiler.) This allows one to use SSSE3 vendor intrinsics on a function-by-function level without actually passing |
BurntSushi
referenced this issue
Jan 17, 2017
Closed
Core dump with 0.4.0 Linux x86_64 release binary #331
This comment has been minimized.
This comment has been minimized.
wiz
commented
Feb 2, 2017
|
I have an AMD CPU and get |
This comment has been minimized.
This comment has been minimized.
|
@wiz Can you show the output of |
This comment has been minimized.
This comment has been minimized.
wiz
commented
Feb 2, 2017
|
Sure,
According to wikipedia SSSE3 instructions are available only on APUs and maybe newer chips. |
This comment has been minimized.
This comment has been minimized.
|
@wiz OK, so it's the same issue as others. For others: there's no need to chime in if you got this error and you know your CPU doesn't support SSSE3. It's a known issue. The current work-around requires you to compile from source. |
This comment has been minimized.
This comment has been minimized.
wiz
commented
Feb 2, 2017
|
I know it is the same one. It's just dumping good bunch of AMD (those are mostly affected) users seems wrong. |
This comment has been minimized.
This comment has been minimized.
|
I agree. That's why this is an open issue. |
This comment has been minimized.
This comment has been minimized.
gblues
commented
Feb 24, 2017
|
I'm not a user of ripgrep, but I came across this while looking for something else entirely and thought of something that might help you out. Suggestion: package all versions of the binary in a single RPM and use an install-time script to figure out which one to actually use. ex:
This avoids having to manage complex state in a single binary, potentially having the performance gains from using SIMD lost by the capability checks, at the cost of a larger package. |
This comment has been minimized.
This comment has been minimized.
|
@gblues Unfortunately, RPMs only work on certain Linux distros, which makes it a non-starter. "Make packages for every Linux distro" is also a non-starter. |
This comment has been minimized.
This comment has been minimized.
pdf
commented
Aug 25, 2017
•
|
@BurntSushi perhaps keep the default build as the one that includes the latest SIMD, and denote the alternative builds with something like Worst case for users of modern processors who download the wrong version though is that they get a slightly less optimized build, right? Doesn't seem like a much of a big deal. |
This was referenced Dec 2, 2017
BurntSushi
referenced this issue
Jan 31, 2018
Closed
[Experiment] Use coresimd, runtime feature detection and a faster, shorter algorithm #37
BurntSushi
added a commit
that referenced
this issue
Mar 13, 2018
BurntSushi
closed this
in
1f70e91
Mar 13, 2018
This comment has been minimized.
This comment has been minimized.
jamesmudd
commented
Aug 24, 2018
|
In the release notes it says
I have downloaded the https://github.com/BurntSushi/ripgrep/releases/download/0.9.0/ripgrep-0.9.0-x86_64-unknown-linux-musl.tar.gz build but when I run it, it doesn't seem to take advantage of the CPU features available e.g.
The output of
So the CPU an
Maybe I have misunderstood but I expected that 0.9.0 would detect and use SMID and AVX? |
This comment has been minimized.
This comment has been minimized.
|
@jamesmudd It should be, yes. The The build instructions in the README indicate that some SIMD features are enabled at compile time (line counting and transcoding, specifically) while others are enabled at runtime (regex matching). The ideal is that they are all enabled at runtime, but we'll have to wait for the maintainers of the respective libraries to catch up and add support for runtime detection. The misleading output of
The only way to enable compile time SIMD/AVX is to build ripgrep yourself. See also: #1013 |
This comment has been minimized.
This comment has been minimized.
jamesmudd
commented
Aug 24, 2018
|
Thanks for the explanation sorry I didn't see the other bug. Ripgrep is a great product keep up the good work! |
jeosadn commentedSep 29, 2016
•
edited
When trying to run the ripgrep-0.2.1-x86_64-unknown-linux-musl.tar.gz release the following error happens:
I tried to build it locally but ran into too many issues with cargo and rust (I'm behind the company firewall with a weird proxy and certificate handling)