-
-
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
WIP: build changes for ARM #7662
Conversation
This branch now fails for me during the sysimg build:
|
On top of a "arm-make3" branch that had been rebased atop "master", I also needed
to get past:
Which got me as far as trying to bootstrap, where things went:
|
This branch builds cleanly through bootstrap to REPL now, against LLVM FYI: OpenBLAS 0.2.11 builds cleanly on ARM, but I didn't change it in the inc file yet. With Unless someone has an objection, I am going to squash and force-push to this branch later today to clean things up a little bit. |
@ihnorton This is great! I will start a build tomorrow on a BBB and report back the results. |
468005c
to
b577ebe
Compare
Please squash. Should we also rebase to master? I am building it right now. |
If we can get basic julia to build with all the USE_SYSTEM_* flags first, that would be great. Then, we can slowly enable all the libraries one at a time. Quite likely, there will be openblas issues, since the ARM version is not well tested yet. |
It gave me a prompt successfully. This is huge! Tests are another story, but we can go step by step. Rebasing on master and trying again. |
I already rebased and pushed. Very cool. Good to have independent confirmation that it was not a 'shop :p |
I kind of cheated with the cpuid thing. The only way to get cpuid on ARM is via procinfo, because the registers require privileged mode on the CPU. There are a couple implementations that we could crib from, either in Android or OpenBLAS, but it is annoying because there is some subtle variability in the procinfo output depending on kernel version (I think). |
Is this something that we can fix by switching from calling cpuid to using the hwloc library? |
I squashed and rebased already. Suitesparse-dev seems to be missing on Ubuntu 12.04, so I have that set to
|
Ah - it does exist, but not for arm. |
Should we merge this into master and close this PR, and then work on getting all tests to pass separately? |
BTW, @ihnorton did you forget to push after squashing? I still see 9 commits. |
@@ -340,6 +334,11 @@ ifeq (exists, $(shell [ -e $(JULIAHOME)/Make.user ] && echo exists )) | |||
include $(JULIAHOME)/Make.user | |||
endif | |||
|
|||
# ARM specific configuration | |||
ifeq (exists, $(shell [ -e $(JULIAHOME)/ARM.inc ] && echo exists )) |
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.
shouldn't this be contingent on ifeq ($(ARCH), arm)
?
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.
yeah, good point.
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.
Also, this whole section is unnecessary if people follow the advise in the new README.arm
and have include $(JULIAHOME)/ARM.inc
in their Make.user
file
@tkelman the inclusion of ARM.inc is only on ARM boxes. Are you thinking about cross-compiling on ARM machines to something else? Eventually, ARM.inc will go away, and for now, the way it is included, I can't fully understand what it will break. Can you explain a bit more? |
@ihnorton I suggest keeping LLVM_ASSERTIONS around until we get all tests to pass and all libraries to build. |
I think we should just keep ARM.inc and tell people to Good point on assertions, that makes sense. It is great that system MPFR works, but I noticed that there are some missing functions in the system libblas. |
No, nothing to do with ARM, the existing cross-compiles from Linux to Windows would be broken by rearranging |
@tkelman I got rid of that commit. |
@ihnorton I am going through the libraries one by one. I expect all of them to build, and we do not have to depend on system provided ones. |
@ViralBShah yes, I think they should all build cleanly (there was a tiny patch required for OpenBLAS, but it is in the latest version). |
@pao hwloc seems to only provide CPU topology, not the CPU model. |
I looked at hwloc a couple weeks ago and it can give you CPU model (at least on the x86 machines I tried it on), but kind of buried and not as its primary output. I had to ask for everything about a given processor and some of the CPU model info was in the output. |
Hmm, have been playing with |
How much output do you get from |
The FFTW tests after building FFTW (not the Julia FFT) fail for me. |
This is the error. @stevengj Do you know about this on ARM?
|
ifneq ($(ARCH), ppc64) | ||
ifeq ($(ARCH), arm) | ||
FFTW_CONFIG += --enable-neon | ||
else ifneq ($(ARCH), ppc) |
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.
Should this still be ppc64?
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.
there is a condition above it for ARM..
a8293fb
to
3441335
Compare
I think this is good to merge now. |
I just noticed that libuv has |
Sounds reasonable. |
This currently compiles but does not bootstrap due to jl_cpuid. I was able to stub that out before, but I think it is more deeply entangled now.
See Makefile.user.fake for other options used.
See here for all of the packages I have installed.