-
-
Notifications
You must be signed in to change notification settings - Fork 5.5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Julia 1.4 fails on startup (AMD Phenom on Linux) #35215
Comments
Similar error here, on AMD Turion : uname -a err-julia-1.4.0-turion.txt Attaching also versioninfo from (working) julia-1.3.1 |
Did you happen to try RC1 or RC2? |
Fails on startup (QEMU Virtual CPU): $ julia
LLVM ERROR: 64-bit code requested on a subtarget that doesn't support it! $ uname -a
Linux aa614eb95626 4.15.0-91-generic #92-Ubuntu SMP Fri Feb 28 11:09:48 UTC 2020 x86_64 GNU/Linux Related to llvm/llvm-project@b7b353b? |
@ViralBShah : Just tried. Both RC1 and RC2 start normally. |
Has to be the new llvm binaries then I guess? v1.4.0-rc2...v1.4.0 |
It fails to start also on my pc (AMD Phenom II X6 1075T) on system running fedora 31.
|
It appears your machines are complaining at a Our typical processor support mantra so far has been "core2 or greater", but what that actually means hasn't been that well-defined; we often used only older instructions, but newer instructions keep getting used by various tools in our toolchains, and they often give significant speedups (As an example, GMP and MPFR, the libraries behind our BigInt capabilities, recently had a 2x performance difference when restricted to only older instructions). It appears that what's happened here is that the LLVM rebuild for 1.4.0 was done with a newer GCC version, which ended up using SSSE3 instructions where it previously didn't, and while that still passes the "core2 or greater" check (and thus was passed by our CI), it looks like you need a Bobcat/Bulldozer or later AMD processor to have SSSE3 support. |
In the end I compiled everything from scratch using the instructions on the julia repo. |
Dear Fabio, many thanks ! it works for my Turion II M640 !
Le 23/03/2020 à 23:50, Fabio Mazza a écrit :
…
In the end I compiled everything from scratch using the instructions
on the julia repo.
I've uploaded the package I created to:
https://github.com/fabmazz/julia/releases/tag/v1.4.0-amd10 <url>
If you share the same microarchitecture, it should work.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
<#35215 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AH2XLAXJMJSOBFHYMR52N3DRI7RR7ANCNFSM4LRFB5WQ>.
|
One of the things that this issue brings up is that we should probably formalize our informal min-CPU requirements. As @staticfloat says, we always assume something like It may be that we have to drop older architectures and formalize what we require. I know it would be terrible for some users with systems like those in this issue - but perhaps we suggest they build from source. There are further ramifications beyond just Julia itself in the entire BinaryBuilder ecosystem where similar assumptions are perhaps being made. |
I agree.
I think it should be made clear which CPU instructions Julia's official
binary requires in order to run properly, and how to check if one's CPU is
supported.
Providing other builds for older CPUs should be great, also.
Il Mar 24 Mar 2020, 15:54 Viral B. Shah <[email protected]> ha
scritto:
… One of the things that this issue brings up is that we should probably
formalize our informal min-CPU requirements. As @staticfloat
<https://github.com/staticfloat> says, we always assume something like
core2 when we build all our binaries - and it sounds like some of these
AMD systems are not compatible - since they don't have the newer
instructions.
It may be that we have to drop older architectures and formalize what we
require. I know it would be terrible for some users with systems like those
in this issue - but perhaps we suggest they build from source. There are
further ramifications beyond just Julia itself in the entire BinaryBuilder
ecosystem where similar assumptions are perhaps being made.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
<#35215 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/ADMONLPUABPVAWBD3W62BUDRJDCTLANCNFSM4LRFB5WQ>
.
|
@fabmazz Thank you very much. Your binary did not work for me because your libc6 is too recent for my computer, but I recompiled with |
👍 Had the same issue when I updated to Julia v1.4 for running simulations on a HPC cluster that has some old AMD CPU (model: AMD Opteron(tm) Processor 6176). It would be great if this could be solved so that noob users like me can use Julia v1.4 without trying to build from source with some flags that I don't understand to be honest (embarassed noob here 😅) I will personally be reverting to using Julia v1.3 because that's much easier for me. But it would be great to be able to not have to do that 😃 |
I agree with briochemc. K10 is not so old nor exotic. Forgetting these architectures would be very bad for Julia dissemination. Meanwhile, you can use 1.4.0-rc2 |
I got that but I had 1.3.1 already installed, so I just reverted back to using it because that's the easiest in my case. |
It was pretty well defined (based on codegen) as sse2. |
I have a 48 CPU machine with (according to
but still julia-1.4.0 won't run. However, the above provided version 1.4.0-rc2 actually does run. |
1.4.0-rc2 didn't use the same LLVM build. |
I'm using a old AMD processor (Opteron 2374 HE) and encountered this problem. By the way, Linux binary failes to start, but FreeBSD binary works well. |
AMD Athlon(tm) II X4 630 Processor using Manjaro Linux. A major issue like this should not go unfixed for over a month. `Invalid instruction at 0x7f8e638869f8: 0x66, 0x0f, 0x3a, 0x0f, 0xc0, 0x08, 0x0f, 0x83, 0x61, 0x05, 0x00, 0x00, 0x48, 0xc1, 0xe0 signal (4): Illegal instruction |
@gsagoo: Demanding fixes and "threatening" to go away doesn't make anyone more inclined to do free work for you. If you really want this fixed, you are entirely welcome to submit a fix yourself. |
That's right of course, nobody should expect problems to be solved
instantaneously by the authors, but since the problem resides in the LLVM
libraries bundled with the official binary (not the language itself, or
anything that can be fixed with a pull request, from my point of view), I
think the solution has to be implemented by the maintainers themselves.
Please correct me if I'm wrong.
I feel this is an important issue, especially with people that aren't very
good with technology, who see just a "crash" and would probably renounce
using Julia, thinking it's broken.
Il Dom 19 Apr 2020, 18:08 Stefan Karpinski <[email protected]> ha
scritto:
… Demanding fixes and "threatening" to go away doesn't make anyone more
inclined to do free work for you. If you really want this fixed, you are
entirely welcome to submit a fix yourself.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
<#35215 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/ADMONLPBJ6YVMZD3SWM2D7TRNMOY7ANCNFSM4LRFB5WQ>
.
|
Sure, it could be improved in several ways, but that doesn't justify people being ungrateful and demanding about it. Minimum requirements should be documented clearly, and if a processor isn't supported, it would be better to just print a message saying that. And while a maintainer needs to merge any changes to fix this, this project is open source, you're using it for free and if you want something fixed, you can do the work to fix it instead of demanding that people you don't pay a dime to do it for you. If you're going to ask for fixes, at least be polite. |
A place where folks in this thread can help is in documenting the minimum requirements and linking those prominently in various places. |
@StefanKarpinski Whether someone fixes the issue or not is up to them, you're right I am not paying anyone to maintain it, its their choice, Its not a "threat" to yourself or anyone else whether I leave Julia, its my freedom of choice to leave, I certainly don't owe Julia any allegiance. |
This is only an issue for hardware that is over a decade old and which we do not officially support. A better error message and documenting that we don't support such old hardware would be good. |
@gsagoo Your point is absolutely right, and I am in full agreement that it isn't a great experience and people will be unhappy and leave. I think your comment was made in the right spirit, which your reply reinforces.
It is only when I saw this line above, that I immediately felt uncomfortable. My first thought was to write back something snarky. After all, these are 10 year old architectures that are unsupported, and affects a very small number of users (hence not a major issue). But then I had to tell myself that saying all this wouldn't help, and I should stay focussed on trying to address the issue. I knew immediately that given the extremely small number of compiler contributors we have, a fix in the llvm/compiler domain was not a good idea immediately - although it will happen eventually. In the meanwhile, what's the best way we can warn users -and hence my subsequent reply about focussing on documentation and communication. That is something a lot more people can engage in and help with. The reason I point this out is only in response to the follow-on conversation above. Broad sweeping statements like that which overstate the issue do not help the project, gets everyone discussing all sorts of other things, and make things look bad to those passing by. |
I try to compile with some suggestions. Still fails. My cpu is; model name : AMD Phenom(tm) II X4 955 Processor. I'm using gcc verrsion gcc (Ubuntu 8.4.0-1ubuntu1~18.04) 8.4.0 I'm usiing GNU Fortran (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0 I use this Make.user file also: MARCH=amdfam10 This is error that I got; It does not work either. What else can I do? |
No, this issue is about the generic binary you download doesn't work on all x64 CPUs. The flag you use to compile openblas isn't the issue that causes it. If you have questions about how to compile julia yourself, please post the question on http://discourse.julialang.org/. |
What's the verdict now regarding the solution to this issue? There was an earlier suggestion to specifically state what CPUs are not supported. Is that going to be the outcome? If yes, then it is relevant for this issue, that someone produces a Julia binary that will fit all x86-64 CPUs, including the old ones that the official binary does not support. |
I have been running my own experiments which verify Yichao's findings; namely that newer GCC versions get very good performance with even the restricted I've been trying to get us to come to a decision on the triage slack channel, but so far the right people have not been online to discuss it yet. But I think most likely what will happen is that Julia 1.6 will roll back the requirement for Julia itself, especially as we have new support coming into BB (it's not built yet, but should be ready somewhere around the 1.6 release timeframe) for building microarchitecture-specific tarballs for packages that really need it. This will allow us to get the best of both worlds for our binary dependencies as well. I am not 100% certain this will happen, as some other devs may have usecases that preclude this, but I think it likely this will happen. I do not think this issue will be solved for Julia 1.4 or 1.5, as it's too late in the release cycle to go and rebuild all the dependencies. For the time being, to get a Julia that runs on these older machines, the best solution is still to build from source with |
Well, just build the generic binary with
Rebuilding everything without the march set is still a solution, and I assume there's a way to reset the database to trigger that. It probably won't be fast but it can be done and it won't block any julia release since those will not use the BB binaries. |
And really it won't even be everything. It's everything after JuliaPackaging/Yggdrasil#358 is deployed. It should take no longer than 5 months o rebuild on a super low capacity and probably much faster. And the sooner the rebuild start the shorter it'll take. |
No, that's not acceptable.
And no even if that's the case, the build instruction when you want to compile julia on your own is still a different issue. It'll indeed get more important if the requirement changes but discussing it does not help reaching a decision or solution on this issue. It very much still deserve an answer which is why I suggested you to open a thread on discourse and I (and many others) can answer all the questions you may have about what target to use. |
I have a 6 year old dell r710 for my homelab and I can't use Julia because of this. I am sad. Gotta really recompile the binary because of some LLVM nonsense? That sucks bigly |
@stochastic-thread there's a way for you to use Julia, even latest versions(s): 32-bit Julia has tier 1 support on Windows (and tier 2 on Linux), and should work with even very old CPUs. Assuming you really need, or just want a 64-bit version, I see a comment linking to the latest, I think, Julia version (currently) available for older CPUs (up to 12 year old AMDs): #35215 (comment)
|
No #36502 has nothing to do with this issue. Julia has always been working on these old CPU's. This is purely a build problem and requires absolutely no change in julia itself. |
Dear stochastic-thread,
If you are using Linux on you Dell, you could use the version I did
compile for my own use
( julia-1.5.0-linux64-barcelona.tar.gz )
that I just uploaded to :
http://dl.free.fr/tO9fUNCAj
(should stay up one month after last up/download)
Good luck and best wishes,
JDAD
Le 07/08/2020 à 09:43, stochastic-thread a écrit :
…
I have a 6 year old dell r710 for my homelab and I can't use Julia
because of this.
I am sad. Gotta really recompile the binary because of some LLVM
nonsense? That sucks bigly
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
<#35215 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AH2XLAW6XZ2JJPT7EU2RRODR7OWBNANCNFSM4LRFB5WQ>.
|
Thank you, appreciate it! |
We recently rebuilt all the GCC shards for BinaryBuilder, changing the default microarchitecture back to The dependencies of Julia itself (such as LLVM, GMP, MPFR, etc...) must be rebuilt with these new BB GCC shards, I will collect here the list of things that need to be rebuilt: Julia's binary dependencies that need to be rebuilt:
Many of these will be naturally rebuilt over the course of us working on the 1.6 release, but rebuilding the current versions with the new BB shards and backporting those new binaries onto the 1.5 release is definitely possible. If anyone is interested in doing that work, I'll be happy to coach them through it, it's quite simple, just a little rote and time-consuming. |
People are now reporting that Julia 1.5 does work on these older CPUs. Perhaps it just means that it doesn't segfault on startup. |
That was from an ArchLinux user who installed the |
Also working on Manjaro (which I think uses the same package as Arch for julia). |
Seeing people saying "it works now", I did a new test on my AMD Turion M640.
Stock julia effectively starts OK, but then fails when doing a version
info (or a Pkg update)...
***@***.*** tmp]$ ./julia-1.5.1/bin/julia
_
_ _ _(_)_ | Documentation: https://docs.julialang.org
(_) | (_) (_) |
_ _ _| |_ __ _ | Type "?" for help, "]?" for Pkg help.
| | | | | | |/ _` | |
| | |_| | | | (_| | | Version 1.5.1 (2020-08-25)
_/ |\__'_|_|_|\__'_| | Official https://julialang.org/ release
|__/ |
julia> versioninfo()
Invalid instruction at 0x7fd4d6697c07: 0x66, 0x0f, 0x3a, 0x0f, 0xc0,
0x08, 0x0f, 0x29, 0x84, 0x24, 0xb0, 0x03, 0x00, 0x00, 0xe8
signal (4): Illegal instruction
in expression starting at REPL[1]:1
_ZN4llvm17SLPVectorizerPass18tryToVectorizeListENS_8ArrayRefIPNS_5ValueEEERNS_13slpvectorizer7BoUpSLPEib
at /tmp/julia-1.5.1/bin/../lib/julia/libLLVM-9jl.so (unknown line)
_ZN4llvm17SLPVectorizerPass18tryToVectorizePairEPNS_5ValueES2_RNS_13slpvectorizer7BoUpSLPE
at /tmp/julia-1.5.1/bin/../lib/julia/libLLVM-9jl.so (unknown line)
_ZN4llvm17SLPVectorizerPass14tryToVectorizeEPNS_11InstructionERNS_13slpvectorizer7BoUpSLPE
at /tmp/julia-1.5.1/bin/../lib/julia/libLLVM-9jl.so (unknown line)
_ZL40tryToVectorizeHorReductionOrInstOperandsPN4llvm7PHINodeEPNS_11InstructionEPNS_10BasicBlockERNS_13slpvectorizer7BoUpSLPEPNS_19TargetTransformInfoENS_12function_refIFbS3_S8_EEE.constprop.1422
at /tmp/julia-1.5.1/bin/../lib/julia/libLLVM-9jl.so (unknown line)
_ZN4llvm17SLPVectorizerPass24vectorizeRootInstructionEPNS_7PHINodeEPNS_5ValueEPNS_10BasicBlockERNS_13slpvectorizer7BoUpS
...
jl_f__apply_latest at
/buildworker/worker/package_linux64/build/src/builtins.c:705
#invokelatest#1 at ./essentials.jl:710 [inlined]
invokelatest at ./essentials.jl:709 [inlined]
run_main_repl at ./client.jl:383
exec_options at ./client.jl:313
_start at ./client.jl:506
jfptr__start_51675 at /tmp/julia-1.5.1/lib/julia/sys.so (unknown line)
_jl_invoke at /buildworker/worker/package_linux64/build/src/gf.c:2214
[inlined]
jl_apply_generic at
/buildworker/worker/package_linux64/build/src/gf.c:2398
jl_apply at
/buildworker/worker/package_linux64/build/ui/../src/julia.h:1690 [inlined]
true_main at /buildworker/worker/package_linux64/build/ui/repl.c:106
main at /buildworker/worker/package_linux64/build/ui/repl.c:227
__libc_start_main at /lib64/libc.so.6 (unknown line)
_start at ./julia-1.5.1/bin/julia (unknown line)
Allocations: 5329383 (Pool: 5327226; Big: 2157); GC: 6
Illegal instruction (core dumped)
***@***.*** tmp]$
***@***.*** tmp]$ ./julia-1.5.1/bin/julia
_
_ _ _(_)_ | Documentation: https://docs.julialang.org
(_) | (_) (_) |
_ _ _| |_ __ _ | Type "?" for help, "]?" for Pkg help.
| | | | | | |/ _` | |
| | |_| | | | (_| | | Version 1.5.1 (2020-08-25)
_/ |\__'_|_|_|\__'_| | Official https://julialang.org/ release
|__/ |
***@***.***) pkg> up
Updating registry at `~/.julia/registries/General`
########################################################################
100.0%
Invalid instruction at 0x7fe20b68f2f1: 0x66, 0x0f, 0x3a, 0x0f, 0xc0,
0x08, 0x0f, 0x11, 0x40, 0xf0, 0x66, 0x0f, 0x6f, 0xc1, 0x4d
signal (4): Illegal instruction
in expression starting at none:0
_ZNSt6vectorIPN4llvm17MachineBasicBlockESaIS2_EE15_M_range_insertISt16reverse_iteratorIN9__gnu_cxx17__normal_iteratorIPS2_S4_EEEEEvSA_T_SC_St20forward_iterator_tag
at /tmp/julia-1.5.1/bin/../lib/julia/libLLVM-9jl.so (unknown line)
_ZN4llvm13LiveVariables23MarkVirtRegAliveInBlockERNS0_7VarInfoEPNS_17MachineBasicBlockES4_RSt6vectorIS4_SaIS4_EE
at /tmp/julia-1.5.1/bin/../lib/julia/libLLVM-9jl.so (unknown line)
...
#invokelatest#1 at ./essentials.jl:710 [inlined]
invokelatest at ./essentials.jl:709 [inlined]
run_interface at
/buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.5/REPL/src/LineEdit.jl:2355
jfptr_run_interface_70362 at /tmp/julia-1.5.1/lib/julia/sys.so
(unknown line)
_jl_invoke at /buildworker/worker/package_linux64/build/src/gf.c:2214
[inlined]
jl_apply_generic at
/buildworker/worker/package_linux64/build/src/gf.c:2398
run_frontend at
/buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.5/REPL/src/REPL.jl:1144
#38 at ./task.jl:356
jfptr_YY.38_71508 at /tmp/julia-1.5.1/lib/julia/sys.so (unknown line)
_jl_invoke at /buildworker/worker/package_linux64/build/src/gf.c:2214
[inlined]
jl_apply_generic at
/buildworker/worker/package_linux64/build/src/gf.c:2398
jl_apply at /buildworker/worker/package_linux64/build/src/julia.h:1690
[inlined]
start_task at /buildworker/worker/package_linux64/build/src/task.c:707
unknown function (ip: (nil))
Allocations: 4400767 (Pool: 4398553; Big: 2214); GC: 7
Illegal instruction (core dumped)
***@***.*** tmp]$
So I will keep using my "barcelona-arch-compiled" version ...
regards,
jdad
NB. The working recompiled binary :
***@***.*** ~]$ julia
_
_ _ _(_)_ | Documentation: https://docs.julialang.org
(_) | (_) (_) |
_ _ _| |_ __ _ | Type "?" for help, "]?" for Pkg help.
| | | | | | |/ _` | |
| | |_| | | | (_| | | Version 1.5.1 (2020-08-25)
_/ |\__'_|_|_|\__'_| |
|__/ |
julia> versioninfo()
Julia Version 1.5.1
Commit 697e782* (2020-08-25 20:08 UTC)
Platform Info:
OS: Linux (x86_64-mageia-linux-gnu)
CPU: AMD Turion(tm) II Ultra Dual-Core Mobile M640
WORD_SIZE: 64
LIBM: libopenlibm
LLVM: libLLVM-9.0.1 (ORCJIT, amdfam10)
Environment:
JULIA_EDITOR = vim
julia>
PPS.
Le 09/09/2020 à 18:21, James Tappin a écrit :
…
People are now reporting that Julia 1.5 does work on these
older CPUs. Perhaps it just means that it doesn't segfault on
startup.
That was from an ArchLinux user who installed the |julia|
<https://www.archlinux.org/packages/community/x86_64/julia/>
package from official ArchLinux repositories, which uses system
libraries
<https://github.com/archlinux/svntogit-community/blob/61468217f3f96bf9565f91d2c585ef0675d1f490/trunk/PKGBUILD#L43-L66>,
not those provided by BinaryBuilder
Also working on Manjaro (which I think uses the same package as Arch
for julia).
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
<#35215 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AH2XLAWBLDRKJSUV5U53W2LSE6TR3ANCNFSM4LRFB5WQ>.
|
As I said above, people not experiencing the problem are using a Julia version in Arch repositories that doesn't use libraries built with BinaryBuilder, which however can lead to other problems at a different point |
The good news is that the compiler have been upgraded but they have to work their way through everything. |
uname -a
Linux odie 4.15.0-88-generic #88-Ubuntu SMP Tue Feb 11 20:11:34 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
cpuinfo.txt
errjulia-1.4.txt
The text was updated successfully, but these errors were encountered: