Futhark函數(shù)式編程語(yǔ)言
Futhark 是一個(gè)小型全新的函數(shù)式編程語(yǔ)言,可編譯為高性能的 GPU 代碼。使用靜態(tài)類(lèi)型、并行數(shù)據(jù)以及純函數(shù)數(shù)組語(yǔ)言。該語(yǔ)言對(duì)編譯器提前進(jìn)行重度的優(yōu)化,通過(guò) OpenCL 生成 GPU 代碼。Futhark 并非為圖形編程而設(shè)計(jì),通過(guò)使用 GPU 來(lái)加速并行的數(shù)組計(jì)算,支持常規(guī)嵌套的數(shù)據(jù)并行化處理。
Futhark 使用 Haskell 語(yǔ)言開(kāi)發(fā)。
示例代碼:
fun int max(int x, int y) =
if x > y then x else y
fun {int,int,int,int} redOp({int,int,int,int} x,
{int,int,int,int} y) =
let {mssx, misx, mcsx, tsx} = x in
let {mssy, misy, mcsy, tsy} = y in
{ max(mssx, max(mssy, mcsx + misy))
, max(misx, tsx+misy)
, max(mcsy, mcsx+tsy)
, tsx + tsy }
fun {int,int,int,int} mapOp(int x) =
{ max(x,0), max(x,0), max(x,0), x }
fun int main([int] xs) =
let {x, _, _, _} =
reduce(redOp, {0,0,0,0}, map(mapOp, xs)) in
x評(píng)論
圖片
表情
