举例说明

2026-05-16 1 阅读 tosh
Futhark 示例 下面是通过一系列带注释的程序对 Futhark 的实践介绍,这些程序按复杂性大致递增的顺序列出。您可以将程序加载到解释器中进行试验。对于该语言的常规介绍,Futhark 中的并行编程可能是更好的选择。如需更多示例,您可以查看我们实施的基准测试。我们还维护一个使用 Futhark 的项目列表。一些示例程序使用指令来绘制或渲染图形。基本语言功能 阶乘函数的基本用法 原始值 将值转换为不同类型 数学函数 函数 数组 最小值和最大值 类型归属 基本并行 元组和记录 大小强制 范围 反引号运算符 扫描和归约 参数多态性 多态最小值和最大值 收集和分散 独占扫描 独占前缀和 管道运算符 复杂范围 求和类型和模式匹配 循环 扁平化和反扁平化数组 就地更新 编程技术 基准测试计算满足属性的元素 最小元素索引 (argmin) 减少过滤器结果 分散过滤器结果 大小参数 矩阵乘法 成对 L₁ 距离 外积 比较数组是否相等 搜索选项类型 计算直方图 移动平均 均值 交换数组的两个元素 整数对数 基数排序 按键基数排序 合并排序 删除重复项 抽象数据类型 复数 测试关联性 减少或无中性扫描元素 孔 卡汉求和 随机数 高斯模糊(与 Python 集成) 三维向量 伪造标称类型 三角矩阵 二分搜索 AD 对偶数 方差匹配括号 评估多项式 直线拟合 解码 MNIST 数据文件 自动微分 正向模式自动微分 反向模式自动微分 牛顿法 Literate Futhark Literate Futhark 的基本使用 使用 Literate Futhark 生成视频 使用 Literate Futhark 生成视频 在 Literate Futhark 中读写文件 绘图Literate Futhark 允许直接使用 gnuplot 。这些示例展示了简单且常见的情况。绘制直方图 来自 Dex 的示例 以下示例是从 Dex 移植的,Dex 是一种依赖类型的函数数组语言,它使用稍微不同的方法来描述循环处理。我们试图保留原来的命名方案和编程风格。 Prelude Mandelbrot 集 多步光线追踪器 pi 布朗运动 Sierpinski 三角形的蒙特卡罗估计 外部示例 通过调用 Futhark 的 OCaml-GPU 字数统计示例。使用 Futhark 的项目 大多数编写的 Futhark 代码可能仍然是 Futhark 自己的测试和基准套件。然而,有一些程序是用 Futhark 编写的,因为它是完成这项工作的好工具,而不仅仅是测试编译器。一个可能不完整的列表:Diving Beet 是一款落沙游戏,是一种简单的粒子模拟器玩具。其主要目的是产生漂亮的效果。有一篇包含详细信息和视频的博客文章。足球是一项避免被球击中的游戏。渲染引擎是用 Futhark 编写的光线追踪器。 Futcam 是一款将交互式可配置过滤器堆栈应用于网络摄像头流的应用程序。 Futhark 用于实现过滤器。 Futracer 是一个用 Futhark 编写的相当慢的强力光线追踪器。 Futswirl 是一个基于迭代函数系统的分形生成器。 Neptune 是针对 Filecoin 调整的 Poseidon 哈希函数的实现,其中 GPU 部分已在 Futhark 中实现。 Palathark 是格子玻尔兹曼方法的 Futhark 实现。 《Futhark 中的一个周末的光线追踪》和《Futhark 中的光线追踪:下一周》是基于 Peter Shirley 的系列书籍的实现。这些绝不是实时光线追踪器,但支持高级效果并利用 BVH 树等加速结构。 Pareas 是一个用 Futhark 和 C++ 实现的编译器。