73 graph.visualise(title=f
"{title}: task graph")
76 steps = FuseSteps.translate(graph,
"Example",
None)
77 _visualise_compiled_step_sequence(steps, f
"{title}: fused mesh traversals")
80 height = max(graph_image.height, steps_image.height)
81 result = Image.new(
"RGB", (graph_image.width + steps_image.width, height),
"white")
82 result.paste(graph_image, (0, 0))
83 result.paste(steps_image, (graph_image.width, 0))
84 result.save(os.path.join(os.path.dirname(os.path.abspath(__file__)), file_name))
105 vertex_task_1 =
_task(
"v1", Task.GridEntity.VERTEX,
"V1")
106 vertex_task_2 =
_task(
"v2", Task.GridEntity.VERTEX,
"V2")
107 cell_task_1 =
_task(
"c1", Task.GridEntity.CELL,
"C1")
108 cell_task_2 =
_task(
"c2", Task.GridEntity.CELL,
"C2")
109 final_task =
_task(
"c3", Task.GridEntity.CELL,
"C3a",
"C3b")
110 cell_task_1.add_dependency(vertex_task_1)
111 cell_task_2.add_dependency(vertex_task_2)
112 final_task.add_dependency(cell_task_1)
113 final_task.add_dependency(cell_task_2)
114 for task
in (vertex_task_1, vertex_task_2, cell_task_1, cell_task_2, final_task):
125 reconstruct =
_task(
"Reconstruct", Task.GridEntity.CELL,
"ReconstructPatchWithHalo")
126 update =
_task(
"Update cell", Task.GridEntity.CELL,
"UpdateCell")
127 project =
_task(
"Project on faces", Task.GridEntity.CELL,
"ProjectPatchOntoFaces")
128 update.add_dependency(reconstruct)
129 project.add_dependency(update)
131 reconstruct.use_cell(patch, Task.DataAccess.READ_AND_WRITE)
132 reconstruct.use_cell(patch_with_halo, Task.DataAccess.WRITE)
133 reconstruct.use_face(face_data, Task.DataAccess.READ_AND_DISCARD)
134 update.use_cell(patch_with_halo, Task.DataAccess.READ_AND_DISCARD)
135 update.use_cell(patch, Task.DataAccess.WRITE)
136 project.use_cell(patch, Task.DataAccess.READ_AND_WRITE)
137 project.use_face(face_data, Task.DataAccess.WRITE)
139 for task
in (reconstruct, update, project):
150 boundary =
_task(
"Apply BCs", Task.GridEntity.FACE,
"ApplyBoundaryConditions")
151 reconstruct =
_task(
"Reconstruct", Task.GridEntity.CELL,
"ReconstructPatchWithHalo")
152 update =
_task(
"Update cell", Task.GridEntity.CELL,
"UpdateCell")
153 reconstruct.add_dependency(boundary)
154 update.add_dependency(reconstruct)
156 boundary.use_face(face_data, Task.DataAccess.READ_AND_WRITE)
157 reconstruct.use_cell(patch, Task.DataAccess.READ_AND_WRITE)
158 reconstruct.use_cell(patch_with_halo, Task.DataAccess.WRITE)
159 reconstruct.use_face(face_data, Task.DataAccess.READ_AND_DISCARD)
160 update.use_cell(patch_with_halo, Task.DataAccess.READ_AND_DISCARD)
161 update.use_cell(patch, Task.DataAccess.WRITE)
163 for task
in (boundary, reconstruct, update):