Over recent years, cloud processing has become cheaper and more available to the point where cloud desktops are now viable alternatives to our regular desktops. RAM and memory intensive programs can benefit from being run on Amazon Web Services (AWS) instead of on a regular desktop and Vitis is no exception to this rule with a minimum RAM requirement of 32GB for embedded and 100GB hard disk space. Running multiple jobs on a desktop can be impossible and can even freeze the computer, making running tasks in parallel impossible, decreasing an engineer’s efficiency.
AWS presents a great solution to this because of the scaling nature of the cloud. Want to have three simulations running at once? No problem. Just start three instances. This is incredibly useful for FPGA development where a complex simulation can take hours or even days. The cloud even lets us increase the amount of RAM, so that simulations can be run without fear of running out of memory.
This also makes it great for regressional testing, which can often involve multiple memory intensive runs. With AWS these tests can be performed in the background or overnight, so we can get on with development of our core IP without the fear of crashing a simulation.
The use of cloud for embedded systems seems counter-intuitive. Surely we need to be able to run Vitis on our desktop so that we can plug in our development boards and debug from there? It is true in this case we need Vitis on desktop, but for the most part how much time we spend debugging on our boards is dependent on the project. For most academic projects that focus on exploring a wide design space of different architectures for acceleration, little time needs to be spent testing on the board itself, whilst for industrial systems integration projects large amounts of time may be spent testing on the board. Even in those cases the project can benefit from a hybrid system, for instance regressional tests may run in the cloud, whilst simultaneously running system tests on the desktop.
In this tutorial, we cover the basics of starting up a CentOS AWS instance, creating a cloud desktop and then setting a full development environment for embedded Vitis with the following programs installed:
sudo yum -y update
sudo yum groupinstall -y "Server with GUI"
sudo systemctl set-default graphical.target sudo systemctl default
sudo yum install -y tigervnc-server
sudo passwd centos
ssh -L 5901:localhost:5901 -i <your.pem> centos@<public IP/DNS name>
sudo file -s /dev/xvd*
/dev/xvda: x86 boot sector; partition 1: ID=0x83, active, starthead 32, startsector 2048, 1048573919 sectors, code offset 0x63 /dev/xvda1: SGI XFS filesystem data (blksz 4096, inosz 512, v2 dirs)
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT xvda 202:0 0 500G 0 disk xvda1 202:1 0 500G 0 part /
As mentioned one sacrifice for using AWS, it is more difficult to program and debug on the embedded platform itself, but this does not make it impossible. We can use AWS to generate the SD card image which we can then use ‘scp’ to copy the files to the host machine and program the board.
Now we have Vitis setup from an AWS platform, meaning we can begin programming our FPGA projects. We hope you found this helpful for getting setup and if you would like to know how to get started with programming FPGAs with Vitis check out our tutorial series on Computer Vision.
If you have enjoyed this tutorial but are in current need of talent to build advanced Computer Vision systems on FPGAs, consider joining our ClickCV Early Access programme. ClickCV Early Access provides bespoke service and support for developing advanced Computer Vision systems on FPGAs. We use our own proprietary Computer Vision Library, ClickCV, to provide our clients the cutting edge in low latency, high definition processing. Contact us today to find out how we could build your next-generation system.
About the Author: Andrew Swirski is the founder and managing director of Beetlebox, a Computer Vision Acceleration specialist. The company develops the Computer Vision Acceleration library called ClickCV, which is designed to fully utilise the hardware adaptability and performance of FPGA chips. Beetlebox is currently running an Early Access programme, where the company provides bespoke service and support to develop client’s Computer Vision systems on FPGAs. Before Beetlebox, Andrew Swirski previously worked at Intel (formerly Altera) in FPGA encoding and decoding. He completed a Masters’ in Electrical and Electronic Engineering from Imperial College London in 2017.