mersenneforum.org

mersenneforum.org (https://www.mersenneforum.org/index.php)
-   Mlucas (https://www.mersenneforum.org/forumdisplay.php?f=118)
-   -   MLucas on IBM Mainframe (https://www.mersenneforum.org/showthread.php?t=20962)

Lorenzo 2016-02-05 14:20

MLucas on IBM Mainframe
 
Hello! It's possible compile on IBM Mainframe? Tried compile MLucas (mlucas-14.1.tar.gz and Mlucas_12.11.2014.tgz). But unfortunately have a some problem.

[CODE]Architecture: s390x
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Big Endian
CPU(s): 2
On-line CPU(s) list: 0,1
Thread(s) per core: 1
Core(s) per socket: 1
Socket(s) per book: 1
Book(s): 2
Vendor ID: IBM/S390
BogoMIPS: 20325.00
Hypervisor: z/VM 6.3.0
Hypervisor vendor: IBM
Virtualization type: full
Dispatching mode: horizontal
L1d cache: 128K
L1i cache: 96K
L2d cache: 2048K
L2i cache: 2048K
[/CODE]

By the way. Everyone can try. Just register and get access for 90 days. [url]https://developer.ibm.com/linuxone/?source=web&ca=linuxone&ovcode=ov44223&tactic=C47300NW[/url]

I choose Linux Red Hat.

chalsall 2016-02-05 15:33

[QUOTE=Lorenzo;425319]By the way. Everyone can try. Just register and get access for 90 days. [url]https://developer.ibm.com/linuxone/?source=web&ca=linuxone&ovcode=ov44223&tactic=C47300NW[/url][/QUOTE]

I will let others speak to building MLucas in this environment, but thank you for pointing this out to us. Interesting....

chalsall 2016-02-05 16:57

[QUOTE=chalsall;425323]Interesting....[/QUOTE]

Or, perhaps not so much... DNS is broken within the virtual machine as initially instanced (at least for RedHat Linux), and Mlucas doesn't even start to compile successfully, even though "../configure" completes successfully.

Ernst?

I know this is an experiment by IBM, but it's not going to compete with EC2 nor Google Compute et al any time soon.

Dubslow 2016-02-05 17:14

What's the error? Two people saying "it doesn't work" is about as useful as me saying that Prime95 won't compile either.

chalsall 2016-02-05 17:22

[QUOTE=Dubslow;425334]What's the error? Two people saying "it doesn't work" is about as useful as me saying that Prime95 won't compile either.[/QUOTE]

Fair enough... [CODE][linux1@i4l-2 build]$ cat /proc/cpuinfo
vendor_id : IBM/S390
# processors : 2
bogomips per cpu: 20325.00
features : esan3 zarch stfle msa ldisp eimm dfp etf3eh highgprs
processor 0: version = FF, identification = 016A77, machine = 2964
processor 1: version = FF, identification = 016A77, machine = 2964

[linux1@i4l-2 build]$ uname -a
Linux i4l-2 2.6.32-573.12.1.el6.s390x #1 SMP Mon Nov 23 12:58:30 EST 2015 s390x s390x s390x GNU/Linux

[linux1@i4l-2 build]$ pwd
/home/linux1/mlucas/mlucas-14.1/build

[linux1@i4l-2 build]$ ../configure
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking whether make supports nested variables... yes
checking whether make supports nested variables... (cached) yes
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables...
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking whether gcc understands -c and -o together... yes
checking for style of include used by make... GNU
checking dependency style of gcc... none
checking for library containing ceil, log, pow, sqrt, sincos, floor, lrint, atan... -lm
checking how to run the C preprocessor... gcc -E
checking for grep that handles long lines and -e... /bin/grep
checking for egrep... /bin/grep -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking fenv.h usability... yes
checking fenv.h presence... yes
checking for fenv.h... yes
checking limits.h usability... yes
checking limits.h presence... yes
checking for limits.h... yes
checking mach/mach.h usability... no
checking mach/mach.h presence... no
checking for mach/mach.h... no
checking stddef.h usability... yes
checking stddef.h presence... yes
checking for stddef.h... yes
checking for stdlib.h... (cached) yes
checking for string.h... (cached) yes
checking sys/time.h usability... yes
checking sys/time.h presence... yes
checking for sys/time.h... yes
checking for unistd.h... (cached) yes
checking for stdbool.h that conforms to C99... yes
checking for _Bool... yes
checking for inline... inline
checking for pid_t... yes
checking for size_t... yes
checking for uint64_t... yes
checking for stdlib.h... (cached) yes
checking for GNU libc compatible malloc... yes
checking for stdlib.h... (cached) yes
checking for GNU libc compatible realloc... yes
checking for clock_gettime... no
checking for gethrtime... no
checking for gettimeofday... yes
checking for memset... yes
checking for pow... yes
checking for sqrt... yes
checking for strerror... yes
checking for strstr... yes
checking for strtoul... yes
checking whether _LARGEFILE_SOURCE is declared... no
checking build system type... s390x-ibm-linux-gnu
checking host system type... s390x-ibm-linux-gnu
checking that generated files are newer than configure... done
configure: creating ./config.status
config.status: creating Makefile
config.status: creating config.h
config.status: config.h is unchanged
config.status: executing depfiles commands

[linux1@i4l-2 build]$ make
make all-am
make[1]: Entering directory `/home/linux1/mlucas/mlucas-14.1/build'
CC $NORMAL_O $THREADS_O
make[1]: *** [NORMAL_O-THREADS_O.stamp] Error 1
make[1]: Leaving directory `/home/linux1/mlucas/mlucas-14.1/build'
make: *** [all] Error 2[/CODE]

ET_ 2016-02-05 17:26

[QUOTE=chalsall;425331]
I know this is an experiment by IBM, but it's not going to compete with EC2 nor Google Compute et al any time soon.[/QUOTE]

Would you mind to elaborate?

Luigi

Dubslow 2016-02-05 17:33

[QUOTE=chalsall;425336]Fair enough... [CODE]
[linux1@i4l-2 build]$ make
make all-am
make[1]: Entering directory `/home/linux1/mlucas/mlucas-14.1/build'
CC $NORMAL_O $THREADS_O
make[1]: *** [NORMAL_O-THREADS_O.stamp] Error 1
make[1]: Leaving directory `/home/linux1/mlucas/mlucas-14.1/build'
make: *** [all] Error 2[/CODE][/QUOTE]

What a perfectly useless error message. I see now why you didn't immediately include it.

chalsall 2016-02-05 17:42

[QUOTE=ET_;425337]Would you mind to elaborate?[/QUOTE]

Sure...

As much as I hate to say it, Intel has mostly won the assembly race. As in, most code is targeted to x86 (and this is coming from someone who hates x86; I much prefer 680x0 assembly (may it rest in peace)).

Even source code in C, C++ etc might not work under a different platform. This might be because of the build environment not being truly cross-platform, or because there are subtle bugs in the code which don't manifest under the most commonly used CPUs. Yes, this does mean the code is buggy, but most don't care -- they just want the code to work for them without hassle.

At the end of the day, my argument is that cloud computing providers need to provide x86 based virtual machines to (almost all of) their customers, or they're just not going to get traction.

ET_ 2016-02-05 17:50

[QUOTE=chalsall;425339]...
At the end of the day, my argument is that cloud computing providers need to provide x86 based virtual machines to (almost all of) their customers, or they're just not going to get traction.[/QUOTE]

I am working with servers in cloud, and notice that even on x86 architectures, one "virtual CPU" equals 40%-50% of a real one. If the IBM fellows deliver a virtual CPU worth 60%-65% of a real CPU, they would win the race.

That "virtual CPu" thingie is going to take the place of the "minimum guaranteed upload bandwidth" for ADSL...

chalsall 2016-02-05 18:03

[QUOTE=ET_;425340]I am working with servers in cloud, and notice that even on x86 architectures, one "virtual CPU" equals 40%-50% of a real one. If the IBM fellows deliver a virtual CPU worth 60%-65% of a real CPU, they would win the race.[/QUOTE]

I also mostly work in "the cloud". For my serious work I lease dedicated servers, where I get 100% of the machine.

For my "on demand" work I sometimes go "virtual". And, if you know what you're doing, you can get ~99% of a machine for pennies on the dollar.

IBM is not going to win this race unless and until they offer x86 instances. And, so you know, I ran a simple benchmark from the command line, and their instance was half the speed of my desktop (one CPU used on each).

alexvong1995 2016-02-05 18:31

[QUOTE=chalsall;425336]Fair enough... [CODE][linux1@i4l-2 build]$ cat /proc/cpuinfo
vendor_id : IBM/S390
# processors : 2
bogomips per cpu: 20325.00
features : esan3 zarch stfle msa ldisp eimm dfp etf3eh highgprs
processor 0: version = FF, identification = 016A77, machine = 2964
processor 1: version = FF, identification = 016A77, machine = 2964

[linux1@i4l-2 build]$ uname -a
Linux i4l-2 2.6.32-573.12.1.el6.s390x #1 SMP Mon Nov 23 12:58:30 EST 2015 s390x s390x s390x GNU/Linux

[linux1@i4l-2 build]$ pwd
/home/linux1/mlucas/mlucas-14.1/build

[linux1@i4l-2 build]$ ../configure
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking whether make supports nested variables... yes
checking whether make supports nested variables... (cached) yes
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables...
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking whether gcc understands -c and -o together... yes
checking for style of include used by make... GNU
checking dependency style of gcc... none
checking for library containing ceil, log, pow, sqrt, sincos, floor, lrint, atan... -lm
checking how to run the C preprocessor... gcc -E
checking for grep that handles long lines and -e... /bin/grep
checking for egrep... /bin/grep -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking fenv.h usability... yes
checking fenv.h presence... yes
checking for fenv.h... yes
checking limits.h usability... yes
checking limits.h presence... yes
checking for limits.h... yes
checking mach/mach.h usability... no
checking mach/mach.h presence... no
checking for mach/mach.h... no
checking stddef.h usability... yes
checking stddef.h presence... yes
checking for stddef.h... yes
checking for stdlib.h... (cached) yes
checking for string.h... (cached) yes
checking sys/time.h usability... yes
checking sys/time.h presence... yes
checking for sys/time.h... yes
checking for unistd.h... (cached) yes
checking for stdbool.h that conforms to C99... yes
checking for _Bool... yes
checking for inline... inline
checking for pid_t... yes
checking for size_t... yes
checking for uint64_t... yes
checking for stdlib.h... (cached) yes
checking for GNU libc compatible malloc... yes
checking for stdlib.h... (cached) yes
checking for GNU libc compatible realloc... yes
checking for clock_gettime... no
checking for gethrtime... no
checking for gettimeofday... yes
checking for memset... yes
checking for pow... yes
checking for sqrt... yes
checking for strerror... yes
checking for strstr... yes
checking for strtoul... yes
checking whether _LARGEFILE_SOURCE is declared... no
checking build system type... s390x-ibm-linux-gnu
checking host system type... s390x-ibm-linux-gnu
checking that generated files are newer than configure... done
configure: creating ./config.status
config.status: creating Makefile
config.status: creating config.h
config.status: config.h is unchanged
config.status: executing depfiles commands

[linux1@i4l-2 build]$ make
make all-am
make[1]: Entering directory `/home/linux1/mlucas/mlucas-14.1/build'
CC $NORMAL_O $THREADS_O
make[1]: *** [NORMAL_O-THREADS_O.stamp] Error 1
make[1]: Leaving directory `/home/linux1/mlucas/mlucas-14.1/build'
make: *** [all] Error 2[/CODE][/QUOTE]

Hi people, could you try appending --enable-verbose-compiler and --disable-silent-rule when running configure and paste the output? (I don't want to give away my phone number to register...) Currently, Mlucas only compiles and passes the self-test on 4 targets when [URL="https://buildd.debian.org/status/package.php?p=mlucas"]building[/URL] it on [URL="https://packages.debian.org/sid/math/mlucas"]Debian[/URL]. It would be great if it compiles targets other than x86 and powerpc as well. Besides, do you think compiler warnings and verbose rule should be enabled by default? I used to think it is too verbose but it seems the short error message is pretty useless.


All times are UTC. The time now is 05:54.

Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.