Live data from Hacker News

Erlang and IBM Power8 in the cloud: super-high single-system parallelism

erlang.org

51–60 of 64 posts

Re: Erlang and IBM Power8 in the cloud: super-high single-system parallelism

#52
post #44
post #43

Earlier quoted context omitted.

Sounds interesting! What's needed from the user in order to use this feature? Will it be possible to use from high level languages like java or do you have to use assembly? Can think of quite a lot of applications that would benefit A LOT from this.

High level languages like Python, Ruby, and Go could take advantage of this without having to make any code changes, provided that the appropriate libraries are updated to use this new hardware. Java, however, is a special case. Since Java bytecode does not have a BigDecimal type, there's no way to update the JVM to take advantages of this hardware unfortunately.

I think I remember reading that zSeries has Decimal Floating Point, too, and that IBM's JVM does take advantage of the instructions on z/OS.

Of course, even if that is true, it is a different architecture. But still, if they made the change on one architecture, it would be silly not to make it on the other one as well.

Unless that was intentional to keep some sort of advantage for zSeries.

Re: Erlang and IBM Power8 in the cloud: super-high single-system parallelism

#53
post #21

A while ago (here's an article from 2002: http://lwn.net/Articles/6367/ ), the big new thing was going to be ibm mainframes running linux VMs. Whatever became of that? Is anyone still doing that?

My employer does. Plenty of large companies with an existing Z footprint do.

Re: Erlang and IBM Power8 in the cloud: super-high single-system parallelism

#54
post #21

A while ago (here's an article from 2002: http://lwn.net/Articles/6367/ ), the big new thing was going to be ibm mainframes running linux VMs. Whatever became of that? Is anyone still doing that?

My employer does. Plenty of large companies with an existing Z footprint do.

Re: Erlang and IBM Power8 in the cloud: super-high single-system parallelism

#55

Earlier quoted context omitted.

Yes, indeed. Marlow's book is really good one.

I love my haskell brethren dearly, but haskell isn't organized structurally around an essentially-mandatory fundamentally concurrent, debuggable, quasi-preemptive core like OTP. Not that it won't get there eventually (cf. Cloud Haskell) but it's more than just being able to run concurrent threads. Note: this is not a language flame, just a personal opinion/observation, and I love and welcome correction.

Haskellers like to pick and choose their abstractions. That's why we have MVar and TVar (STM) and IVar and locks/semaphores and unbounded channels and bounded channels and software transactional channels and green threads and Async and OS threads…

You're going to see what Erlang did atomized, implemented piecemeal, and reconstructed. Cloud Haskell burnt too much goodwill in pursuit of a mostly pointless feature.

That's how we ended up with slave-thread…the beginnings of supervisor trees.

Haskellers would rather pick and choose. It's worked well so far.

Re: Erlang and IBM Power8 in the cloud: super-high single-system parallelism

#56
post #44
post #43

Earlier quoted context omitted.

Sounds interesting! What's needed from the user in order to use this feature? Will it be possible to use from high level languages like java or do you have to use assembly? Can think of quite a lot of applications that would benefit A LOT from this.

High level languages like Python, Ruby, and Go could take advantage of this without having to make any code changes, provided that the appropriate libraries are updated to use this new hardware. Java, however, is a special case. Since Java bytecode does not have a BigDecimal type, there's no way to update the JVM to take advantages of this hardware unfortunately.

I would assume that the IBM JVM uses DFP instructions to implement the BigDecimal class.

Re: Erlang and IBM Power8 in the cloud: super-high single-system parallelism

#57
post #43

Earlier quoted context omitted.

Worth mentioning that POWER is the only chip I'm aware of that has hardware DFP instructions.

Sounds interesting! What's needed from the user in order to use this feature? Will it be possible to use from high level languages like java or do you have to use assembly? Can think of quite a lot of applications that would benefit A LOT from this.

When you compile C99 apps using _Decimal{32,64,128} types, and you enable a flag on IBM's compiler to use the DFP instructions and tell it you're compiling for at least a POWER6 (e.g., -qarch=pwr6 -qtune=pwr7) it will emit the optimized code. The same types are available in C++ apps as well. (I'm not sure if GCC/LLVM also support emitting the instructions -- haven't checked.)

If higher level languages implemented in C/C++ implement their decimal support using the built-in C/C++ types, they'll get the speed boost.

Re: Erlang and IBM Power8 in the cloud: super-high single-system parallelism

#58
post #56
post #44

Earlier quoted context omitted.

High level languages like Python, Ruby, and Go could take advantage of this without having to make any code changes, provided that the appropriate libraries are updated to use this new hardware. Java, however, is a special case. Since Java bytecode does not have a BigDecimal type, there's no way to update the JVM to take advantages of this hardware unfortunately.

I would assume that the IBM JVM uses DFP instructions to implement the BigDecimal class .

Yes, according to IBM's presentations, BigDecimal in their JVM uses 64-bit DFP instructions on their hardware. Minimum hardware level is POWER6 or Z10 (Z9 supported via microcode).

http://www.ibm.com/developerworks/rational/cafe/docBodyAttac...

Re: Erlang and IBM Power8 in the cloud: super-high single-system parallelism

#59
post #39

Earlier quoted context omitted.

IBM has solid documentation of more of the Power8 details here: http://www.setphaserstostun.org/power8/POWER8_UM_external_22... Going only by specs, it seems that in many other cases each Power8 core has about 2-4x the resources of a Haswell core: 64KB vs 32KB L1D 512KB vs 64KB L2 8MB vs 2.5MB L3 16 vs 10(?) outstanding L1 requests 8 vs 4 instructions issued per cycle 2 vs 1 stores per cycle (or 4 vs 2 loads if no st…

Your huge page comment also reminded me that Power has 64k page support, rather than the 4k or 2MB that amd64 has, and this is normally the pag size (eg in RHEL) which reduces TLB pressure a lot.

In AIX the text/data page size can be controlled independently per-process with environment variables. What drives me up a wall is that the per-process setting does not actually flow through to their POSIX layer. Have any code that calls sysconf(_SC_PAGESIZE)? The page size is 8k! No, wait...

Re: Erlang and IBM Power8 in the cloud: super-high single-system parallelism

#60

How does POWER8 compare to x86, e.g. Haswell? Just skimming some of the architecture details... * 4x hardware threads per core (8-way SMT vs. 2) * 1/4th FP throughput per core (8 SP flops/cycle vs. 32) * 3x bandwidth to RAM (230 GB/s vs. 68) [edit: updated for Haswell-EP] https://en.wikipedia.org/wiki/POWER8#Specifications http://www.redbooks.ibm.com/abstracts/tips1153.html What is it good for?

Curious aside -- is there any blog / article out there where someone has tried to max out network bandwidth on an x86 box? I checked a POWER8 we have today and it has 14 PCIe3 slots (mix of 8x/16x), so theoretically one could load up 14 40GbE NICs on it. I'd be interested to see some kind of I/O shootout to see where both systems hit a wall.

e.g. Snabb Switch 20x10GbE on x86 https://lukego.github.io/blog/2013/06/23/echoing-packets-wit...

Post reply on HN