Skip to content

💥💻💥 A data-parallel functional programming language

License

Notifications You must be signed in to change notification settings

MilesLitteral/futhark-metal

 
 

Repository files navigation

The Futhark Programming Language

Join the chat at https://gitter.im/futhark-lang/LobbyCIDOI

Futhark is a purely functional data-parallel programming language in the ML family. It can be compiled to typically very efficient parallel code, running on either a CPU or GPU. The language and compiler are developed at DIKU at the University of Copenhagen, originally as part of the HIPERFIT centre. The language and compiler are quite stable and suitable for practical programming.

For more information, see:

Packaging status

Hacking

We try to make use of GitHub issues for organising our work. Issues tagged with good first issue do not require deep knowledge of the code base.

SO WHAT IS FUTHARK-METAL?

In Brief: this fork of the main Futhark Project hopes to accomplish execution of Futhark on M1 Apple GPU/APUs by integrating an addon module (known as mtlpp or Metal++) which can then create and compile Metal Shader Language Code via Objective-C++ (Instead of CUDA or OpenCL) on Mac; this practice of using C++ to execute Objective-C is known as Toll-Free Bridging, therefore opening the floodgates on platform agnostic GPU support that Futhark provides, development is currently very hot.

This project has further, future, steps which includes creating an MLIR (LLVM Dialect) backend for Futhark though this is a future objective.

Issues and progress are tracked through this repository, it's Project page on @MilesLitteral GitHub.

Discussion, technical talks, brainstorming and drafting are all posted to the FM Gist, feel free to read or contribute to the conversation: https://gist.github.com/MilesLitteral/3ae5c427eab97b32d87b7e311d028efe

A handy test command for the build (in root) is futhark metal dotproduct.fut

language-metal-quote

An offshoot project to support futhark -> native .metal shaders (an interest of this project moving forward) as it would increase the flexibility of Futhark in relation to, say, importing a futhark library into an xcode project like it is a .dll, or making futhark libraries that M1/M2 Macs readily understand and can import

https://github.com/MilesLitteral/language-metal-quote

notes on MLIR

There is a desire to create an MLIR Backend, this is currently inprogress but on a separate branch, for more info look at the futhark-metal/mlir branch, there is also a Vulkan branch that will be resumed in the future

Further Readings and Project Notes

https://gist.github.com/MilesLitteral/3ae5c427eab97b32d87b7e311d028efe

mtlpp source

https://github.com/MilesLitteral/mtlpp

About

💥💻💥 A data-parallel functional programming language

Resources

License

Code of conduct

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Haskell 62.5%
  • Futhark 15.2%
  • Objective-C++ 9.7%
  • C 4.8%
  • C++ 4.2%
  • Python 1.5%
  • Other 2.1%