我有一个计算密集型任务,我使用CUDA来实现它,现在我想用FPGA(如果可能的话)让它更快。
我想要实现的系统是一系列的计算,每个计算在并行意义上都类似于矩阵乘法。它之间也有一些不平行的部分。它可以处理大量的数据。
虽然我希望它尽快,但我有足够的时间来学习和探索FPGA。
在这里,我在询问我如何开始我的道路的建议?选择哪种FPGA以及在哪里了解它。有任何网站或在线课程或书籍吗?不管怎样,我已经决定这样做了,但是你的想法在FPGA上是否会更快也是有帮助的。
发布于 2011-10-24 17:51:22
FPGA通过使用GPU获得的最大优势来自:
缺点是将数据传入和传出FPGA。在开始之前先画一个数据传输图。即使FPGA提供了无限的加速,如果有大量的数据需要来回混洗,您可能仍然会发现这并不值得!
很可能你会想要一块基于PCI express的主板。在你开始使用FPGA之前,这是一个全新的学习曲线--但如果你准备好了,这将是一项非常有趣的任务!
在选择FPGA方面,尝试使用来自不同供应商的软件工具-在学习阶段,这比芯片本身更重要。你不会(在这个早期学习阶段)在任何不同的芯片中发现一个令人惊叹的特性。还要考虑具有所需接口的主板的可用性,以及您可能需要进行高速接口的任何IP核心(例如PCIe)
发布于 2011-10-22 09:05:28
在使用FPGA的大多数并行问题上,您可以获得显著的加速比。
但是,除了在FPGA上实现计算之外,还需要做大量的工作来从CPU/主存中来回获取数据。这将需要在FPGA逻辑中实现(例如) PCI Express端点(用于最大速度的总线主控)和软件侧的自定义驱动程序。大多数操作系统都需要在内核模式下开发这些驱动程序。
而且,您也不能只使用最直接的方法进行FPGA编程。为了最大限度地提高吞吐量,您需要考虑流水线和时钟同步。
换句话说,即使对于拥有多年FPGA经验的工程师来说,这也是一项艰巨的任务。我强烈建议你找个人一起做这件事。根据你的项目的专有程度,你可能会发现有经验的学者愿意与你合作,只要你向他们提供所有材料和出版权。
如果你决定单干,你需要一些硬件。许多不同的公司提供了连接成加速器的FPGA,例如http://www.nallatech.com/pci-express-cards.html。
根据您选择的是Xilinx还是Altera FPGA,您会找到相当多的示例代码和使PCI express正常工作的教程。
https://stackoverflow.com/questions/7856487
复制相似问题