Hacker News new | ask | show | jobs
by throwaway1979 4995 days ago
I picked up a raspberry Pi a few days ago. Initially, I was blown away by the low price point. Since then, I've been reflecting on what makes a computer useful.

For personal computers - desktops and laptops - I think we don't have a shortage of processor cycles. The minimal specs of the Raspberry Pi make it useable - 256MB of RAM, 700 MHz CPU, a few GB of storage and enough MB to saturate a home broadband connection. What is compelling about the best contemporary personal computing devices is form factor. How easy is it to provide input; how nice is the screen; if it is a mobile device, how heavy is it and does the battery last long enough, etc.

Does a personal parallel computer really help me? At first blush, I am having a hard time seeing how. Clearly, there are CPU intensive workloads that people have mentioned in this discussion - ray tracing is one. The video mentions robotics and algorithms. I have mixed feelings about that since I personally believe the future of robotics lies in computation off the physical robot itself - aka cloud robotics. A use case I personally would find beneficial is the ability to run dozens of VMs on the same machine. Heck ... each of my 50 open browser tabs could run inside separate VMs. I know light weight container technology is around for a while. e.g. jails, LXC. But what about hypervisor-based virtualization - e.g. VMWare, Xen, etc.? While the parallelization offered by this tech would be awesome, what seems to be missing is the ability to address lots and lots of memory.

4 comments

As the majority of robotics research in the US is paid for by the military, I think there's more of a market for "fast computation on board" than you'd think. Communication and networking is expensive and hard. As a practicing roboticist, I'd love to work with a few of these. =)
The real value is in pushing forward a general compute device with many cores. Overall our programs are still stuck in the 1-2 thread era, and there is a bit of a chicken/egg problem. Without a very effective multicore processor, the payoff in writing parallel programs is small. GPGPU is still to expensive and not very practical due to memory constraints and the GPU/system memory bottleneck. This probably wont be the device to change all of that, but even failure is progress.
I used to feel exactly what you say. In 2006, when I first encountered the cell processor inside the PS3, my eyes popped. I found it extremely challenging to write useful software. The asymmetric architecture was a big culprit. I briefly looked into the dev environments offered by the likes of Rapid Mind but gave up. This didn't feel like general purpose computing.

Back in 06, I remember seeing fear in the eyes of some hardware and software engineers. In the next year, we were supposed to have 100 cores in our plain old desktops. How the heck are we going to program them? I found the situation a bit irrational. Every talk started with the death of Moore's Law because we couldn't shrink dies any further. More cores was posited as the only solution. Except, no one could code them for general purpose apps like Word, Excel, etc. In retrospect, I wonder why I don't have 100 cores in my desktop in 2012. I suspect because they aren't useful for average joe user.

P.S. Forgive my directionless rambling. I don't have a particularly strong opinion on this subject anymore.

Yeah, the average program will see no benefits - the one area which it will make a huge difference is games/graphics/simulation. There are so many problems in graphics that are fairly trivial to parallelize (especially with the rising interest in voxels and raytracing). The main thing is it needs to be very easy to program, and cross-platform (neither is an easy feat). Right now we are kind of stuck in a rut with current graphics APIs - you can do a lot with them, but they are also very limiting when compared to a general purpose CPU - back in the days of DOOM, the Build Engine, etc, one used to be able to write a rendering from the ground up; now (for better or worse) we are limited to one way of pushing polygons onto the screen, and there are a magnitude less of ways to be creative. Note that I used to be a huge GPU proponent, but after about a decade of working with them I am turning back to software rendering.
If by "expensive" you mean "time-consuming to implement algorithms on" then, yes, GPGPU is still expensive. The cards themselves, though, are stupidly cheap. For $140 you can get a card with 700+ general purpose shaders that run at around 800MHz.
Yes, they are relatively cheap on their own, the only problem is the added cost of a discrete card in addition to a cpu, and potentially a better power supply to support them both. In terms of many people's budgets it is nothing, but I am talking more about the average consumer. In the end, buying a desktop with a decent discrete GPU and CPU is probably going to run you at least $800; again, not a lot, but if this company could offer a competitive solution for $100, it could drive more "mainstream" adoption, although that is probably wishful thinking at this point.
Don't forget that nearly all Intel desktop CPUs come bundled with some kind of embedded GPU. It's nowhere near as powerful as a separate GPU chip, but it's still able to do OpenCL. The Intel HD4000 GPU may not be state of the art, but it out-performs the CPU for GPGPU-type operations.
It's a dev platform. A way for people to experiment with a new architecture. The roadmap is to eventually get to PCIe cards with thousands of cores.
The raspberry Pi + tarsnap or dropbox is the disposable computer I've wanted for a while.

That plus cheap access to a massively parallel computer could also be very interesting.

Except where raspberry Pi + online storage could be useful to many, many people. Massive parallelism is probably only interesting to folks like us.