Closed sanderjo closed 2 years ago
Interesting. So this is an issue with TEMPO. Given the real*10
, I wonder if it is because ARM64 doesn't support hardware (or maybe even software?) long double math?
Never done it, but I created a fortran program for testing purposes:
program hello
real*10 frb, tt0, tt, orbits
print *, "Hello World!"
end program
It does compile & run on x86, but not on ARM64:
sander@nanopineo2:~$ gfortran bla3.f90
bla3.f90:2:11:
real*10 frb, tt0, tt, orbits
1
Error: Old-style type declaration REAL*10 not supported at (1)
sander@nanopineo2:~$ gfortran --version
GNU Fortran (Ubuntu/Linaro 7.5.0-3ubuntu1~18.04) 7.5.0
Copyright (C) 2017 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
OK ... https://stackoverflow.com/a/43811585 is very, very interesting:
Your compiler may have a REAL*10 type for the 80-bit arithmetic used by the x86 387 FPU,
So, it is x86-only stuff!
Finally, in Fortran 90 a way to refer to different kinds of real and integer types was made standard. The new syntax is REAL(n) or REAL(kind=n) and is supported by all standard-compliant compilers.
I tried some stuff on ARM64, but it looks bad:
sander@nanopineo2:~$ cat bla3.f90
program hello
! real*10 frb, tt0, tt, orbits
real blabla
!real(10) :: frb
REAl(KIND=16) :: xq ! 16 byte ieee float
REAl(KIND=10) :: frb ! not ok on ARM64
print *, "Hello World!"
end program
sander@nanopineo2:~$ gfortran bla3.f90
bla3.f90:6:15:
REAl(KIND=10) :: frb ! not ok on ARM64
1
Error: Kind 10 not supported for type REAL at (1)
sander@nanopineo2:~$
Anyway: that TEMPO fortran seems to be x86/x87 only.
oh, funny: real*16 blalbla
is OK on ARM64.
program hello
! real*10 frb, tt0, tt, orbits
real blabla
real*16 blkdkdkdkdk
!real(10) :: frb
REAl(KIND=16) :: xq ! 16 byte ieee float
!REAl(KIND=10) :: frb ! not ok on ARM64
print *, "Hello World!"
end program
So: 16 good, 10 bad...
@scottransom thanks for your hint! Closing as TEMPO is x86/87-only, and indeed not-for-ARM.
FYI (@NickSwainston ?)
A
docker build .
works on x86_64.But same method on ARM64, results in the below in step 18 (the tempo stuff):
So ... a fortran error message? Triggered in docker on ARM64, but not in docker on X86_64 ... ?
More logging from the
docker build .
: