JuliaLang / julia

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

Darwin/ARM64 tracking issue #36617

Closed Keno closed 2 years ago

Keno commented 3 years ago

I figured it would be worth having a single issue to track all the known issues on Apple Silicon. I'll try to keep this list updated as things get fixed or people encounter additional issues.

yuyichao commented 3 years ago

Is the compiler enabling all the features available by default?

In another word, does it pass https://github.com/JuliaLang/julia/blob/a23a4ff08da5b6d95e9a35eee96e3260a452c02b/src/crc32c.c#L328 by default? Or do we have to do a +crc one way or another ourselves.

Keno commented 3 years ago

Here's what's enabled by default:

#define __ARM64_ARCH_8__ 1
#define __ARM_64BIT_STATE 1
#define __ARM_ACLE 200
#define __ARM_ALIGN_MAX_STACK_PWR 4
#define __ARM_ARCH 8
#define __ARM_ARCH_ISA_A64 1
#define __ARM_ARCH_PROFILE 'A'
#define __ARM_FEATURE_CLZ 1
#define __ARM_FEATURE_CRYPTO 1
#define __ARM_FEATURE_DIRECTED_ROUNDING 1
#define __ARM_FEATURE_DIV 1
#define __ARM_FEATURE_FMA 1
#define __ARM_FEATURE_IDIV 1
#define __ARM_FEATURE_LDREX 0xF
#define __ARM_FEATURE_NUMERIC_MAXMIN 1
#define __ARM_FEATURE_UNALIGNED 1
#define __ARM_FP 0xE
#define __ARM_FP16_ARGS 1
#define __ARM_FP16_FORMAT_IEEE 1
#define __ARM_NEON 1
#define __ARM_NEON_FP 0xE
#define __ARM_NEON__ 1
#define __ARM_PCS_AAPCS64 1
#define __ARM_SIZEOF_MINIMAL_ENUM 4
#define __ARM_SIZEOF_WCHAR_T 4

Since I doubt there'll be a mac without crc32, we should just add that to the default feature flags in our Makefile. For everything else we can do runtime detection with sysctl.

yuyichao commented 3 years ago

I'm surprised that it enables crypto but not crc.... Yeah, I don't think it's worth doing a runtime detection here.

And from https://github.com/JuliaLang/julia/pull/36592#issuecomment-656984903 it doesn't seem to provide all the features that LLVM may use

The features detectable currently appears to be

hw.optional.neon_fp16: fullfp16 hw.optional.armv8_1_atomics: lse hw.optional.armv8_crc32: crc hw.optional.armv8_2_fhm: fp16fml __ARM_FEATURE_CRYPTO (compile time): aes, sha2

The ones that should be supported on that CPU (all requirement from armv8.3-a) are jsconv, complxnum, rcpc, ccpp, rdm. Some of the floating point ones are quite intereting.

Also intereting that since fp16fml is reported the featureset is closer to that of a13 than a12. (that or the LLVM feature set for a12 is wrong...)


Anyway, this is probably a low priority item...

Keno commented 3 years ago

Looks like they're just shipping an old LLVM, e.g. if I try to build jsconv (just to see whether it would run) fatal error: error in backend: Cannot select: intrinsic %llvm.aarch64.fjcvtzs

yuyichao commented 3 years ago

Huh, which LLVM version do they have? Over at https://github.com/JuliaLang/julia/blob/a23a4ff08da5b6d95e9a35eee96e3260a452c02b/src/features_aarch64.h#L24 I was assuming as long as the feature is available in AArch64.td it's usable... Is that not the case? (and/or is that a mac only problem?)

Keno commented 3 years ago

Huh, which LLVM version do they have

I don't know. It claims to be LLVM 12, but Apple lies about versions. I'm building upstream clang now to try it out.

yuyichao commented 3 years ago

It also seems that although the feature was added in https://reviews.llvm.org/D54633 which is in LLVM 8.0 the intrinsic wasn't added until https://reviews.llvm.org/D64495 much later. Does that error mean that it's a recognized intrinsic but just isn't supported by the backend? I guess just writing inline assembly shoud be good enough for testing.

Keno commented 3 years ago

Fails upstream too.

Keno commented 3 years ago

Works with raw llc and +mattr though, so I'm gonna say it does exist.

yuyichao commented 3 years ago

... I thought the error you got is a backend one..... (so llc should behave the same as clang = = ....., unless clang emits the wrong IR...)

Keno commented 3 years ago

I manually added the correct mattr to llc. I also managed to get it to work with -mcpu=apple-a12 at the clang level (appears to default to apple-a7). I filed an issue with Apple to get a better error message as well as bumping the default.

yuyichao commented 3 years ago

Ah, OK. So you didn't set the target when running with clang.

Keno commented 3 years ago

I tried, but mattr=armv8.3-a+jsconv didn't seem to do it.

yuyichao commented 3 years ago
  From worker 14: While deleting: i8* %splitgep
  From worker 14: An asserting value handle still pointed to this value!
  From worker 14: UNREACHABLE executed at /Users/julia/julia/deps/srccache/llvm-10.0.0/lib/IR/Value.cpp:917!

Ah, this is where I've seen this issue... It's not Darwin or ARM/AArch64 specific and it's fixed by https://reviews.llvm.org/D84031

ViralBShah commented 3 years ago

Can we get a BB shard going without the Fortran compiler, and see how much of the BB ecosystem can be built?

ViralBShah commented 3 years ago

Just thinking out aloud here. The major use of Fortran in the julia build is to build LAPACK (part of the openblas build). We could have a Fortran to Julia translator and move LAPACK to Julia. Of course BB has a bunch of other fortran libraries, and there's lot of commercial software packages that need fortran compilers.

certik commented 3 years ago

We could have a Fortran to Julia translator and move LAPACK to Julia.

If anyone is interested in helping, I'll be happy to add and maintain Fortran to Julia translator in LFortran. We already have LLVM and C++ backends. It took us quite some time to get to this point, as a lot of infrastructure had to be figured out and implemented, but we now have a foundation of a production C++ implementation of the compiler and are making rapid progress in adding features. As an example of what works already, this Fortran code:

https://gitlab.com/lfortran/lfortran/-/blob/7384b0ff81eaa2043281e48ae5158d34fcbf26f6/integration_tests/arrays_04.f90

gets correctly translated to this C++ code (and it compiles and runs):

https://gitlab.com/lfortran/lfortran/-/blob/master/tests/reference/cpp-arrays_04-ae9bd17.stdout

The C++ translator itself is implemented here: https://gitlab.com/lfortran/lfortran/-/blob/7384b0ff81eaa2043281e48ae5158d34fcbf26f6/src/lfortran/codegen/asr_to_cpp.cpp, as you can see it is a simple visitor pattern over the Abstract Semantic Representation (ASR) which contains all the types and everything is figured out and ready for LLVM or C++ translation.

I don't like making predictions how long it will take us to be able to compile Lapack, but I am hoping it is in the range of months now.

Assuming we could translate Lapack to C++ (or Julia also) automatically and correctly and quickly in a few months, what would be the workflow?

I can imagine two workflows in the future:

Regarding speed and performance of the translated code, that is currently unclear to me whether there can be some obstacle that would prevent it to match the performance of the original Fortran code. But we will find out, and I would think it should be possible to translate in a way to keep the performance.

ViralBShah commented 3 years ago

LAPACK will keep moving upstream. So we have to keep running the translator on any new version - perhaps could even be integrated into BinaryBuilder. Performance shouldn't be a major problem - since 90% of the performance is anyways from calling the BLAS. The main problem will be testing correctness. Presumably the LAPACK tests translated + Julia tests may be sufficient to get started.

certik commented 3 years ago

@ViralBShah that makes sense. Regarding correctness: my goal is for people to use LFortran as a regular Fortran compiler via LLVM, which will ensure that the parsing -> AST -> ASR -> LLVM is all correct. The ASR -> C++ backend is thus starting from a well tested starting point (ASR) that has been exercised well via the LLVM route, so there will be bugs, but they will be well isolated, and engineering-wise I think this can be delivered and made robust. The ASR -> Julia backend would be similar.

I am very excited about this, and I will keep you updated. As I said, it will take us probably months to get something initially usable, and then it takes time to mature everything, so I don't want to give you false hope that it can fix your immediate problem; but I will work towards this, I think it will become very useful to a lot of people once it matures.

Keno commented 3 years ago

I think for actively developed upstream projects, we'd rather just use lfortran as a straight LLVM compiler. The automatic translation part mostly makes sense where people want to do new development in Julia.

claui commented 3 years ago

Just learned that there’s some ongoing effort at porting the GCC backend: https://github.com/iains/gcc-darwin-arm64

Keno commented 3 years ago

Yep, we're on top of it (https://github.com/JuliaPackaging/Yggdrasil/pull/1626), thanks!

ViralBShah commented 3 years ago

Should LLVM9 process ARM64 relocations incorrectly be marked done, since the linked PR is merged?

Keno commented 3 years ago

I've updated the tracking list with all items I currently know about.

ViralBShah commented 3 years ago

I wonder how well Julia will run on Rossetta 2.

Keno commented 3 years ago

Works ok, but at reduced perf of course.

angeris commented 3 years ago

Probably reduced performance, but the M1, 16GB is quite fast when compared to my 2015 13" MBP with an i5, even while on Rosetta.

I'm curious about Julia benchmarks even with Rosetta, and I might do them at some point in the coming weeks, but don't have a more recent computer to compare to.

ViralBShah commented 3 years ago

I'll be curious to see if the tests all pass.

angeris commented 3 years ago

That's a great question! Running the tests now.

angeris commented 3 years ago

Ok, the results are available here:

https://gist.github.com/angeris/f1263dde142f85b0270de71428cfbef8

Essentially, only one test failed, and here is the output of that:

(libuv) kqueue(): Too many open files
stress                             (1) |    24.44 |   0.04 |  0.2 |      93.66 |  1419.20
Worker 2 failed running test misc:
Some tests did not pass: 1280997 passed, 1 failed, 0 errored, 0 broken.
misc: Test Failed at /Applications/Julia-1.5.app/Contents/Resources/julia/share/julia/test/misc.jl:474
  Expression: Libc.errno() == 0x00c0ffee
   Evaluated: 0 == 0x00c0ffee
Stacktrace:
 [1] record(::Test.DefaultTestSet, ::Union{Test.Error, Test.Fail}) at /Users/julia/buildbot/worker/package_macos64/build/usr/share/julia/stdlib/v1.5/Test/src/Test.jl:775
 [2] (::var"#23#32")() at /Applications/Julia-1.5.app/Contents/Resources/julia/share/julia/test/runtests.jl:342
 [3] cd(::var"#23#32", ::String) at ./file.jl:104
 [4] top-level scope at /Applications/Julia-1.5.app/Contents/Resources/julia/share/julia/test/runtests.jl:75
 [5] include(::Function, ::Module, ::String) at ./Base.jl:380
 [6] include(::Module, ::String) at ./Base.jl:368
 [7] exec_options(::Base.JLOptions) at ./client.jl:296
 [8] _start() at ./client.jl:506

I'm not quite sure what is causing this "too many open files" (which appears to be a separate issue) but it may also be worth checking?

