-
-
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
Update ARM README #21737
Update ARM README #21737
Conversation
README.arm.md
Outdated
JULIA_CPU_TARGET=cortex-a57 | ||
override USE_SYSTEM_BLAS=1 | ||
override USE_SYSTEM_LAPACK=1 | ||
sudo apt-get install libssl-dev |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The ARMv8 part LGTM. I think this line should have been included in the general build instruction already?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
At the moment the 'general' build instructions are part of the 32-bit specific section, rather than the general content, since I haven't yet had to do anything other than install some standard libraries and run make
on the AArch64
target to which I have access.
I could move the 'general' instructions into the non-architecture-specific material, but note that at present these:
- make no distinction between requisite build software and system libraries which can be installed in order to avoid building dependencies
- refer to specific
gcc
versions that might not be appropriate (for example, I am using 5.4 onAArch64
) - don't specify
libssl
(is it just a peculiarity of the nVidia customised distribution that this wasn't installed by default?).
I can remove the general build software from the current list of requirements (and simply refer to the main Julia README), at which point this is fairly generic advice. But I don't have any AArch32 systems on which to test modified instructions, hence my hesitance to touch this section.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I was actually talking about the platform independent instructions. Actually, what deps links to libssl? This is likely linux specific and not arm/aarch64 specific.
make no distinction between requisite build software and system libraries which can be installed in order to avoid building dependencies
You mean the two lists in the section I linked above?
refer to specific gcc versions that might not be appropriate
It mentions >= 4.7, which should be appropriate.
don't specify libssl
It probably should in linux-specific part. Someone else with more experience building it on debian would probably know @tkelman @staticfloat
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I understand, and agree. Let me make the other changes and then come back to this. Will await advice regarding libssl
.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Installing libcurl4-openssl-dev is what does the trick on debian.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The question is more about which dependency links to libssl rather than what package to install. If libcurl is the one that needs libssl, it should be mentioned in the main README.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
nothing should need libssl any more
README.arm.md
Outdated
|
||
[Nightly builds](https://status.julialang.org/download/linux-arm) are | ||
available for ARMv7-A. | ||
Julia support for ARM is work-in-progress, though good results have been |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
As far as I'm concerned there's one known issue #12346 on AArch32 and no known issue on AArch64 and all tests passes on AArch64 (for longer than a year now). Also, almost all x86 specific optimizations have been implemented for AArch64 (with the exception of CPUID detection which is possible but there isn't any v8.1-v8.3 devices or devices with other interesting ISA extensions available for this to be used). I've also been routinely doing performance tests on AArch64 for a lot of my PRs.
While maybe AArch32 is still "work-in-progress" (especially armv6, I'd consider armv7 to be almost finished too) I'd consider AArch64 support to be finished at this point. This is also why I didn't feel like adding AArch64 specific instructions before.
README.arm.md
Outdated
[Nightly builds](https://status.julialang.org/download/linux-arm) are | ||
available for ARMv7-A. | ||
|
||
### Building Julia | ||
|
||
Julia has been compiled on several ARMv7 / Cortex A15 Samsung | ||
Chromebooks running Ubuntu Linux under Crouton, Raspberry Pi systems |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Since you are doing a overhaul of this file, we should update this too. No enabled tests should be failing (on armv7) (profile tests are disabled), backtraces are available.
README.arm.md
Outdated
@@ -23,10 +33,7 @@ If you get SIGILL during sysimg.o creation, it is likely that your cpu | |||
does not support VFP. File an issue on the Julia issue tracker with |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't think this is an issue anymore, especially not for native build. Mentioning that /proc/cpuinfo
content should be included for ARM bug report would be good though.
@@ -112,9 +119,9 @@ If building LLVM fails, you can download binaries from the LLVM website: | |||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
(A few lines up) I think we want LLVM 3.9.0 now.
I have addressed most of @yuyichao's comments, whilst changing as little as possible in the 32-bit section (which I cannot test). I am still unclear on the |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM. The libssl
one can probably stay there for now. I'm mainly asking because it might be worth putting in the generic one and it can certainly stay here for completeness.
README.arm.md
Outdated
# Building Julia on ARM | ||
A list of [known issues](https://github.com/JuliaLang/julia/labels/arm) for ARM is | ||
available. If you encounter difficulties, please create an issue including the output | ||
of `/proc/cpuinfo`. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
"Output of cat /proc/cpuinfo
command" or "Content of /proc/cpuinfo
".
what didn't work without libssl? we use mbedtls now. you may need certificates when building from source, but the ca-certificates package should be enough for those |
I don't recall the exact problem and have since deleted the log. I'll reflash the OS tomorrow and build from scratch to find out what was happening. |
I reflashed the board and built both Perhaps |
README.arm.md
Outdated
``` | ||
|
||
No further changes are required. | ||
A full multi-threaded build, including LLVM, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Probably more accurate to be called parallel build. It's not multi-threaded....
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Indeed. Fixed.
README.arm.md
Outdated
few hours. | ||
Julia has been successfully compiled on several ARMv7 / Cortex A15 Samsung Chromebooks | ||
running Ubuntu Linux under Crouton, a number of Raspberry Pi variants, Odroid boards, | ||
and the nVidia Jetson TX2. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Doesn't have to be included here (since not everyone has access to these system) but the aarch64 systems I've tested include Jetson TX1 (the first successful build), X-Gene1, Overdrive 3000 (buildbot), Cavium ThunderX (from packet.net).
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Would you like me to split the tested platforms between the AArch32/64 sections and add the platforms you've tested?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
That could be better I guess though not mandatory.
I have double checked and the
|
Following discussion in #21727 I have updated the ARM README to split the document into two distinct sections for 32- and 64-bit ARM architectures.
I haven't made any changes to the instructions for 32-bit architectures, but I have updated the instructions for nVidia TX2 introduced in #21727 to refer to
master
. The instructions (which can be simplified following updates to openlibm as per #21727 (comment)) currently apply equally torelease-0.6
.I did a local
make check-whitespace
this time!@yuyichao is this what you had in mind?
@tkelman please let me know if you want a PR against
release-0.6
.cc @ViralBShah