48 Core ARM-64 processors from Cavium to challenge Xeons?
eetimes.com
eetimes.com
e.g. let's say 90% of your task can be perfectly parallelised. The remaining 10% of the time will not be improved. So you won't ever get more than a 10x speedup no matter how many tens or hundreds of extra CPU cores you have...
I was trying to make the point that as we step up the number of cores, the actual gain is less and less.
BTW, considering even my humble laptop can do 8 threads at once, it's about time we started building office suites and browsers to take advantage of these processors.
Only if the tasks are trivially parallelizable. Any sequential dependencies among those tasks limit the effectiveness of parallelization. This is exactly what Amdahl's Law says.
> my humble laptop can do 8 threads at once, it's about time we started building office suites and browsers to take advantage of these processors.
Multiple browser tabs or open office documents are trivially parallelizable (eg, processes). The work within those tabs or documents is not linearly parallelizable -- running JS/macros, handling input, rendering, etc. Existing browser/office suites already do a pretty good job of splitting these tasks up, but they can't be split up arbitrarily into $core_count chunks.
Which is a very common scenario on web and application servers, specially if you design your web applications to be scalable.
> Multiple browser tabs or open office documents are trivially parallelizable
They would be if I could pay attention to more than one tab or document at any given time. In reality, I spend most of my time with full-screen apps and there is little point to keep other tabs or documents running.
Doesn't matter. You can (and probably will) still hit horrible bottlenecks in the network stack. Another flashback to developing on the 64+ Niagara cores. We were running an embarassingly scalable web application - loads of independent concurrent requests - but the Solaris OS just couldn't keep up.
Has your NIC driver been optimised to scale for tens/hundreds of CPUs, I wonder?
But from a whole datacenter perspective, I believe having servers with more cores is more efficient than having more servers with fewer cores, since data travels faster between more of the cores.
Servers absolutely can have sequential dependencies, especially if there is a shared resource (eg, databases, IO, etc). If your application can make full use of all your cores without any inter-dependencies, great -- but that is not always the case.
How are you looking at this?
From limited CompE background, my understanding was that moving data around core -> core burned a significant amount of power, even on the same die. (Using the comparison of one core vs two equally performing but separate cores)
I remember from benchmarking a high performance transactional messaging system in Java I was working on seeing how it hit a flat line at some point where it didn't scale at all due to CPU/memory contention (this depended on maximal number of threads allowed). We had to look at alternative designs such as 0MQ to see how they overcame it - basically they put one working/client thread per core to achieve their 1M messages/s. We were using 10s of thousands of threads in our middleware when necessary, and that was faster than async NIO in Java 6 at that time.
Having said that, I've been using a similar aarch64 machine for a few months (sorry, can't name it -- NDA), and single thread performance is just fine. I think people once used an RPi and now think every ARM has terrible performance. 64 bit ARM is a completely different architecture and far better performing.
I have to be careful about exactly what I say here because the NDA prevents me from doing any kind of performance benchmarking (for good reasons: this is pre-release hardware and the performance doesn't reflect what the final hardware will be capable of), but ... performance is fine, I've had no problem with either single-threaded tasks or parallel compiles. Given I'm using it as a remote machine over ssh, it doesn't "feel" any different from an x86-64 server.
I just remember generating SSL keys at a speed that my pentium would laugh at, because SSL didn't supporting threading itself out to all 512 cores.
I would buy these chips in an instant, similarly to Parallela's 64-core ARM.
The competition would be Xeon Phi - I assume that is much more expensive and the memory is too limited (8GB).
Parallela is not a 64-core ARM, it's a 2-core ARM with a bunch of co-processors which have to be programmed specially. The co-processors have little local memory and the memory model is very weak, there are no memory barriers precluding the use of general-purpose code.
A lot of enterprise* server stuff is written to take advantage of multiple cores/hardware threads and has been for a while.
(*yeah, I hate that word)
Otherwise, even if you have large chunks of shared memory, it's usually possible to work around that without locks.
And if you're okay with parallel programming (which, let's face it, is the only way to do high performance computing), then you'll possibly be hit by memory bandwidth or cache size. Because if you have 48 cores on a single lump of silicon, they won't have very large dedicated caches each. However, if you have an appropriate job that will scale out to all the cores with a small working set then the performance of this thing could be rather interesting.
Networking code has no problem with this high core count mostly because it was already written to work on already high-core count MIPS systems. For example, the previous MIPS64 offerings from Cavium pack 48 cores on a chip...
(I'm a lot pessimistic than most of the people in this thread. Network processors haven't really made a lot of sense compared to Xeons even for networking applications for a few years. Why would they do any better in the general purpose market?)
"...haven't really made a lot of sense..." - You are completely wrong here. Most data center grade networking equipment does not run Xeon and the products that do are generally significantly less performant. Especially when it comes to security or packet inspection.
Because this is Cavium's niche and biggest asset, and all their customers are doing networking. Of course they might want to expand their business, but they have always done that, really, and they only had success in networking. The special features of this chip (things that are Cavium-specific and not ARM64 specific) are features that make a lot of sense for networking equipment, and are not very important for general purpose servers. These special features are also present in their existing MIPS64 line.
> Network processors haven't really made a lot of sense compared to Xeons even for networking applications for a few years.
Really? Where's that 100GbE Xeon switch?
That's their current niche. They're trying to get out of that niche, as the article clearly shows. (Let's be clear here -- the article might be a PR fluff piece, but it hasn't been written in an ignorance of the position of Cavium in networking). If they try to market this stuff for general purpose servers, they need to have an answer to the problem of parallelizing general purpose workloads. I don't see why this is such an offensive thing to point out.
I work at a company making networking equipment (mainly for telecoms), targeting the 20Gbps range at the top end, with Xeons. We could scale much higher for trivial workloads like switching, but the bottleneck is in actual processing where the wimpy MIPS cores aren't particularly tempting. The offerings of companies like Cavium have really not looked compelling compared to standard Xeons during the last 4 years or so.
Maybe if we'd started before that, we'd have started with a network processor and would naturally stick to it. But many of the more established telecom suppliers we've interacted with are likewise doing significant amounts of stuff with Xeons (standard hardware, or ATCA blades at the most exotic end). The only Cavium card I remember anyone using was doing 10Gbps of traffic that was so trivial, that even the low-spec 1U Xeon server the card was installed in could have handled it with the proper userspace NIC drivers.
So no, these are not just designed for networking equipment, they are planned to target 4 different areas.
https://blogs.oracle.com/ningsun/entry/cryptography_accelera...
http://www.cavium.com/newsevents_Cavium_Unveils_48-core_OCTE...
http://www.ubuntu.com/download/server/arm
Links to "Project Thunder SDK":
I will be very excited to see some hard numbers when (if) this thing is ever released.
Knights Landing is when the model becomes a server unto itself, with 384GB of addressable memory, albeit still maintaining the ultra-fast 16GB of local memory per CPU.
Also, there is a difference in required memory architecture when it comes to optimizing CPU thread performance vs SIMD - CPU is more sensitive to latency, SIMD to bandwidth. You usually have to pick the memory type (e.g. DDR3 vs GDDR5) that optimizes one of those and that would tell you what market you target.
I am not sure how AMD handles their HSA - they seem to have discontinued plans for GDDR5 so their Fusion GPU is going to be bandwidth-starved.