EDIT: The complete output is available here. As a side note, the timing results are probably not super useful since I have a few other things open and running.

jheinen commented 3 years ago

Did anyone manage to build Julia on macOS 11 arm64? I tried the master branch, which fails due to LLVM problems and then I tried release 1.5.3 which fails, too:

/usr/local/src/julia % make OPENBLAS_USE_THREAD=0 
/Applications/Xcode.app/Contents/Developer/usr/bin/make -C scratch/openblas-33f76a6c378681ac2af76b20e55ff682191a1937/ CC=clang -stdlib=libc++ -mmacosx-version-min=10.8 FC=gfortran -mmacosx-version-min=10.8 LD=ld RANLIB=ranlib TARGET=ARMV7 BINARY= USE_THREAD=0 NO_AFFINITY=1 CFLAGS= -O2 FFLAGS= -O2 -fPIC  LDFLAGS= -Wl,-rpath,'@loader_path/' MAKE_NB_JOBS=0
ar: creating archive ../libopenblas_armv7-r0.3.9.a
memory.c:1987:62: warning: format specifies type 'unsigned long' but the argument has type 'void *'
      [-Wformat]
       printf("error code=%d,\trelease->address=%lx\n",errsv,release->address);
                                                ~~~          ^~~~~~~~~~~~~~~~
1 warning generated.
make[3]: *** No rule to make target `../kernel/arm64/amin.S', needed by `samin_k.o'.  Stop.
make[2]: *** [libs] Error 1
*** Clean the OpenBLAS build with 'make -C deps clean-openblas'. Rebuild with 'make OPENBLAS_USE_THREAD=0' if OpenBLAS had trouble linking libpthread.so, and with 'make OPENBLAS_TARGET_ARCH=NEHALEM' if there were errors building SandyBridge support. Both these options can also be used simultaneously. ***
make[1]: *** [scratch/openblas-33f76a6c378681ac2af76b20e55ff682191a1937/build-compiled] Error 1
make: *** [julia-deps] Error 2
s-valent commented 3 years ago

@jheinen it seems like julia is not ready yet. For x86 it's enough to just install gcc via homebrew and gcc10 can now be installed on arm.

I get some strange errors which I'm not sure how to fix on CC src/runtime_ccall.o step.

