Parallel Pi-ing

Introduction

Okay guys, I've been thinking about going for something a bit different again, I've gone from making a voice recognition program (which actually works great) to considering my next project, well I'm debating between the two:

  1. Augmented reality.
  2. Modular applications. - This is the idea I'm talking about more so.

I was thinking to myself today, I like how you can have some things which are modular, I guess PC's are modular, to some extent, I mean you can have a cheap motherboard, but a high end GPU and CPU and 16GB of RAM. Well I've been thinking, why don't we apply the same sorta idea with software? - I guess some software applications use this concept/idea, but I've been thinking, rather than make someone pay more for more stuff they may or may not use. Plus, wouldn't it be quicker when it comes to developing the software - I mean you could create a bare-bone software system, then include additional features. Like I said, I guess I know that some places/applications do this, but why don't more places do this?

My Idea

I've been thinking, why don't we utilise parallel computing a little bit more, like with Raspberry Pi's, they're cheap, small, and you can use a single Raspberry Pi to do so many different things. So how great would it be if we could force multiple Pi's to work together, even if you were to make software that was broken into smaller bits, like separate classes. But rather than storing it all as one program by itself, why don't we make applications that are all but standalone parts of a main system?

Just to clarify, like myself, I've been working with some voice recognition software, and I've been looking into ways where I can make my PC interact with Raspberry Pi's. Well I was thinking, rather than handle all of the processing on my own computer, what if I installed certain programs on different computers, which are run, when I command the central PC to do so. I guess the idea I'm going for is kinda like network based processing, where you can distribute a problem over a network, and all of the machines on the network work in sync to solve the problem.

I honestly thought that this may be a lot more difficult to implement, before I started learning more and more about it. I mean even if you were to create an augmented reality application that is quite heavy on the physical components, if you were to split the load among many different PC's that are connected to a LAN device, then surely it should perform better, unless you're rich and you've got a micro super computer in your house or something like that. I should also NOTE that when I say heavy on the physical components, I mean so heavy that it would cause strain on an i7 PC, with a silly amount of RAM and a GTX1080 or something like that.

BUT with that said, I don't know how affordable this would actually be in comparison to building yourself a super high end computer, and I also don't know what sorts of performance differences that would occur. However I would imagine, that if people made more applications that were structured like broken applications, then surely, it would be more useful for distributed hardware, or so I'd imagine. But maybe, if it were the average application, then it would be much more efficient for a single computer. Again, so I'd imagine, I don't know the formal facts and figures, hence why I'm adding the final part of this post.

Applications

So in terms of applications, I was thinking, you can use n number of Raspberry Pi's to do just about anything, from a smart home system to making an interesting and very small server system, I've heard of plenty of people use Raspberry Pi's for server projects.

I mean it shows that Raspberry Pi's are so incredibly useful that many places and companies are now holding competitions for kids to develop applications with Raspberry Pi's. I mean even the ESA [European Space Agency] is supposedly using Raspberry Pi's. Are Raspberry Pi's the future? I mean in my honest opinion, thinking about it, it seems that way, I mean Intel have now jumped on the microcomputer band wagon, with their Intel nucs. And many other companies are also working on making smaller and smaller computers, ranging from gaming spec systems to very basic computers, like a Raspberry Pi.

Another benefit of more people using the likes of Raspberry Pi's, it can cause for more people to learn how to build electronic devices, and program computers I guess. I mean at a very basic level, you could even say how some users could use the likes of a Raspberry Pi for basic computational tasks, and I only say this because of how space and cost efficient they are. I mean for basic tasks, they're not exactly going to struggle to run them, I mean if you need to run something like a text editor too, I would've imagined that a Raspberry Pi would be ideal.

For the users who are among the 'Netflix and chill' gang, I would have again, imagined that a Raspberry Pi would be excellent, again, they're cheap and small, and I'm sure that they wouldn't struggle to watch some basic video content? Honestly I could easily be wrong, I haven't looked at what Raspberry Pi's are capable of in great detail, and I’ve just looked up some of the cool applications that you can actually make by using a Raspberry Pi.

Discussion

I'd appreciate it if you guys could get back to me with hard facts and figures, I mean the aim I'm going at is price efficiency over computational efficiency, I mean sure, from the computational perspective, then I guess that a single computer would work much better. You wouldn't have to transport data half as far, in addition to the fact that the data would also travel at higher speeds in a standard PC. I mean I know (Or I think I know) that cars use this kinda idea, many computers working together each computer having its own specific task, they all work together to make the car itself work, and work effectively. I'm also sure that this makes debugging and repairs/maintenance more easy for mechanics and engineers.

Again, I'd appreciate feedback, if I'm totally wrong, please just tell me, if you think I'm an idiot, also, please just tell me, etc. But please try to justify your conclusion, I mean it's not like you have to, I'd just highly appreciate it, and finally, thank you if you've read my entire post, and you've read through all of my rabbling, I hope to hear back from you guys! :)

2 Likes

http://makezine.com/projects/build-a-compact-4-node-raspberry-pi-cluster/ Are you meaning something like this?
or this https://resin.io/blog/what-would-you-do-with-a-120-raspberry-pi-cluster/
another one http://www.zdnet.com/article/build-your-own-supercomputer-out-of-raspberry-pi-boards/

