FPGAs
Attention
Our previously supported Altera FPGA nodes at CHI@UC and CHI@TACC are in the process of being decommissioned.
We are actively enhancing our FPGA capabilities with new offerings in development. Altera nodes previously supported on Chameleon will be unavailable after Feb. 7, 2025.
While these updates are in progress, users can continue accessing our existing Xilinx FPGA resources using documentation below. Our team is working on implementing improved workflows to streamline current FPGA development and deployment processes. These enhancements will provide more efficient ways to utilize this hardware.
If you have ideas or suggestions regarding the use of FPGAs on Chameleon, please reach out to us at contact@chameleoncloud.org.
We will provide additional updates as new features and hardware become available. Stay connected with our platform for the latest announcements.
Introduction
Chameleon provides access to two Xilinx Alveo U280 FPGA nodes, both of which are available at CHI@UC. Each node is equipped with:
- Memory:
32 GB DDR4 memory (two 16 GB channels)
8 GB HBM (High Bandwidth Memory)
On-chip PLRAM memory
- Connectivity:
PCIe Gen3 x16 interface
Two QSFP28 ports supporting up to 100Gbps network access (Note: These ports are not configured currently but will be available in a future update)
- Additional Specifications:
300 MHz default clock
Three Super Logic Regions (SLRs) with dedicated compute and memory resources
The workflow for using these FPGAs on Chameleon consists of four main steps:
Reserve a bare metal node with FPGA hardware
Launch an instance using a supported base image
Install required Xilinx software tools in your environment
Load your pre-compiled bistream onto the FPGA and run your application
Important
Chameleon does not provide FPGA compilation services or development tools. Users need to compile their code elsewhere before running it on Chameleon’s FPGAs. We are currently exploring new ways to provide FPGA development tools and workflows in the future.
Reserverving FPGA Hardware
CHI@UC provides two compute_cascadelake_r nodes equipped with Xilinx Alveo U280 FPGAs:
Node
P3-CPU-038
(UUID:89e48f7e-d04f-4455-b093-2a4318fb7026
)Node
P3-CPU-042
(UUID:926a9c99-3b27-45a7-818c-e6525b9ce89c
)
To ensure you get the correct hardware, reserve these nodes specifically by UUID, as explained here in our documentation.
Launching Your Instance
After your reservation becomes active:
Launch an instance using a supported upstream image for the Xilinx Runtime. Chameleon suggests using our supported CC-Ubuntu 24.04 as a base image. Advanced users may choose to use any upstream image that Xilinx supports. Find a list of supported upstream images here
Connect to your instance via SSH
Installing Xilinx Tools
Compiling code for FPGAs requires the Xilinx Vitis™ software platform, which provides a comprehensive development environment for creating FPGA-accelerated applications. The Vitis platform includes the Vitis Unified Software Platform, Vitis Core Development Kit, and Vitis AI Development Kit.
Flashing the FPGA with your bitstream requires the Xilinx Runtime (XRT) tools, which are part of the Vitis platform. The XRT tools provide a command-line interface for managing FPGA devices, including programming the FPGA with your bitstream. You can also install the XRT environment separately from the Vitis platform, although functionality may be limited.
Guidelines for installing the Vitis platform can be found in the AMD documentation. The installation requirements for Ubuntu are also provided in the documentation here.
Guidelines for installing the Xilinx Runtime (XRT) tools can be found in the XRT documentation.
Loading Your Bitstream
After installing the required tools, you can program the Xilinx Alveo U280 FPGA with your pre-compiled bitstream using the Xilinx Runtime (XRT) tools. The steps below are the basic workflow for flashing, but we encourage users to review the AMD documentation for more detailed instructions.
1. Verify the FPGA Device
First, ensure that the FPGA device is recognized and ready. Use the xbmgmt
tool to examine the device status:
sudo xbmgmt examine --verbose
Look for the device BDF (Bus:Device.Function) identifier, which you’ll need in the next steps. For example, it might be 0000:81:00.0
.
2. Program the FPGA with Your Bitstream
Use the xbmgmt
tool to program the FPGA with your bitstream. Replace <device_BDF>
with your device’s BDF and <path_to_your_bitstream>
with the path to your .xclbin
file:
sudo xbmgmt program --device <device_BDF> --base --image <path_to_your_bitstream>
For example:
sudo xbmgmt program --device 0000:81:00.0 --base --image /path/to/your_bitstream.xclbin
This command will program the FPGA with your specified bitstream.
3. Reboot the System
After programming the FPGA, it’s recommended to perform a cold reboot to ensure the new image is properly loaded:
sudo reboot
4. Verify the New Configuration
Once the system restarts, verify that the new configuration is active:
Ensure that the device is ready and the new platform UUID matches your programmed bitstream.
Important
Ensure that your bitstream (
.xclbin
file) is compatible with the Alveo U280 FPGA.The
xbmgmt
tool is part of the XRT installation and is used for managing FPGA devices.For detailed instructions and troubleshooting, refer to the XRT documentation.
Additional AMD instructions for bringing up and validating your card here.