by ninlar » Thu Jun 22, 2017 7:52 am
Oh wow, I am heartbroken. I had been looking at the Parallela board on Amazon for months, and my wife got it for me on Father's Day last week. I spent a long time deciding what development board I would get. Part of me wanted to dive back into VHDL or learn Verilog to build an accelerator and learn more about hardware design. I wish the catalog for my degree had allocated more time FPGAs I found them fascinating. At the same time, my passion is parallel computing. The Raspberry Pi is nice for software development, but if you need precision control over GPIO, then you would be better off with the Arduino. The Arduinos are great for maker projects and learning more about embedded software development starting at a much higher layer of abstraction but allowing you to go deeper as you learned more. Finally I was considering a GPU development board for machine learning and high performance computing.
Then I came across the Parallella and felt like a little boy begging my father for a Super Nintendo. This thing is amazing! It has a 16-core co-processor? What a great idea. An FPGA soldered onto a PCIe board has great applications that even Microsoft is using in their Azure Cloud to offload network processing to improve the hypervisor. But as you showed with the FPGA accelerator in 15 minutes post, designing hardware is hard. So much easier to re-compile or attach a debugger, rather than synthesize and design good test benches when developing for FPGAs or ASICs.
This board is what the colleges should be using to educate the next generation of Computer Systems Engineers. Parallella allows you to learn about designing a computer system from the ground up including operating systems and kernel driver development, parallel and / or concurrent programming, hardware design via the reprogrammable Zynq FPGA. This board easily replaces a Raspberry Pi, Arduino, and Digilent Xilinx dev board that might have been previously used to educate. In addition it is a great platform to learn the challenges of concurrent programming.
I'm sad to see this post right after I got my board, but I truly got my money's worth already. I've already learned so much with the board, and I hope to see the community continue to contribute.
Some others mentioned that they enjoyed this board because it was "hard." I agree, I like the challenge. But at the same time, some things are a pain in the ass. So many of the GitHub repos have submodules that reference other repositories. The Readme.md files are confusing as to which branch I should be using. If the community is still motivated, I'd love to see the repositories consolidated better and many of the submodules eliminated. It fits well for the examples, but not so much for the Oh! Library, FPGA sources, etc. And then the Ephiphany SDK is posted under the Adepteva account. It should all be brought under a single GitHub account without the submodules. The branches should be killed and replaced with a well known model like GitFlow to remove confusion.
While I enjoy the challenge of programming the board, I don't enjoy when that challenge is figuring out which branch on which fork I should be using. Figuring out issues like that are not as satisfactory as problems resolved while actually coding for the Epiphany. It would definitely help drive interest and adoption if the tooling was better which has already been mentioned. If you have great tooling, then more people will follow through on developing for the board. One example might be an extension for Visual Studio (or your favorite IDE) that adds project templates which automatically setup a solution with two projects: one for the host and one for the device (Separate templates for OpenSHEM, eLib, eBSN, COPR Threads, etc). The device project would have its makefile or project file setup to compile with egcc while the former used gcc without the new novice needing to be aware. Deployment and debugging would be as simple as hitting the "run" icon which could build and deploy the binaries via ssh and also attach the debugger (if debugging). Add a daemon to the Parallel board that allows for easier discovery via ICMP or UDP broadcasting with the IDE.
Same goes for the hardware side. Project templates for Vivado that include board files and the ability to easily add an AXI peripheral to the Zynq.
Epiphany and Parallella are incredible even outside of education and research. I definitely see High performance computing using a PCIe board with a bunch of Epiphany-V chips. General purpose HPC via many cores vs incredibly difficult single purpose ASICs or FPGAs. I can see the market for the Epiphany. I hope the community continues on, the tools get better, the repos are consolidated, and the community grows past the critical threshold needed for it to go viral. At the same time, I'm entrepreneurial and I know what it feels like to put so many hours into something literally resulting in my health deteriorating into nothing, and then have the project fail in the end. When you have kids, at some point you need to go back to that salary. I am so impressed at how all of this was pulled off with so little resources. Thanks Andreas and the community for all the hard work and effort you all put in. I still recommend this board over and chipset over the others. I hope this isn't the end of Epiphany and Parallela.