output ``` julia → make % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 561 100 561 0 0 655 0 --:--:-- --:--:-- --:--:-- 654 100 1409k 100 1409k 0 0 255k 0 0:00:05 0:00:05 --:--:-- 332k % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 509 100 509 0 0 757 0 --:--:-- --:--:-- --:--:-- 756 100 1068k 100 1068k 0 0 293k 0 0:00:03 0:00:03 --:--:-- 483k % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 497 100 497 0 0 730 0 --:--:-- --:--:-- --:--:-- 729 100 471k 100 471k 0 0 241k 0 0:00:01 0:00:01 --:--:-- 1258k % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 511 100 511 0 0 788 0 --:--:-- --:--:-- --:--:-- 787 100 32323 100 32323 0 0 23662 0 0:00:01 0:00:01 --:--:-- 23662 WARNING: sha512 checksum for LibOSXUnwind.v0.0.6+1.aarch64-apple-darwin.tar.gz not found in deps/checksums/, autogenerating... % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 503 100 503 0 0 734 0 --:--:-- --:--:-- --:--:-- 733 100 165k 100 165k 0 0 92847 0 0:00:01 0:00:01 --:--:-- 342k % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 497 100 497 0 0 746 0 --:--:-- --:--:-- --:--:-- 745 100 8460 100 8460 0 0 6768 0 0:00:01 0:00:01 --:--:-- 6768 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 503 100 503 0 0 553 0 --:--:-- --:--:-- --:--:-- 553 100 39.9M 100 39.9M 0 0 1572k 0 0:00:25 0:00:25 --:--:-- 2728k % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 501 100 501 0 0 691 0 --:--:-- --:--:-- --:--:-- 691 100 1472k 100 1472k 0 0 437k 0 0:00:03 0:00:03 --:--:-- 754k % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 531 100 531 0 0 699 0 --:--:-- --:--:-- --:--:-- 698 100 6165k 100 6165k 0 0 446k 0 0:00:13 0:00:13 --:--:-- 497k % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 493 100 493 0 0 711 0 --:--:-- --:--:-- --:--:-- 711 100 447k 100 447k 0 0 229k 0 0:00:01 0:00:01 --:--:-- 395k % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 503 100 503 0 0 689 0 --:--:-- --:--:-- --:--:-- 689 100 1450k 100 1450k 0 0 483k 0 0:00:03 0:00:03 --:--:-- 1000k % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 501 100 501 0 0 700 0 --:--:-- --:--:-- --:--:-- 699 100 212k 100 212k 0 0 122k 0 0:00:01 0:00:01 --:--:-- 675k % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 503 100 503 0 0 717 0 --:--:-- --:--:-- --:--:-- 718 100 442k 100 442k 0 0 226k 0 0:00:01 0:00:01 --:--:-- 391k % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 503 100 503 0 0 730 0 --:--:-- --:--:-- --:--:-- 730 100 692k 100 692k 0 0 300k 0 0:00:02 0:00:02 --:--:-- 465k % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 501 100 501 0 0 632 0 --:--:-- --:--:-- --:--:-- 631 100 676k 100 676k 0 0 290k 0 0:00:02 0:00:02 --:--:-- 768k % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 459 100 459 0 0 639 0 --:--:-- --:--:-- --:--:-- 639 100 216k 100 216k 0 0 119k 0 0:00:01 0:00:01 --:--:-- 244k % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 495 100 495 0 0 676 0 --:--:-- --:--:-- --:--:-- 675 100 366k 100 366k 0 0 112k 0 0:00:03 0:00:03 --:--:-- 172k % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 497 100 497 0 0 591 0 --:--:-- --:--:-- --:--:-- 590 100 178k 100 178k 0 0 96422 0 0:00:01 0:00:01 --:--:-- 861k ar: creating archive libutf8proc.a % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 497 100 497 0 0 664 0 --:--:-- --:--:-- --:--:-- 663 100 135k 100 135k 0 0 84907 0 0:00:01 0:00:01 --:--:-- 276k % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 499 100 499 0 0 709 0 --:--:-- --:--:-- --:--:-- 708 100 616k 100 616k 0 0 296k 0 0:00:02 0:00:02 --:--:-- 847k % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 497 100 497 0 0 764 0 --:--:-- --:--:-- --:--:-- 763 100 4183 100 4183 0 0 3428 0 0:00:01 0:00:01 --:--:-- 4084k % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 497 100 497 0 0 705 0 --:--:-- --:--:-- --:--:-- 704 100 368k 100 368k 0 0 193k 0 0:00:01 0:00:01 --:--:-- 588k % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 497 100 497 0 0 737 0 --:--:-- --:--:-- --:--:-- 736 100 18915 100 18915 0 0 15241 0 0:00:01 0:00:01 --:--:-- 18.0M % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 497 100 497 0 0 711 0 --:--:-- --:--:-- --:--:-- 711 100 28737 100 28737 0 0 20323 0 0:00:01 0:00:01 --:--:-- 57704 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 497 100 497 0 0 757 0 --:--:-- --:--:-- --:--:-- 756 100 20449 100 20449 0 0 14991 0 0:00:01 0:00:01 --:--:-- 14991 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 497 100 497 0 0 742 0 --:--:-- --:--:-- --:--:-- 742 100 9128 100 9128 0 0 7232 0 0:00:01 0:00:01 --:--:-- 45640 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 497 100 497 0 0 741 0 --:--:-- --:--:-- --:--:-- 740 100 31354 100 31354 0 0 23139 0 0:00:01 0:00:01 --:--:-- 23139 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 497 100 497 0 0 738 0 --:--:-- --:--:-- --:--:-- 737 100 12559 100 12559 0 0 10285 0 0:00:01 0:00:01 --:--:-- 11.9M % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 377 100 377 0 0 749 0 --:--:-- --:--:-- --:--:-- 749 100 164 100 164 0 0 189 0 --:--:-- --:--:-- --:--:-- 189 100 5671 100 5671 0 0 4465 0 0:00:01 0:00:01 --:--:-- 16202 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 369 100 369 0 0 729 0 --:--:-- --:--:-- --:--:-- 729 100 160 100 160 0 0 179 0 --:--:-- --:--:-- --:--:-- 597 100 10808 100 10808 0 0 8503 0 0:00:01 0:00:01 --:--:-- 8503 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 387 100 387 0 0 754 0 --:--:-- --:--:-- --:--:-- 752 100 169 100 169 0 0 186 0 --:--:-- --:--:-- --:--:-- 186 100 5863 100 5863 0 0 4616 0 0:00:01 0:00:01 --:--:-- 4616 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 385 100 385 0 0 753 0 --:--:-- --:--:-- --:--:-- 753 100 168 100 168 0 0 187 0 --:--:-- --:--:-- --:--:-- 187 100 4672 100 4672 0 0 3699 0 0:00:01 0:00:01 --:--:-- 17563 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 387 100 387 0 0 751 0 --:--:-- --:--:-- --:--:-- 751 100 169 100 169 0 0 191 0 --:--:-- --:--:-- --:--:-- 1069 100 11446 100 11446 0 0 9134 0 0:00:01 0:00:01 --:--:-- 9134 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 385 100 385 0 0 754 0 --:--:-- --:--:-- --:--:-- 753 100 168 100 168 0 0 191 0 --:--:-- --:--:-- --:--:-- 191 100 4672 100 4672 0 0 3776 0 0:00:01 0:00:01 --:--:-- 3776 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 377 100 377 0 0 739 0 --:--:-- --:--:-- --:--:-- 737 100 164 100 164 0 0 188 0 --:--:-- --:--:-- --:--:-- 188 100 5687 100 5687 0 0 4564 0 0:00:01 0:00:01 --:--:-- 5553k % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 387 100 387 0 0 767 0 --:--:-- --:--:-- --:--:-- 767 100 169 100 169 0 0 192 0 --:--:-- --:--:-- --:--:-- 165k 100 5863 100 5863 0 0 4747 0 0:00:01 0:00:01 --:--:-- 4747 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 373 100 373 0 0 731 0 --:--:-- --:--:-- --:--:-- 731 100 162 0 162 0 0 180 0 --:--:-- --:--:-- --:--:-- 504 100 5591 100 5591 0 0 4409 0 0:00:01 0:00:01 --:--:-- 4409 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 387 100 387 0 0 750 0 --:--:-- --:--:-- --:--:-- 748 100 169 100 169 0 0 187 0 --:--:-- --:--:-- --:--:-- 187 100 4698 100 4698 0 0 3050 0 0:00:01 0:00:01 --:--:-- 4587k % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 391 100 391 0 0 765 0 --:--:-- --:--:-- --:--:-- 765 100 171 100 171 0 0 193 0 --:--:-- --:--:-- --:--:-- 1036 100 19091 100 19091 0 0 15032 0 0:00:01 0:00:01 --:--:-- 15032 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 389 100 389 0 0 761 0 --:--:-- --:--:-- --:--:-- 759 100 170 100 170 0 0 192 0 --:--:-- --:--:-- --:--:-- 192 100 5911 100 5911 0 0 4654 0 0:00:01 0:00:01 --:--:-- 4654 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 379 100 379 0 0 740 0 --:--:-- --:--:-- --:--:-- 738 100 165 0 165 0 0 185 0 --:--:-- --:--:-- --:--:-- 185 100 5703 100 5703 0 0 4462 0 0:00:01 0:00:01 --:--:-- 32039 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 381 100 381 0 0 750 0 --:--:-- --:--:-- --:--:-- 750 100 166 100 166 0 0 188 0 --:--:-- --:--:-- --:--:-- 162k 100 4594 100 4594 0 0 3620 0 0:00:01 0:00:01 --:--:-- 3620 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 401 100 401 0 0 742 0 --:--:-- --:--:-- --:--:-- 741 100 176 100 176 0 0 192 0 --:--:-- --:--:-- --:--:-- 192 100 6151 100 6151 0 0 4539 0 0:00:01 0:00:01 --:--:-- 4539 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 375 100 375 0 0 733 0 --:--:-- --:--:-- --:--:-- 732 100 163 100 163 0 0 184 0 --:--:-- --:--:-- --:--:-- 184 100 5639 100 5639 0 0 4461 0 0:00:01 0:00:01 --:--:-- 32595 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 405 100 405 0 0 748 0 --:--:-- --:--:-- --:--:-- 748 100 178 100 178 0 0 187 0 --:--:-- --:--:-- --:--:-- 173k 100 376 100 376 0 0 285 0 0:00:01 0:00:01 --:--:-- 285 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 453 100 453 0 0 884 0 --:--:-- --:--:-- --:--:-- 883 100 202 100 202 0 0 227 0 --:--:-- --:--:-- --:--:-- 227 100 22679 100 22679 0 0 17662 0 0:00:01 0:00:01 --:--:-- 17662 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 393 100 393 0 0 764 0 --:--:-- --:--:-- --:--:-- 763 100 172 100 172 0 0 191 0 --:--:-- --:--:-- --:--:-- 191 100 3725 100 3725 0 0 2905 0 0:00:01 0:00:01 --:--:-- 3637k Creating usr/etc/julia/startup.jl Copying in usr/share/man/man1/julia.1 /Users/valent/Library/julia/contrib/install.sh 755 /Users/valent/Library/julia/contrib/julia-config.jl /Users/valent/Library/julia/usr/share/julia/ PERL base/pcre_h.jl PERL base/errno_h.jl PERL base/build_h.jl.phony PERL base/features_h.jl PERL base/features_h.jl PERL base/features_h.jl PERL base/file_constants.jl PERL base/uv_constants.jl PERL base/version_git.jl.phony CC cli/loader_exe.o CC cli/loader_lib.o CC cli/loader_trampolines.o LINK usr/lib/libjulia.1.7.dylib LINK usr/bin/julia CC src/support/hashing.o CC src/support/timefuncs.o CC src/support/ptrhash.o CC src/support/operators.o CC src/support/utf8.o CC src/support/ios.o CC src/support/htable.o CC src/support/bitvector.o CC src/support/int2str.o CC src/support/libsupportinit.o CC src/support/arraylist.o CC src/support/strtod.o LINK src/support/libsupport.a CC src/flisp/flisp.o CC src/flisp/builtins.o CC src/flisp/string.o CC src/flisp/equalhash.o CC src/flisp/table.o CC src/flisp/iostream.o CC src/flisp/julia_extensions.o LINK src/flisp/libflisp.a CC src/flisp/flmain.o LINK src/flisp/flisp FLISP src/julia_flisp.boot FLISP src/julia_flisp.boot.inc CC src/jloptions.o CC src/runtime_ccall.o In file included from /Users/valent/Library/julia/src/runtime_ccall.cpp:6: In file included from /Users/valent/Library/julia/usr/include/llvm/ADT/StringMap.h:16: In file included from /Users/valent/Library/julia/usr/include/llvm/ADT/StringMapEntry.h:18: In file included from /Users/valent/Library/julia/usr/include/llvm/ADT/StringRef.h:12: In file included from /Users/valent/Library/julia/usr/include/llvm/ADT/STLExtras.h:19: In file included from /Users/valent/Library/julia/usr/include/llvm/ADT/Optional.h:18: /Users/valent/Library/julia/usr/include/llvm/ADT/None.h:22:6: warning: scoped enumerations are a C++11 extension [-Wc++11-extensions] enum class NoneType { None = 1 }; ^ /Users/valent/Library/julia/usr/include/llvm/ADT/None.h:23:23: warning: use of enumeration in a nested name specifier is a C++11 extension [-Wc++11-extensions] const NoneType None = NoneType::None; ^ In file included from /Users/valent/Library/julia/src/runtime_ccall.cpp:6: In file included from /Users/valent/Library/julia/usr/include/llvm/ADT/StringMap.h:16: In file included from /Users/valent/Library/julia/usr/include/llvm/ADT/StringMapEntry.h:18: In file included from /Users/valent/Library/julia/usr/include/llvm/ADT/StringRef.h:12: In file included from /Users/valent/Library/julia/usr/include/llvm/ADT/STLExtras.h:19: In file included from /Users/valent/Library/julia/usr/include/llvm/ADT/Optional.h:20: /Users/valent/Library/julia/usr/include/llvm/Support/type_traits.h:31:23: warning: alias declarations are a C++11 extension [-Wc++11-extensions] using UnderlyingT = std::remove_reference_t; ^ /Users/valent/Library/julia/usr/include/llvm/Support/type_traits.h:31:28: error: no template named 'remove_reference_t' in namespace 'std'; did you mean 'remove_reference'? using UnderlyingT = std::remove_reference_t; ~~~~~^~~~~~~~~~~~~~~~~~ remove_reference /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/type_traits:1109:50: note: 'remove_reference' declared here template struct _LIBCPP_TEMPLATE_VIS remove_reference {typedef _LIBC... ^ In file included from /Users/valent/Library/julia/src/runtime_ccall.cpp:6: In file included from /Users/valent/Library/julia/usr/include/llvm/ADT/StringMap.h:16: In file included from /Users/valent/Library/julia/usr/include/llvm/ADT/StringMapEntry.h:18: In file included from /Users/valent/Library/julia/usr/include/llvm/ADT/StringRef.h:12: In file included from /Users/valent/Library/julia/usr/include/llvm/ADT/STLExtras.h:19: In file included from /Users/valent/Library/julia/usr/include/llvm/ADT/Optional.h:20: /Users/valent/Library/julia/usr/include/llvm/Support/type_traits.h:39:50: warning: 'long long' is a C++11 extension [-Wc++11-long-long] std::is_convertible::value); ^ /Users/valent/Library/julia/usr/include/llvm/Support/type_traits.h:44:59: warning: alias declarations are a C++11 extension [-Wc++11-extensions] struct add_lvalue_reference_if_not_pointer { using type = T &; }; ^ /Users/valent/Library/julia/usr/include/llvm/Support/type_traits.h:48:13: error: no template named 'enable_if_t' in namespace 'std'; did you mean 'enable_if'? T, std::enable_if_t::value>> { ~~~~~^~~~~~~~~~~ enable_if /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/type_traits:538:63: note: 'enable_if' declared here template struct _LIBCPP_TEMPLATE_VIS enable_if {}; ^ In file included from /Users/valent/Library/julia/src/runtime_ccall.cpp:6: In file included from /Users/valent/Library/julia/usr/include/llvm/ADT/StringMap.h:16: In file included from /Users/valent/Library/julia/usr/include/llvm/ADT/StringMapEntry.h:18: In file included from /Users/valent/Library/julia/usr/include/llvm/ADT/StringRef.h:12: In file included from /Users/valent/Library/julia/usr/include/llvm/ADT/STLExtras.h:19: In file included from /Users/valent/Library/julia/usr/include/llvm/ADT/Optional.h:20: /Users/valent/Library/julia/usr/include/llvm/Support/type_traits.h:48:53: error: expected expression T, std::enable_if_t::value>> { ^ /Users/valent/Library/julia/usr/include/llvm/Support/type_traits.h:50:2: error: expected a type }; ^ /Users/valent/Library/julia/usr/include/llvm/Support/type_traits.h:55:46: warning: alias declarations are a C++11 extension [-Wc++11-extensions] struct add_const_past_pointer { using type = const T; }; ^ /Users/valent/Library/julia/usr/include/llvm/Support/type_traits.h:58:39: error: no template named 'enable_if_t' in namespace 'std'; did you mean 'enable_if'? struct add_const_past_pointer::value>> { ~~~~~^~~~~~~~~~~ enable_if /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/type_traits:538:63: note: 'enable_if' declared here template struct _LIBCPP_TEMPLATE_VIS enable_if {}; ^ In file included from /Users/valent/Library/julia/src/runtime_ccall.cpp:6: In file included from /Users/valent/Library/julia/usr/include/llvm/ADT/StringMap.h:16: In file included from /Users/valent/Library/julia/usr/include/llvm/ADT/StringMapEntry.h:18: In file included from /Users/valent/Library/julia/usr/include/llvm/ADT/StringRef.h:12: In file included from /Users/valent/Library/julia/usr/include/llvm/ADT/STLExtras.h:19: In file included from /Users/valent/Library/julia/usr/include/llvm/ADT/Optional.h:20: /Users/valent/Library/julia/usr/include/llvm/Support/type_traits.h:58:79: error: expected expression struct add_const_past_pointer::value>> { ^ /Users/valent/Library/julia/usr/include/llvm/Support/type_traits.h:60:2: error: expected a type }; ^ /Users/valent/Library/julia/usr/include/llvm/Support/type_traits.h:64:16: warning: alias declarations are a C++11 extension [-Wc++11-extensions] using type = const T &; ^ /Users/valent/Library/julia/usr/include/llvm/Support/type_traits.h:68:40: error: no template named 'enable_if_t' in namespace 'std'; did you mean 'enable_if'? std::enable_if_t::value>> { ~~~~~^~~~~~~~~~~ enable_if /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/type_traits:538:63: note: 'enable_if' declared here template struct _LIBCPP_TEMPLATE_VIS enable_if {}; ^ In file included from /Users/valent/Library/julia/src/runtime_ccall.cpp:6: In file included from /Users/valent/Library/julia/usr/include/llvm/ADT/StringMap.h:16: In file included from /Users/valent/Library/julia/usr/include/llvm/ADT/StringMapEntry.h:18: In file included from /Users/valent/Library/julia/usr/include/llvm/ADT/StringRef.h:12: In file included from /Users/valent/Library/julia/usr/include/llvm/ADT/STLExtras.h:19: In file included from /Users/valent/Library/julia/usr/include/llvm/ADT/Optional.h:20: /Users/valent/Library/julia/usr/include/llvm/Support/type_traits.h:68:80: error: expected expression std::enable_if_t::value>> { ^ /Users/valent/Library/julia/usr/include/llvm/Support/type_traits.h:70:2: error: expected a type }; ^ /Users/valent/Library/julia/usr/include/llvm/Support/type_traits.h:76:45: warning: defaulted function definitions are a C++11 extension [-Wc++11-extensions] copy_construction_triviality_helper() = default; ^ /Users/valent/Library/julia/usr/include/llvm/Support/type_traits.h:77:87: warning: defaulted function definitions are a C++11 extension [-Wc++11-extensions] copy_construction_triviality_helper(const copy_construction_triviality_helper&) = default; ^ /Users/valent/Library/julia/usr/include/llvm/Support/type_traits.h:78:46: warning: defaulted function definitions are a C++11 extension [-Wc++11-extensions] ~copy_construction_triviality_helper() = default; ^ /Users/valent/Library/julia/usr/include/llvm/Support/type_traits.h:83:45: warning: defaulted function definitions are a C++11 extension [-Wc++11-extensions] move_construction_triviality_helper() = default; ^ /Users/valent/Library/julia/usr/include/llvm/Support/type_traits.h:84:76: warning: rvalue references are a C++11 extension [-Wc++11-extensions] move_construction_triviality_helper(move_construction_triviality_helper&&) = default; ^ /Users/valent/Library/julia/usr/include/llvm/Support/type_traits.h:84:82: warning: defaulted function definitions are a C++11 extension [-Wc++11-extensions] move_construction_triviality_helper(move_construction_triviality_helper&&) = default; ^ /Users/valent/Library/julia/usr/include/llvm/Support/type_traits.h:85:46: warning: defaulted function definitions are a C++11 extension [-Wc++11-extensions] ~move_construction_triviality_helper() = default; ^ /Users/valent/Library/julia/usr/include/llvm/Support/type_traits.h:100:64: error: a space is required between consecutive right angle brackets (use '> >') ::llvm::detail::copy_construction_triviality_helper> {}; ^~ > > /Users/valent/Library/julia/usr/include/llvm/Support/type_traits.h:104:42: warning: rvalue references are a C++11 extension [-Wc++11-extensions] struct is_trivially_copy_constructible : std::false_type {}; ^ /Users/valent/Library/julia/usr/include/llvm/Support/type_traits.h:111:64: error: a space is required between consecutive right angle brackets (use '> >') ::llvm::detail::move_construction_triviality_helper> {}; ^~ > > /Users/valent/Library/julia/usr/include/llvm/Support/type_traits.h:115:42: warning: rvalue references are a C++11 extension [-Wc++11-extensions] struct is_trivially_move_constructible : std::true_type {}; ^ /Users/valent/Library/julia/usr/include/llvm/Support/type_traits.h:121:12: warning: 'auto' type specifier is a C++11 extension [-Wc++11-extensions] static auto get(F*) -> decltype(std::declval() = std::declval(), st... ^ /Users/valent/Library/julia/usr/include/llvm/Support/type_traits.h:121:12: error: 'auto' not allowed in function return type static auto get(F*) -> decltype(std::declval() = std::declval(), st... ^~~~ /Users/valent/Library/julia/usr/include/llvm/Support/type_traits.h:121:24: error: expected ';' at end of declaration list static auto get(F*) -> decltype(std::declval() = std::declval(), st... ^ ; /Users/valent/Library/julia/usr/include/llvm/Support/type_traits.h:123:12: error: unknown type name 'constexpr' static constexpr bool value = decltype(get((T*)nullptr))::value; ^ /Users/valent/Library/julia/usr/include/llvm/Support/type_traits.h:129:12: warning: 'auto' type specifier is a C++11 extension [-Wc++11-extensions] static auto get(F*) -> decltype(std::declval() = std::declval(), std::tr... ^ /Users/valent/Library/julia/usr/include/llvm/Support/type_traits.h:129:12: error: 'auto' not allowed in function return type static auto get(F*) -> decltype(std::declval() = std::declval(), std::tr... ^~~~ /Users/valent/Library/julia/usr/include/llvm/Support/type_traits.h:129:24: error: expected ';' at end of declaration list static auto get(F*) -> decltype(std::declval() = std::declval(), std::tr... ^ ; /Users/valent/Library/julia/usr/include/llvm/Support/type_traits.h:131:12: error: unknown type name 'constexpr' static constexpr bool value = decltype(get((T*)nullptr))::value; ^ /Users/valent/Library/julia/usr/include/llvm/Support/type_traits.h:143:10: error: unknown type name 'constexpr' static constexpr bool has_trivial_copy_constructor = ^ fatal error: too many errors emitted, stopping now [-ferror-limit=] 18 warnings and 20 errors generated. make[1]: *** [runtime_ccall.o] Error 1 make: *** [julia-src-release] Error 2 ```
jheinen commented 3 years ago

