what is the feasibility of putting together a supercomputer using arduino? what all could you do with say 20 spare arduino megas with Ethernet. what are the limits?
thanks!
moderatore update: fixed typo in title
what is the feasibility of putting together a supercomputer using arduino? what all could you do with say 20 spare arduino megas with Ethernet. what are the limits?
thanks!
moderatore update: fixed typo in title
what are the limits?
Apart from the limited memory, memory bandwidth and 16MHz clock speed?
what if instead of limits I ask capabilities?
what if instead of limits I ask capabilities?
You go first
It certainly seems feasible. As to capabilities, I'm guessing its limited by the dedication of those trying to build it, and the laws of physics.
Also, there is no floating point math module on the Arduino.
Estimating simplistically on MHz alone, to replace the octacore 3.2GHz cpu in a modern pc/laptop would take over 1,600 arduino Megas. But that cpu is 64bit with floating point hardware...
Arduinos will never beat a supercomputer at being a supercomputer, and vice-versa!
For this purpose, take a look at the RPi: Engineers build Raspberry Pi supercomputer
Before you get started paralleling processors, you'd need an operating system. And, connections/ports for a display, keyboard, mouse, and hard drive. That may not be impossible (although you are never going run Windows or the full-GUI version of Linux), but it's hardly worthwhile or practical given the other choices you have when it comes to building a computer.
Before you get started paralleling processors, you'd need an operating system
Maybe.
The Inmos transputer didn't have an OS (though it did have instructions that allowed I/O and basic OS-like operations and hardware for inter-processor communications), yet it was possible to connect networks of them and perform useful work with only 2 to 4 kB of RAM for both program and data.
As much as i love arduino i would think the product for you is a parallella from adapteva i think its called
Inmos transputers! I didn't know anyone else remembered them.
Maybe if the OP wants to play, implement a transputer emulator on Arduino, even program it in Occam, which is still available as C source...
tfoote:
what is the feasibility of putting together a supercomputer using arduino? what all could you do with say 20 spare arduino megas with Ethernet. what are the limits?
Depends on what you mean by 'computer.'
Related to the reference to the 64-Rpi super-pi, Rpi and Arduino are completely different animals, with different purposes. Rpi has all sorts of conventional computer I/O, but no individual I/O control pins the way Arduino 'sees' them.
Given that distinction, Ardiuno is in not a computer that way an Rpi is, it is a controller.
Yes, you could build a super-microcontroller. It's NOT easy to address 1000 discrete I/O interface pins in Arduino, even with a whole boardfull of shift registers. However 20 Mega2560s can instantly address those 1000 I/O pins directly with no external hardware, with one 'supervisor' Mega could manage the array of the rest of them.
The super-pi has 64 Rpis. 64 mega2560s yields about 3200 I/O pins. Very cool, if you need them. I don't know how fast the supervisor Mega can deal with those pins though. Whether ethernet (with a shelf full of routers,) or I2C or USB makes more common/$ sense, I leave as an exercise for the student -- who would be -you- BTW since it was -your- idea.
I think the answer is in the title
Superconputer
...R
"con", yes, but interesting discussion 8)
It's NOT easy to address 1000 discrete I/O interface pins in Arduino, even with a whole boardfull of shift registers. However 20 Mega2560s can instantly address those 1000 I/O pins directly with no external hardware,
How is a boardful of shift registers different in this case than a rackful of 20 Megas?
I think I'd rather have the shift registers - 125 SPI.transfers to read all 1000 bits in while writing all 1000 bits out. No messing with a RS485 to read from 20 different slaves.
I have code running now that sends out 45 bytes at 20 KHz rate; 125 bytes would slow down the overall rate.
1/125uS = 8 KHz, and its just over 1uS/byte, so the rate would be a little less than that.
I doubt that interfacing to 20 slaves to read 7 bytes from each could achieve similar speeds. You'd have to go to faster interface speeds than the 8 MHz SPI that a 16 MHz Arduino supports.
A hammer makes a poor screw driver, and vice versa. Depending upon slot and size of the screwhead, an arduino could be used as a screw driver, but it ain't no computer. It is a micro-controller, intended to replace some hardware. While more powerfull than some computers used in the past (Apollo to the moon), it is still just a controller.
It will probably be possible to construct something reasonably supercomputer-like with the Papilio platform soon. Altera has announced they're putting hard-wired floating point units on FPGA's and the top-of-the-line chip will be capable of an aggregate 10 teraflops. A board with one of those 1000+ pin BGA's would probably be pretty pricey, but something more reasonable could probably be made. So you would be programming a ZPUino with a large vector math unit bolted onto it or a bunch of them with smaller vector processors. Nice for 3D graphics or computer vision.
I just went to the Altera site. The low-end Arria 10 FPGA is rated at 140 Gflops peak. There is also a SOC version which comes with a dual-core 1.2 Ghz ARM, I2C, SPI etc. hardwired. This is probably a bridge too far, but I'm thinking pcDuino meets Papilio plus a mini-supercomputer.