From 78a7c974850eac226b541126265aaebfdebbfe02 Mon Sep 17 00:00:00 2001 From: Russel Arbore <russel.jma@gmail.com> Date: Sun, 2 Mar 2025 11:18:17 -0600 Subject: [PATCH] optimize edge --- juno_samples/edge_detection/src/edge_detection.jn | 2 +- juno_samples/edge_detection/src/gpu.sch | 15 +++++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/juno_samples/edge_detection/src/edge_detection.jn b/juno_samples/edge_detection/src/edge_detection.jn index ebd58206..3e49cb36 100644 --- a/juno_samples/edge_detection/src/edge_detection.jn +++ b/juno_samples/edge_detection/src/edge_detection.jn @@ -138,7 +138,7 @@ fn gradient<n, m, sb: usize>( let gx = 0; let gy = 0; - for i = 0 to sb { + @filter_loop for i = 0 to sb { for j = 0 to sb { let val = input[if row + i < sbr then 0 else if row + i - sbr > n - 1 then n - 1 diff --git a/juno_samples/edge_detection/src/gpu.sch b/juno_samples/edge_detection/src/gpu.sch index f8da90d0..666f6cef 100644 --- a/juno_samples/edge_detection/src/gpu.sch +++ b/juno_samples/edge_detection/src/gpu.sch @@ -80,6 +80,15 @@ predication(gradient); simpl!(gradient); predication(gradient); simpl!(gradient); +fork-dim-merge(gradient@filter_loop); +unforkify(gradient@filter_loop); +simpl!(gradient); + +fork-dim-merge(gradient); +fork-tile[32, 0, false, true](gradient); +simpl!(gradient); +fork-split(gradient); +simpl!(gradient); fixpoint { forkify(max_gradient); @@ -115,6 +124,12 @@ fixpoint { predication(reject_zero_crossings); simpl!(reject_zero_crossings); +fork-dim-merge(reject_zero_crossings); +fork-tile[32, 0, false, true](reject_zero_crossings); +simpl!(reject_zero_crossings); +fork-split(reject_zero_crossings); +simpl!(reject_zero_crossings); + async-call(edge_detection@le, edge_detection@zc); simpl!(*); -- GitLab