Quad Core Arduino

first announced here...this is a project that Matt finally got to a point where he's made a ton of great progress!

Now it's ready for real world applications of relay control, rocket launching, and more... another live example that parallel algorithm's classes can be very practical AND fun.

Being fully networked, bus and token ring, this vectorization of the Arduino is great for a school project or if you need some serious parallism in your project.

It's available for purchase in either kit form and or fully assembled working out of the box. Like with most of Matt's Arduino projects, he's posted the source code here so it's fully functional right out of the box.

You have no idea how many emails I've received over the past day and a half since I blogged about this. Ridiculous! I am working on trying to make a map-reduce API that would allow the Arduino community to play around with and experiment with parallel processing algorithms. My personal goal is to make parallel computing more accessible to folks (and not just an ivory-tower, impractical concept). The cool thing is that you can spawn off threaded applications, and even get cross-arduino signal feedback loops to make crazy wave generators (sounds and lights).

It looks interesting, but I'm having a very hard time imagining what to do with it (and I have studied concurency). If it's for extra processing power, an eeePC+Arduino is in the same price range with far more power, and if it's for extra IO, port expanders should work at least as well.

Oh, I can see where you can exploit some concurrency without needing an OS (or other timeslice type support), especially if the tasks are heterogeneous. Think about a robot - one core for each sensor (or type or group of sensors) and a controlling core to make navigation decisions based on results.

The Parallax propeller seems to be getting folks excited, and it's just a handful of microprocessors tied together - fundamentally, an integrated version of this.

-j

Oh, I can see where you can exploit some concurrency without needing an OS (or other timeslice type support), especially if the tasks are heterogeneous. Think about a robot - one core for each sensor (or type or group of sensors) and a controlling core to make navigation decisions based on results.

Your robot with controllers at different parts isn't so much concurrency as doing some abstraction at the hardware level. If you can get a native CPU that's a thousand times faster than the mega168, why mess around dividing your task even if it does naturally compartmentalize?

i'm still working on dual core!

slow down young folks!

lol

I'm wondering what happens when I hit the "upload to I/O board" button in the IDE :D

If you can get a native CPU that's a thousand times faster than the mega168, why mess around dividing your task even if it does naturally compartmentalize?

Cost? Size? Power consumption? Fault tolerance? Because you can? :)

-j

If you can get a native CPU that's a thousand times faster than the mega168, why mess around dividing your task even if it does naturally compartmentalize?

Cost? Size? Power consumption? Fault tolerance? Because you can? :)

I really don't want to criticize someone else's work. All I was saying is I really don't get this project.

But it's $320. An EeePC is $300, then add one Arduino as an I/O board. It's probably better sizewise than the 4 arduinos, and it takes 13 watts. I just don't see why one would develop a distributed program on the platform (and I have done concurrent programing on unix clusters).

This project seems novel and cool, but from commercial point of view it seems like you could get similar performance out of something much simpler and cheaper using 32-bit microcontrollers. I guess that lacks appeal for you because it would move it out of the Arduino realm?

  • Ben