Yeah, I do mean this sorta thing, like I've said, I know some people do it already, but why not more?

But that isn't entirely what I meant, sorry, I was typing it up at a silly hour of the morning, and I was very tired, so I wouldn't be too surprised if I've not made my points and questions clear.

So in regards to the Pi being used as a cheap node you have the issue of the ethernet being slaved to the usb hub. This greatly limits the amount of data you can push through it quickly.

https://hackaday.com/2015/04/17/moores-law-of-raspberry-pi-clusters/ If you refer to this article you can see that this person was able to get around 3 GFLOPS with 4 pi 2s. Your average enthusiast GPU is able to do at least a couple of TFLOPS these days. If we pretend that each Pi 2 added to the cluster would bring a consistent amount of computational power (around 0.75 for the Pis in the article so this is what I used) it would require 1312.33595801 Pi 2s to pump out a single TFLOP. (Someone please correct me if my maths is wrong because I struggle with even simple maths problems.)

Yeah, that's one point I included, where a normal PC would tower over using a Raspberry Pi, like if you need instant time processing/interaction, then of course this will be an issue. Like with something that needs to work faster than a second, this would more than likely be a terrible idea, I just mean for things that don't need to be able to process data instantly. Like I also pointed out, distance could also be an issue, I mean the longer the cable, the more resistance, which should also in turn mean slower computational performance.

I'd also like to thank you for the external links, they seem pretty damn interesting.

This link seems to be more interesting than the others, in my personal opinion, not that the other links aren't interesting, but yeah. And as for your maths, I'm not worried about it being that accurate, I mean as long as it provides me with a rough idea, that's great. I'm also sure that's more of a theoretical outcome, I'd imagine that there are many other variables to take into account for the real world, like cable quality, cable length, any external interference, etc.

As we're both agreeing here, or so I believe, if you need to be able to compute something within a second, then a cluster of Raspberry Pi's, that's a pretty bad idea. But if you need something that can be processed in n time, but also is more suitable for multiple nodes to work together, then maybe a cluster of Pi's would be more optimal?

BUT either way, I'd like to say thank you very much for your input! :)

There are 32 node Raspberry Pi's, also a 'Beowolf' like node... It's all possible.

Raspberry Pi

http://coen.boisestate.edu/ece/files/2013/05/Creating.a.Raspberry.Pi-Based.Beowulf.Cluster_v2.pdf

1 Like

The pi's are a great little computer, heck i use a bunch of them myself for home networking, but they do have some massive limitations where the architechture of their microchips, and software simply doesn't cut it.
The cpu it self is extremely slow compared to even an old x86 cpu, and the GPU software for the OS platforms is absolutely horrid so the GPU can't really be relied to do any calculations until that problem is solved, for some reason omxplayer has GPU acceleration for H.264 decoding, which is why you can watch 1080p movies in software like kodi and such, but the gui it self is horribly slow, since the gui doesn't actually have gpu acceleration, but the movie playback does, by just using omxplayer to do playback.
The PI wasn't really created to make super computers, even in distributed grids they fall behind regular PCs in both price and performance.
bang for bucks though you can make some really nice projects for robotics, network nodes etc etc. that just blows the commercial versions out of the water, because of how cheap, and "powerful", they are compared to what is used in commercial grade hardware, and the versatility of the linux platform.

So basically DLC

That would be great but you would have various problems such as network speed to communicate between the Pi's but also there are problems with scaling just as with PC's some programs will only use a core or two for most of its power and some things can't be split up correctly for example there is no performance benefit to do 1+1 on a single PC vs a cluster

You might want to look into the jasper project linked below that is a modular voice program to use could write a modular to send a ssh command to your PC or Pi when it hears the set word or phrase

http://jasperproject.github.io

Pretty much yeah. I mean I know some places do this, but why don't more places do this?

Oh yeah, I mean it's not as easy as saying more Pi's is gonna be better, like you said, doing a simple task, what's the point? Of course you'd have to get a cluster of Pi's for an actual reason, I mean you wouldn't just get a cluster of them for the sake of it? I'm just thinking of things where you'd need multiple processors and maybe things where you need a tonne of sensors, or a tonne of mini computers that can have a specific task, like an anti burglary system or something along those lines. You'd want something like the following:

  • An alarm
  • CCTV
  • Infrared Sensors
  • Laser Beams
  • etc.

The only reason why I'm doing it myself is just for a fun project to do in my spare time, I mean if I wanted voice recognition software, I wouldn't make my own, I'm sure that there are people out there with a tonne more experience in that specific field than I. I'm honestly doing it for fun. I was also thinking about using SSH in my very own project so that my Pi can send data to my PC when 'z' thing occurs or when the user does a certain thing, etc.

I guess the main reason people don't charge for separate "modules" is because if its a company they need to get paid regardless of the amount of users using it and it wouldn't be worth the development costs if only a few people buy it.

The only thing I can think about using a raspberry pi cluster for is learning about how clusters work and password cracking.

Yeah you might need a lot of mini computers for stuff like CCTV or have multiple cameras on one Pi and I guess you could also re-purpose them to be used in a cluster or botnet to do distributed tasks as well as record CCTV

1 Like

the main problem with the Pi's is support because if you were using a cluster of PC's you would have more power both in performance and actual power usage but you could use them for distributed tasks like *coin mining or Folding At Home

1 Like