WorksOnArm / equinix-metal-arm64-cluster

Arm and Equinix Metal have partnered to make powerful Neoverse based Armv8 bare metal infrastructure including latest generation Ampere systems — available for open source software developers to build, test and optimize for Arm64 architecture.
http://www.worksonarm.com
77 stars 12 forks source link

Building gollvm's releases, on Aarch64 #222

Closed advancedwebdeveloper closed 3 years ago

advancedwebdeveloper commented 3 years ago

Hi. There is a demand in building gollvm with "release", "debug" configurations. VM oriented builds, container images.

Suggesting both compilation on Aarch64 for Aarch64 and cross-compiling Aarch64->X86_64 (to diversify the usage).

There where some plans to adopt Clang, the linker (lld? gold is used, currently) for heterogenous (CPU + GPU) computing. Concurrency doesn't have any wage here - but parallelism surely does, for the CI pipeline workloads (watch compilation, linkage).

vielmetti commented 3 years ago

Hi @advancedwebdeveloper - if you are asking for access to the system for gollvm, please fill out and post the form at

https://github.com/WorksOnArm/cluster/blob/master/.github/ISSUE_TEMPLATE/custom.md

which will give us enough information to make a decision. (Or resubmit a new issue, picking that option).

pgmwoa commented 3 years ago

Hi @advancedwebdeveloper Please fill out the template and post the form at https://github.com/WorksOnArm/cluster/blob/master/.github/ISSUE_TEMPLATE/custom.md

advancedwebdeveloper commented 3 years ago

I will get back to this, during this week

pgmwoa commented 3 years ago

I will get back to this, during this week

Thanks

advancedwebdeveloper commented 3 years ago

name: Request access for building gollvm about: Build automation of https://go.googlesource.com/gollvm/ (llvm-goc and libgo) and end-user Go projects title: 'Aarch64 port of gollvm' labels: '' assignees: 'vielmetti, pgmwoa'


Ivan Serdyuk, local.tourist.kiev@gmail.com, Self-employed, Web developer/DevOps Than Macintosh, thanm@google.com, Google, Compiler developer Ian Lance Taylor, ian@airs.com, Google, Programmer Eric Fang, eric.fang@arm.com, ARM, Software Engineer

Gollvm is an LLVM-based Go compiler. It incorporates “gofrontend” (a Go language front end written in C++ and shared with GCCGO), a bridge component (which translates from gofrontend IR to LLVM IR), and a driver that sends the resulting IR through the LLVM back end.

Probably ARM centric Go developers

https://github.com/llvm/llvm-project.git https://go.googlesource.com/gollvm/ https://go.googlesource.com/gofrontend https://github.com/libffi/libffi.git https://github.com/ianlancetaylor/libbacktrace.git https://gmplib.org/download/gmp/gmp-6.2.0.tar.bz2 https://www.mpfr.org/mpfr-current/mpfr-4.1.0.tar.bz2 https://ftp.gnu.org/gnu/mpc/mpc-1.2.0.tar.gz

What would be required:

There are no specific issues, regarding general CI, for building gollvm (open for propositions). As for building Kubernetes, containerd and other CNCF projects - available testing pipelines, to test virtualization middleware, would be of help (hence that despite the same front-end calling conventions and the linker differs, compared to the main-go)

Are you testing every check-in on arm64? (Would you like to?) If so, share a public URL of a CI dashboard. Not sure what this means, really.

There where some tryouts to use Github Actions (for x86_64, on Azure): https://github.com/advancedwebdeveloper/clang_test_cpu_features/blob/main/.github/workflows/llvm.yml If you are providing https://docs.github.com/en/free-pro-team@latest/actions/hosting-your-own-runners/about-self-hosted-runners , on ARM servers - we could give in a try.

I am heading to contribute into i686 support (unrelated to this request). My interest is in contributing into both Golang's language front-end and specific back-ends. I am interested to promote gollvm among the owners of small and intermediate sized businesses (various domains).

vielmetti commented 3 years ago

attn @pgmwoa @kushalkoolwal

Thanks, we'll look at this and put it on our agenda for today's meeting (2020-W48).

advancedwebdeveloper commented 3 years ago

Do you expect me to join, today? In any case: I could attend a conf call, on some date - but I would have to know when.

vielmetti commented 3 years ago

@advancedwebdeveloper This has been approved, look for project setup, with a goal of getting that done today pending inventory confirmation.

For a conference call, schedule a time via my Calendly - https://calendly.com/evielmetti . If no time zone slots are suitable, let me know and I'll open up a few more hours earlier in my day.

There are two possible machine types, c1.large.arm (96-core ThunderX) and c2.large.arm (32-core eMag). Consider getting one of each of them, as other Go projects have found the c1 system with its large number of slow cores an excellent platform for testing parallelism and ensuring that you don't have race conditions.

advancedwebdeveloper commented 3 years ago

Ed, that for elaborating.

It would be require to check available CPU features, as Clang identifies those.

Could you try to build & run https://gist.github.com/advancedwebdeveloper/09033869445a09a2e297a73387d46c41 , on each server ?

The output would contain CPU features prefixed with a "+" or a "-" (available/not available). We would need that summary from both servers.

vielmetti commented 3 years ago

@advancedwebdeveloper

Ivan - you should be able to provision a server of the appropriate type on an on demand basis, running whichever operating system you choose, and run these codes directly. Provisioning takes about 10-15 minutes depending on server type. Just destroy the system when you're done, or keep it and let us know the server ID so that we can reserve it for you.

pgmwoa commented 3 years ago

Please refer to the welcome email for instructions on how to use the reserved server and the supporting resources.