Skip to content

Latest commit

 

History

History
41 lines (32 loc) · 1.22 KB

index.md

File metadata and controls

41 lines (32 loc) · 1.22 KB
layout title show_title sidebar highlight_first
page
Regent: a Language for Implicit Task-based Parallelism
false
true
true

Regent is a language for implicit task-based parallelism.

Regent automatically discovers parallelism in programs composed of tasks, or functions. Tasks execute sequentially. Behind the scenes, Regent looks at the arguments to tasks, along with the ways tasks touch their arguments (read, write, etc.) to determine which tasks can execute in parallel. That means you can write code like this:

{% highlight regent %} -- Launch a task with some data. a(data) -- writes data

-- Launch three b tasks. -- Each data_part is a view onto a different piece of the original data. for i = 0, 3 do task_b(data_part[i]) -- reads/writes the field x of data end

-- Launch c task. c(data) -- reads/writes the field y of data

-- Launch three d tasks. for i = 0, 3 do d(data_part[i]) -- reads data end {% endhighlight %}

And Regent will automatically discover that this parallelism is available:

Interested in learning more? Install Regent and checkout the tutorials.