REGENT:一种隐式数据流并行语言

2020-06-22 05:37:37

import";regent";struct point{x:Float,y:Float}--具有两个字段的简单结构。--明确4项任务。暂时忽略任务主体;每个任务的行为都由它的声明进行了很好的描述。请注意,每个声明--说明任务将读取或写入的内容。任务a(点:区域(点))其中写入(点)--[[.]]。结束任务b(Points:Region(Points)),其中读写(Points)。x)做--[[.]]。结束任务c(Points:Region(Point)),其中读写(Points)。y)做--[[.]]。结束任务d(Points:Region(Point))其中读取(Points)--[[.]]。End--执行从main开始。自上而下地阅读代码(就像顺序程序一样)。task main()--创建一个区域(类似于数组),空间可容纳5个元素。var points=region(ispace(ptr,5),point)new(ptr(point,points),5)--分配元素。--将区域划分为3个子区域。每个子区域都是父数据的--子集上的视图。var part=PARTITION(EQUAL,POINTS,ispace(int1d,3))--启动子任务a、b、c和d。a(Points)for i=0,3do b(part[i])end c(Point)for i=0,3do d(part[i])end regentlib。启动(主)