JuliaLang / julia

The Julia Programming Language
https://julialang.org/
MIT License
45.06k stars 5.43k forks source link

Support s390x #29637

Open Kaiden42 opened 5 years ago

Kaiden42 commented 5 years ago

Hello, I'm referring to Issue #21474. I've been working in programming for a few years at one of the largest German insurance companies (R+V Versicherung) and I'm very interested in Julia. Since our company strategically relies on the mainframe alongside other platforms, I asked our management if we could provide community access to our s390x machines. The management is also very interested that we gain experience with Julia because there are many mathematical operations in the company that need to be processed. So I talked to our z/OS and zLinux groups and we have some questions for you:

We would be happy to support the community.

cdluminate commented 5 years ago

Let me add a hint: s390x architecture lacks libunwind support. After disabling libunwind, the buildlog suggests that some work is needed in LLVM. https://launchpad.net/~lumin0/+archive/ubuntu/ppa/+sourcepub/9482958/+listing-archive-extra https://launchpadlibrarian.net/393051331/buildlog_ubuntu-cosmic-s390x.julia_1.0.1-2~u1_BUILDING.txt.gz

ViralBShah commented 5 years ago

I think it would be best to approaching ibm to support this commercially. In the past ibm has given small sums of money for a ppc port as a one off but not at a sustainable way.

ViralBShah commented 5 years ago

Also isn't it big endian? That would be a considerable porting effort, quite likely.

cdluminate commented 5 years ago

Also isn't it big endian? That would be a considerable porting effort, quite likely.

s390x is Big Endian.

ViralBShah commented 5 years ago

I think at this time the best thing would be to go with one of the 1.0 supported architectures. If supporting s390x is essential, it would be best to start a joint dialogue with IBM.

cfilleke commented 4 years ago
alfasst commented 3 years ago

Some update. Tried to build the latest version of Julia - v1.6.1 on an IBM Cloud Hyper Protect Virtual Server-iz. Got this error.

make[2]: *** No rule to make target 'trampolines/trampolines_s390x.S', needed by 'build/trampolines/trampolines_s390x.o'.  Stop.
/root/julia/deps/blastrampoline.mk:14: recipe for target 'scratch/blastrampoline-23de7a09bf354fe6f655c457bab5bf47fdd2486d/build-compiled' failed
make[1]: *** [scratch/blastrampoline-23de7a09bf354fe6f655c457bab5bf47fdd2486d/build-compiled] Error 2
Makefile:60: recipe for target 'julia-deps' failed
make: *** [julia-deps] Error 2
StefanKarpinski commented 2 years ago

That's a new feature where some simple assembly code is needed on each platform to allow dynamically swapping out BLAS libraries, which is a common request since many people want to use MKL on Intel. The trampoline code for s390x will need to be provided.