Futhark (programming language): Difference between revisions

Content deleted Content added
m Cut needless carriage return whitespace characters in sections: to standardize, aid work via small screens.
Line 18:
}}
 
'''Futhark''' is a [[Comparison of multi-paradigm programming languages|multi-paradigm]], [[High-level programming language|high-level]], [[Functional programming|functional]], [[Data parallelism|data parallel]], [[Array programming|array]] [[programming language]]. It is a [[Dialect (computing)|dialect]] of the language [[ML (programming language)|ML]], originally developed at [[UCPH Department of Computer Science]] (DIKU) as part of the HIPERFIT project.<ref>{{cite web |url=http://hiperfit.dk/ |title=Home |website=hiperfit.dk}}</ref> It focuses on enabling data parallel programs written in a functional style to be executed with high performance on [[massively parallel]] hardware, in particular onespecially [[graphics processing unit]]s (GPUs). Futhark is strongly inspired by [[NESL]], and its implementation uses a variant of the [[flattening transformation]], but imposes constraints on how parallelism can be expressed in order to enable more aggressive compiler optimisations. In particular, irregular nested data parallelism is not supported.<ref>{{cite conference |last1=Henriksen |first1=Troels |last2=Serup |first2=Niels G. W. |last3=Elsman |first3=Martin |last4=Henglein |first4=Fritz |last5=Oancea |first5=Cosmin |date=2017 |url=https://futhark-lang.org/publications/pldi17.pdf |title=Futhark: Purely Functional GPU-Programming with Nested Parallelism and In-Place Array Updates |publisher=ACM |book-title=Proceedings of the 38th ACM SIGPLAN Conference on Programming Language Design and Implementation |conference=PLDI 2017}}</ref> It is [[free and open-source software]] released under an [[ISC license]].
 
== Overview ==
Futhark is a language in the [[ML (programming language)|ML]] family, with an indentation-insensitive syntax derived from [[OCaml]], [[Standard ML]], and [[Haskell]]. The [[type system]] is based on a [[Hindley–Milner type system]] with a variety of extensions, such as [[uniqueness type]]s and size-[[dependent type]]s. Futhark is not intended as a [[general-purpose programming language]] for writing full applications, but is instead focused on writing computational''[[compute "kernels"kernel]]s'' (not necessarilyalways the same as a [[Compute kernel|''GPU kernel]]'') which are then invoked from applications written in conventional languages.<ref>{{cite web |url=https://futhark.readthedocs.io/en/latest/ |title=Futhark User's Guide |website=futhark.readthedocs.io}}</ref>
 
== Examples ==