So you get the same result that I got. I installed GCC 11 from scratch. I could built all GR dependencies from source, even Qt 5.15.2. So, I thought it would only be a small step to get Julia up and running.

jheinen commented 3 years ago

With two patches I managed to build Julia, but I can't run it:

    JULIA usr/lib/julia/corecompiler.ji
ERROR: Unable to load dependent library /opt/src/julia/usr/lib/libgcc_s.2.dylib
Message:dlopen(/opt/src/julia/usr/lib/libgcc_s.2.dylib, 10): no suitable image found.  Did find:
    /opt/src/julia/usr/lib/libgcc_s.2.dylib: code signature in (/opt/src/julia/usr/lib/libgcc_s.2.dylib) not valid for use in process using Library Validation: Trying to load an unsigned library
make[1]: *** [/opt/src/julia/usr/lib/julia/corecompiler.ji] Error 1
make: *** [julia-sysimg-ji] Error 2

Any ideas?

jiaqiwang969 commented 3 years ago

hi, i install the julia in m1 using Rosetta, there is a issue when using add:

pkg> add FFTW Updating registry at ~/.julia/registries/General ######################################################################## 100.0% tar: truncated gzip input tar: Error exit delayed from previous errors. ┌ Warning: could not download https://pkg.julialang.org/registry/23338594-aafe-5451-b93e-139f81909106/5b130d8c1b9f23da50fad7280efdd76529fa0228 └ @ Pkg.Types /Users/julia/buildbot/worker/package_macos64/build/usr/share/julia/stdlib/v1.5/Pkg/src/Types.jl:1123 ERROR: SystemError: opening file "/var/folders/y2/d_wnz2hs61z4twjv56ww0bc80000gn/T/jl_0XxCJq/Registry.toml": No such file or directory Stacktrace: [1] systemerror(::String, ::Int32; extrainfo::Nothing) at ./error.jl:168 ...... [28] run_frontend(::REPL.LineEditREPL, ::REPL.REPLBackendRef) at /Users/julia/buildbot/worker/package_macos64/build/usr/share/julia/stdlib/v1.5/REPL/src/REPL.jl:1144 [29] (::REPL.var"#38#42"{REPL.LineEditREPL,REPL.REPLBackendRef})() at ./task.jl:356

Has anyone solved this problem? Thanks!

ChenZhao44 commented 3 years ago

@jiaqiwang969 I also encounter this issue. I think it is an issue from the PkgServer, but not Julia itself.
Currently, I solve this issue by changing the mirror of the PkgServer by setting

julia> ENV["JULIA_PKG_SERVER"] = "https://mirrors.bfsu.edu.cn/julia"

Then everything goes well for me.

jheinen commented 3 years ago

How can I find out what the problem is. The macOS build on arm64 (Apple M1) always hangs here:

    JULIA usr/lib/julia/corecompiler.ji
    JULIA usr/lib/julia/sys.ji
coreio.jl
exports.jl
essentials.jl
ctypes.jl
gcutils.jl
generator.jl
reflection.jl
options.jl
promotion.jl
tuple.jl
expr.jl
pair.jl
traits.jl
range.jl
error.jl
bool.jl
number.jl
int.jl
operators.jl
pointer.jl
refvalue.jl
refpointer.jl
checked.jl
indices.jl
array.jl
abstractarray.jl
subarray.jl
views.jl
baseext.jl
ntuple.jl
abstractdict.jl
iddict.jl
idset.jl
iterators.jl
namedtuple.jl
./build_h.jl
./version_git.jl
hashing.jl
rounding.jl
div.jl
float.jl
twiceprecision.jl
complex.jl
rational.jl
multinverses.jl
abstractarraymath.jl
arraymath.jl
simdloop.jl
reduce.jl
reshapedarray.jl
reinterpretarray.jl
bitarray.jl
bitset.jl
multimedia.jl
some.jl
dict.jl
abstractset.jl
set.jl
char.jl
strings/basic.jl
strings/string.jl
strings/substring.jl
osutils.jl
c.jl
io.jl
iobuffer.jl
intfuncs.jl
strings/strings.jl
strings/search.jl
strings/unicode.jl
strings/util.jl
strings/io.jl
regex.jl
pcre.jl
./pcre_h.jl
parse.jl
shell.jl

