-
-
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 Build from Source / s390x Machine Architecture not Supported #21474
Comments
I don't think there's any plan to support it and it'll take someone with actual access to such system to do so. Assuming all of the dependencies can be supported on such arch already possibly with special flags/patches you should be able to check julia itself by specifying |
Sounds from gperftools/gperftools#761 like libunwind has not been ported to s390x. Do we have a way of building without libunwind? |
I don't think we have a easy we do do that since don't currently do that on any platforms. You can try specifying |
Using the suggested build command, it got one step further: Error:
Is there any configuration adjustment that could fix this error? |
USE_SYSTEM_LIBM |
There's a list of USE_SYSTEM_* flags here. You should probably start with enabling as many of them as possible. (Note that you don't need to enable system openlibm and libm at the same time. You should probably leave out libuv too since it's pretty fundamental and we carry non-trivial patch. Others should be find when taken from system install, some may fail tests but the build should be ok.) |
Thanks, the build made some good advance, compiling mostly all of the modules of Julia. Below my make command: Error:
Any hints how to fix it? |
Do you have a system pcre to replace this with? |
There appears to be up to date package for Ubuntu so that's probably the easiest solution https://answers.launchpad.net/ubuntu/+source/pcre2/10.21-1/+build/9537783 |
It looks like the pcre jit has some known issues on s390x and distros have been disabling it (https://patchwork.alpinelinux.org/patch/3322/ for example). That would lead to some ccall's you'd need to comment out in the Julia code, probably. |
I've done a new make with: |
.... well |
Thanks for fixing the LIBUNWIND package dependency, adding the DISABLE_LIBUNWIND=1 parameter. My llvm is at the following level:
|
I wouldn't bother with openblas at this stage of the port and just use the reference blas or atlas. But looks like this is now failing in the julia compiler as it builds the system image. |
Perhaps the instructions here will help debug: https://docs.julialang.org/en/stable/devdocs/backtraces/#segfaults-during-bootstrap-sysimg-jl |
OpenBLAS is in progress and currently partially enabled. |
Latest build of merged master version of Jul.13 2017 excluding the LIBUNWIND package. Need some assistance to debug and isolate the issue with module /usr/lib/julia/inference.ji:
Error message at build:
Attempt to debug:
|
Debug Attempts: Building with "--ignore-errors" flag, I get the following error: Seems to be similar to issue #18551 Question: Could the installation of LLVM version 3.9 (beta) solve this error? When building with: "make verbose=1 debug" I receive the following messages:
Hints for debug and error isolation are welcome. |
Getting the following error when building Julia from latest source distribution (Dec. 9, 2017) under the IBM system z platform (arch=s390x) with Ubuntu Linux 16.4 and LLVM at 3.9.1:
Error:
|
I got a step further doing a bypass of the regression tests by using:
|
I recommend doing |
Also, regarding the crashes you are seeing: the s390x system is a big-endian machine. There's a few places in the code where we assume little-endian. These are usually marked, but we haven't had a big-endian system to test any fixes and avoid bit-rot in that code. |
Thanks @vtjnash. The system version of GMP solved the issue and the build made some advance. It stopped at an issue regarding the version of automake package already installed under the Ubuntu 16.04 Linux. Here the error message:
The system automake version is 1.15, see:
|
Julia definitely would need a work-over to make things work on a big-endian system and in order to make sure that things continue to work, we would need CI on a big-endian machine somewhere. |
IBM offers a no charge account on the Linux system z platform for a use period of 3 month, for students and developers, a hosting offering that is known as LinuxONE Community Cloud. The service subscription can be done at the following web site [ https://developer.ibm.com/linuxone/ ]. It includes access to SuSE and Ubuntu Linux distributions. Previously I've done many open-source package ports onto the z platform, which almost all times completed successfully by doing a low-level build of all prerequisites, even when the CPU operates in "big-endian" mode. From this background, I feel rather confident that the port of Julia could work successfully. System z, specially the z14 model has very powerful multi-core processor which is promising environment for math and analytic tasks. |
I'm afraid 3 months is kind of useless – it's really not worth the effort to get a CI system running smoothly on infrastructure that we're only going to be able to use for 3 months. |
Don't get me wrong, I'd love to get Julia working on big-endian systems and run CI regularly to keep it working, but we just don't have the physical computing resources available to do that. |
Three months is the default, trial duration, not a hard limit. Many OSS projects have been granted guest VMs that don't expire for legitimate purposes, such as CI testers. |
That would be great if we could work something out like that. Beware, however, that the Julia test suite is a beast and causes problems on literally every CI system we use. |
IBMz mainframes are designed for big challenges. |
I'm currently focusing on "dockerized" installations on z, which is beneficial, as it does not harm the base Linux system, allowing such type of wild beast tests. Worst case of a crash, you just reboot from latest Docker container saved and you are ready for a new test, or experimental build. Docker and its dockerfile is also a good way to rebuild the image and install it on other instances of LinuxONE, in case of a trial account expiry. It also maps the way how a student will consume the service in a pre-packed environment. |
I've manually installed "automake" at latest release 1.15.1 (as requested by the previous error). Confirming the version:
Julia build command: The build advanced far beyond the previous error but again pointing to an issue with automake. Now requesting an older version of automake at level 1.14. Any idea how fix this error condition? Build log:
|
Is your system clock set correctly? You shouldn't need autoconf unless the system time is considerably off. |
Dear @vtjnash. Thanks for the direction. Checking here: The machine time looks accurate, the machine location is Poughkeepsie NY/US, the machine time is set to UTC, at Linux Ubuntu used for the build : date |
I've checked the system clock, which is fine. Next I've defined a system variable named APIVERSION with the value of 1.15.1 that matches the latest "automake" version installed in the Linux. After this change, the build went a step further and build process entered into a kind of "looping" condition. Here an attempt to break the loop with [ CTRL C]. A doubt. Why does it build the "curl" package, if usually this is part of the system environment? Support to isolate and fix this new error is welcome.
|
I've added some more packages to the Ubuntu system:
And added it as system available packages. The build again went a step further, but stopped at the following error:
Any suggestion how to fix the build of "flisp"? |
Is this error caused by the s390x environment? See similar issue #393. Any suggestion how to fix this error?
My gcc environment is:
Error:
|
Do you have libuv-devel installed? |
You need |
Checking the Ubuntu package managers choices:
Did not find any package named: What options do you recommend to run the make again? |
I am closing this issue for now, since a lot has changed since this was tried. My suggestion is try afresh after the 0.7 release and create a fresh issue for S390 for whoever is attempting it. |
I've rebuilt the OpenBLAS package from source and adjusted the IBM s390x architecture under Ubuntu 16 and executed a "make USE_SYSTEM_BLAS=1 NO_LAPACK=1" at the Julia source distribution, receiving the following error message:
Are there plans to add the s390x architecture to the Julia language distribution? Is there a configuration option to avoid, or bypass this error at the package make process? Our platform is LinuxOne on system z.
The text was updated successfully, but these errors were encountered: