The Jetson should work like any other Linux box with Nvidia hardware available when it comes to writing MIPI or CUDA.
So whatever MIPI or CUDA stuff you have that will work on desktop machines should run the same on the TK1.
The built-in build-essentials with ARM GCC should support both MIPI and OpenMP without any issue. Just use the same make commands to get it going as you would on a desktop linux machine.
However at this time OpenCL is not fully released or supported on the TK1 yet.
After I created a working set of steps I just plugged each board into my serial cable of my laptop and ran a config script. I plan to make an image later but for now this worked. I have another 6 nodes coming in next week. I also utilize NFS to sync the work folder and user bin folder.
Nice work Pyrex! I agree with Dustin, that a cluster of Jetson TK1’s is perfect if you run algorithms that are suitable for cluster computing (ie: are OK to split up between separate GPUs with separate memory). Comparing a top-of-the-line desktop GPU versus a large cluster of Raspberry Pi’s versus a small cluster of Jetson TK1’s, it looks like Jetson TK1’s are significantly better in terms of performance per dollar or Watt of electricity than the other options!
Pyrex, when you have your new cluster of Jetson TK1’s, post some info here and I can add it to the Jetson TK1 Wiki such as in the Projects section and possibly in a performance section.
Still moving along, I am going to be digging into to the OS to find anything I can disable or just remove in order to boost performance. As it is I just managed to get OpenMP working without a hitch by disabling the CPU power saving features and manually enabling all the processor cores. I then managed to utilize OpenMP + MPI + CUDA. More to come as I continue to improve on the code.
Also, if someone has some ideas on building a PSU I’d appreciate any feedback! I am running out of plugs…
I believe if you aren’t plugging in SATA drives or PCIe cards then the Jetson needs about 1.5A max of 12V power.
So if you have an ATX PSU with 15A+ 12V available you could just build a plug adapter.
Or just go order a 20A or higher 12V PSU online similar to this.
I would get higher than you think you need so 20A or more would be what I would get.
Also as a benefit, a 20A 12V PSU could help you run SLI with a cheaper PSU once you are done working with the Jetsons.
You should check the power measurements that were posted on this forum before ordering to make sure I was right at the maximum power draw, since you are planning on running the maximum power draw here. The Jetson ships with a 5A supply so you might need to go higher for 10 of them.
Why not power it through the molex connector? I have seen references stating yo can power the board using the onboard 4 pin pc ide connector. I only see one on the board and I presume the 12v rail doesn’t care where it gets power.
This way you use a commercial off the shelf pc power supply. If you buy a 1300W supply you should be able to avoid the barrel connecters altogether and just run a bunch of molex connectors. That supply would support 26 TK1’s. Nice, compact solution that is more energy efficient than 26 wall warts.
Have attempted to get PyNN running but having issues with neuron + iv compilation and other weird issues where folks assume everything is x86 with SSE support coded into the source.
If possible I would like to setup a PCI based network - as mentioned on the nvidia OpenCV article, 32Gb connection between each Jetson but it’s still really hard to find cheap PCI networking
The x86 linux host is also running puppet master - one thing that could additionally help adding new nodes would be the ability to create or alter hostnames when flashing new boards. This way puppet could just image each new board as they are added and give a unique but similar config to all newly added boards.
Lastly - if I could create a memcache or shared DDR3/4 based service that was also available to these hosts via the PCI bus I believe I could do a bunch more cool things. As it stands this is a great platform for learning, automating, and understanding parallel programing.