如何使用F#编程语言编写FPGA程序

9
我通常使用F#编写数值算法。 F#中的函数式编程结构有助于以非常自然的方式表达算法。 我经常得到简洁易懂的实现,如果有并行化的机会,可能可以快速并行化。
我想知道是否有一种方法将F#程序编译成FPGA。 这样,我仍然可以使用F#来避免FPGA编程中的样板代码,并利用FPGA中的高性能计算。 是否可能这样做? 如果是,您能否提供一些提示让我开始?

你看过Kiwi吗? - ildjarn
我不知道是否有任何“即插即用”的软件可以做到这一点,我猜市场需求会相当小。我认为你需要自己动手去实现。你看过这个人的博客吗?http://blogs.msdn.com/b/satnam_singh/ - gjvdkamp
@gjvdkamp: 他是Kiwi的作者之一。:-] - ildjarn
2
@pad:F#本身最近才走出研究阶段。无论如何,你是因为发现F#比VHDL/Verilog更容易,还是因为你不懂VHDL或Verilog而选择这样做?你是否考虑过使用GPU进行大规模并行处理,而不是使用FPGA,因为GPU编程模型更接近CPU,并且IL->计算着色器转换更加成熟。 - Ben Voigt
1
@JonHarrop:三年前的授权文件内容是这样的:“除非如下,否则您不得以任何形式使用或分发此软件或任何衍生作品进行商业用途: (i)只要您不以任何形式为商业目的再分发该软件,您可以使用未经修改的二进制形式的软件来编译您的商业应用程序。”虽然该许可证很局限,但允许一些商业用途。所以我们都错了。 - Ben Voigt
显示剩余8条评论
3个回答

3

我甚至在谷歌缓存中也没有找到他们网站的任何信息。已经没有留下有关他们所做的任何信息了。 - pad
@Pad,它甚至引起了Don Syme的注意:"从Parallel F#到Parallel FPGAs",来自Avalda - Benjol
这就是为什么我期望他们提供一些文档,而不仅仅是到处都是广告。 - pad
@pad,我猜测这个是在说:“立即购买以享受大量早期采用者折扣:C$39.99”(而不是C$99.99)- 即将死亡... - Benjol

2

我认为F#非常适合这项任务,因为它来源于ML语言家族,这些语言专门用于元编程。尽管我不知道有关这方面的任何工作(尽管我曾经想过自己进行开发)。

我建议将重点放在使用F#编写编译器,将DSL编译成FPGA上的代码,而不是尝试编译一般的F#代码。


你能详细解释一下“将DSL编译到FPGA”吗?如果你能给出一个例子或者代码片段,那么更容易理解。 - pad
@pad:恐怕我无法给出FPGA的示例,因为我从未尝试过使用FPGA。也许HLVM会提供一些想法。它可以将DSL编译成LLVM IR。以下是我用其DSL编写的一些测试程序:https://forge.ocamlcore.org/scm/viewvc.php/*checkout*/test.ml?revision=47&root=hlvm - J D
你能修复链接吗?它似乎已经坏了。关于DSL和FPGA,我想我必须等到最终有什么东西出现。 - pad
啊,Stack Overflow 真糟糕。这里是相同位置的 bitly 链接:http://bit.ly/vi2Vbz - J D
我的第一个想法是分叉F# -> JavaScript编译器之一,看看我是否可以重用该方法的设计或更多内容。[<ReflectedDefinition>]以及代码引用等可能会起到作用。除此之外,FPGA工具链通常分为两部分:VHDL编译器和Fitter,后者将编译器的结果适配到特定的FPGA上。关于这一点,F#方法的范围是什么?包括Fitter吗? - BitTickler

0

这里有一个使用 C 的 HLS 工具list列表。 我在2006年使用过其中一个的经验不太好,但我希望它们在今天会更好。

至于 F#,我怀疑它不会很快出现。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接