BTW: I code-signed the BB libraries using my Apple developer account. Does someone know how to obtain (and use) the original certificate?

ViralBShah commented 3 years ago

I think @vtjnash or @Keno may be better people to suggest what to do. But I would just start the compilation in gdb and then hit ctrl-c where it is stuck to try see what's going on. And maybe even build a smaller minimal system image to start with.

Keno commented 3 years ago

That hang is one of the known issues, but I forget which one - probably either the PCRE or the libunwind one.

omus commented 3 years ago

Looks like PCRE2 10.36 is out. I'll try to get that integrated

giordano commented 3 years ago

The upstream bug reported related to PCRE2 is still open though, and the release announcement suggests that it's still a problem

Keno commented 3 years ago

You'll need to carry the patch for it. I think @staticfloat may have even already picked it up.

staticfloat commented 3 years ago

I have not. PCRE2 10.36 still doesn't contain the fix; see here for discussion: https://bugs.exim.org/show_bug.cgi?id=2618#c23

Keno commented 3 years ago

Ok, somebody just needs to pick up that upstream fix then. I had built a version of 10.36rc1 with the patch applied and it built cleanly and worked, so I'm imagining it should be easy to do for the final 10.36 release.

jheinen commented 3 years ago

Thanks for the hint. I checked out 1a8f196985, but the problem still exists:

JULIA_BINDIR=/opt/src/julia/usr/bin /opt/src/julia/usr/bin/julia -g1 -O0 -C "apple-a12" --output-ji /opt/src/julia/usr/lib/julia/sys.ji.tmp --startup-file=no --warn-overwrite=yes --sysimage /opt/src/julia/usr/lib/julia/corecompiler.ji sysimg.jl ./

Julia seems to enter an endless loop when processing shell.jl and consumes 100% CPU.

jheinen commented 3 years ago

I'm probably doing something wrong. The build still uses PCRE2.v10.35.0+0.aarch64-apple-darwin.tar.gz.

KristofferC commented 3 years ago

Try:

make -C deps uninstall

and remove the usr dir in the julia build directory.

jheinen commented 3 years ago

I removed everything (also the srccache directory) but the build still downloads (and uses) deps/srccache/PCRE2.v10.35.0+0.aarch64-apple-darwin.tar.gz . I'm on 1a8f196985 (HEAD -> cv/pcre2-10.36, origin/cv/pcre2-10.36) Update PCRE2 to 10.36

Keno commented 3 years ago

The PR does not include a BB bump yet. You can build it from source or wait for that to be included.

jheinen commented 3 years ago

ah - ok. I'll wait for the BB version then ...