Futhark 0.2.0 发布,小型全新的函数式编程语言

Futhark 0.2.0 已发布,与第一个版本相比,该版本没有添加主要的编译器优化特性,相反,该版本专注于各种提升使用体验的改进,具体更新如下:


  • Run-time errors due to failed assertions now include a stack

  • Generated OpenCL code now picks more sensible group size and count
    when running on a CPU.

  • scatter expressions nested in maps may now be parallelised
    ("segmented scatter").

  • Add num_bits/get_bit/set_bit functions to numeric module
    types, including a new float module type.

  • Size annotations may now refer to preceding parameters, e.g:

    let f (n: i32) (xs: [n]i32) = ...

  • futhark-doc: retain parameter names in generated docs.

  • futhark-doc: now takes -v/--verbose options.

  • futhark-doc: now generates valid HTML.

  • futhark-doc: now permits files to contain a leading documentation

  • futhark-py/futhark-pyopencl: Better dynamic type checking in
    entry points.

  • Primitive functions (sqrt etc) can now be constant-folded.

  • Futlib: /futlib/vec2 added.


  • The built-in shape function has been removed. Use length or
    size parameters.


  • The from_i32/from_i64 functions of the numeric module type
    have been replaced with functions named i32/i64. Similarly
    functions have been added for all the other primitive types
    (factored into a new from_prim module type).

  • The overloaded type conversion functions (i32, f32, bool,
    etc) have been removed. Four functions have been introduced for
    the special cases of converting between f32/f64 and i32:
    r32, r64, t32, t64.

  • Modules and variables now inhabit the same name space. As a
    consequence, we now use x.y to access field y of record x.

  • Record expression syntax has been simplified. Record
    concatenation and update is no longer directly supported.
    However, fields can now be implicitly defined: x,y now creates
    a record with field x and y, with values taken from the
    variables x and y in scope.


  • The != operator now works properly on arrays (#426).

  • Allocations were sometimes hoisted incorrectly (#419).

  • f32.e is no longer pi.

  • Various other fixes.


Futhark 是一个小型全新的函数式编程语言,可编译为高性能的 GPU 代码。使用静态类型、并行数据以及纯函数数组语言。该语言对编译器提前进行重度的优化,通过 OpenCL 生成 GPU 代码。Futhark 并非为图形编程而设计,通过使用 GPU 来加速并行的数组计算,支持常规嵌套的数据并行化处理。

Futhark 使用 Haskell 语言开发。


Link – 

Futhark 0.2.0 发布,小型全新的函数式编程语言