AUFLIC: An Accelerated Algorithm for Unsteady Flow Line
Download
Report
Transcript AUFLIC: An Accelerated Algorithm for Unsteady Flow Line
AUFLIC: An Accelerated Algorithm for
Unsteady Flow Line Integral Convolution
Zhanping Liu
Robert J. Moorhead II
Visualization Analysis & Imaging Laboratory
MSU / NSF Engineering Research Center
May 27, 2002
Outline
Introduction
Vector field visualization
LIC (Line Integral Convolution)
UFLIC (Unsteady Flow Line Integral Convolution)
Key points
Basic idea
Pipeline
AUFLIC (Accelerated UFLIC)
Motivation
Flexible seeding strategy
Dynamic activation-deactivation scheme
Save & reuse pathlines
Results
Conclusions
Introduction—Vector Field Visualization
Vector Field Visualization
Challenges
Representation: magnitude & direction
Performance:
quality & speed
ROI:
feature extraction & tracking
Complexity:
unstructured grids & unsteady flow
Methods
Graphics Based
Hedgehogs:
arrows, wedges & headed lines
Lines:
streamlines, pathlines, streaklines & timelines
Surfaces:
stream-surfaces, stream-ribbons & stream-tubes
Volumes:
Texture Based
Spot noise
flow volumes
Jark J. Van Wijk, Computer Graphics, 1991.
Line Integral Convolution
Introduction—LIC
(Image courtesy of Mike Chupa, ERC VAIL)
Introduction—LIC
LIC (Line Integral Convolution)
Presented by Brian Cabral & Leith Caisey Leedom, SigGraph’93.
Low-pass filter noise texture along streamline, exploiting the correlation.
Produce a synthesized image with fine details.
Vector field (wind)
Noise texture (fine sands)
LIC image (pattern)
L
T ( (0))
K ( )T ( ( ))d
L
L
K ( )d
L
L: kernel length
K: convolution kernel
: streamline
T: noise texture value
Introduction—LIC
Basic idea
( (
0
)
)
( 0 )
2D Vector
(stream)Line
Integration
Streamlining by
bi-directional
integration
( 0 )
Noise texture
O
d
d ( ( ) )
LIC Image
( ( ) )
output pixel
value Convolution
N
( 0 ) ( 0 ) ( ( 0 ))
T ( P )
T ( p )W
i
i 0
i
N
W
i 0
i
Introduction—LIC
Colored mapped with velocity magnitude (blue: lowest; red: highest)
Introduction—LIC
LIC Animation shift periodic kernel phase frame by frame
Introduction—LIC
Variations
LIC on curvilinear grids Lisa K. Forssell & S. D. Cohen. 1995
Fast LIC
Detlev Stalling & Hans-Christian Hege. 1995
Parallel LIC
Detlev Stalling, and et al. 1996
Multi-frequency LIC
Ming-Hoe Kiu and David C. Banks.1996
Surface LIC
Christian Teitzel, and et al. 1997
Oriented LIC
R. Wegenkittl, and et al. 1997
Enhanced LIC
A. Okada & D. L. Kao. 1997
Volume LIC
(Dye advection) Han-Wei Shen, and et al. 1996
Victoria Interrante & Chester Grosch. 1997
C. Rezk-Salama, and et al. 1999
Introduction—LIC
Disadvantage does not work for unsteady flow field
LIC fails to convey temporal coherence of unsteady flow.
Inter-frame pulsation is introduced to LIC animation.
UFLIC—Key Points
Key Points
Available methods for unsteady flow visualization
PLIC
Vivek Verma, David Kao, and Alex Pang. 1999
Hardware-assisted texture advection
Bruno Jobard, Gordon Erlebacher, and M. Yousuff Hussaini. 2000
UFLIC: Unsteady Flow Line Integral Convolution
Han-Wei Shen & David L. Kao. 1997
UFLIC can maintain both spatial and temporal coherence.
UFLIC vs. LIC
Method
Focus
Strategy
Line
Field
LIC
image-space
oriented
given a pixel in the output image, to locate the
correlated pixels & accept their contributions
streamline
steady
flow
object-space
oriented
given a particle at a time step, to locate on-pathline
particles & scatters its contribution to them
over time
UFLIC
pathline
unsteady
flow
UFLIC—Key Points
Two principles
Time Accurate-Value Scattering Scheme
Convolve along pathlines to exploit spatial & temporal correlation
Texture Feed-Forward Strategy
Advect textures over time to enhance temporal coherence
One intra-processing
Noise-Jittered High Pass Filtering
High Pass Filtering
Pass vector direction information forward
Noise Jittering
Maintain noisy characteristics in the forwarded texture
UFLIC—Basic Idea
Basic Idea
time step t
Suppose 1 scattering process covers 3 time steps
time step t+2
time step t+1
The the
CURRENT
scattering
process
is now
Continue
value scattering
until
time step
t+4completed.
t+5
……
Now
take
texture
t+1
t+2
as
input
and
Convolve the scattered values and output texture t+3
t+1 as frame t+3.
t+2
t+1.
t+2.
begin
the
new
scattering
process
to
produce
frame
t+2
t+3
DIFFERENT
points
Apply Noise-jittered High Pass Filtering
to texture t+3
t+1
t+2
and then
but in scattering
the SAMEprocess.
pixel
take it as the input texture of the NEXT
DIFFERENT points
Release
Release aa NEW
NEW seed
seed from
from pixel-center
pixel-center
but in the SAME pixel
time step t+3
pathline3
pathline2
pathline1
integrate
locate
release a seed from pixel center
texture t
scatter value
texture t+1
texture t+2
texture t+3
Pipeline
The duration (in terms of
the number of time steps,
usually = 4) in which a
particle scatters its value
to the succeeding particles
along the pathline
• Bucket
A ring-buffer by which
each pixel saves those
scattered values and the
weights for later
convolution
Feed Texture Forward
• Life span
White Noise
Disk Files(N time steps)
Input Texture
Vector Data Buffer
Time Accurate Value Scattering Process
Always Release New Seeds
Pathline Integration
if within life span
Refresh Convolution Buckets
Bucket Convolution
Noise-Jittered High Pass Filter
Frame
t=t+1
UFLIC—Pipeline
AUFLIC—Motivation
We proposed AUFLIC (Accelerated UFLIC)
Motivation
Problem — UFLIC is time consuming
• Pathline integration:
computationally expensive
• Multi-timestep value scattering: more computation needed
• Texture synthesis:
convolution & noise-jittered high pass filtering
Over 90% UFLIC computation time results from pathline integration
Reason — pathline redundancy
• Always release a new seed from each pixel center at each time-step
• Generally, more than 2 pathlines pass through a pixel simultaneously
• Existing pathlines are not taken into considerations
Solution — reuse pathlines
• Reuse existing pathlines as many as possible
• Much less integration, the same scattering effect
AUFLIC—Motivation
Basic idea
time step t+2
time step t+1
time step t
: Scattering process t
: Scattering process t+1
Life span = 3 time steps
time step t+3
: Scattering process t+2
Begin
scattering
process
t to
t+1
t+2
to
produce
frame
frame
t+1saved
t+2 on-pathline point
t+3
Instead,
reuse
this previously
on-pathline
point
Scattering
process
Instead,
tsaved
t+1
isreuse
now
is produce
now
this
completed.
completed.
previously
(NOT
necessarily
thethe
pixel-center)
Convolve
thebegin
scattered
values
and
(NOT
output
necessarily
texture
the
t+1pixel-center)
t+2
as
t+1.
Now,
From
here,
the
to save
on-pathline
on-pathline
points
(pixels)
points
(pixels).
to frame
be t+2.
as the
seed
to scatter
the
pixel
value
DIRECTLY
to the
Apply
Noise-jittered
asreused
High
the seed
Pass
toFiltering
scatter
the
to texture
pixel
value
t+1 and
t+2
DIRECTLY
then
to the
They
saved
will
will
be
be
reused
during
during
scattering
scattering
process
process
t+1,
t+2,
Now
further
advect
the
pathline
ONLY
1
time
step
ahead
time step t+4).
succeedingpoints
(pixels)
along
pathline
take
it as
the
input
succeedingpoints
texture
ofalready-known
the NEXT
(pixels)scattering
along
theprocess.
already-known (to
pathline
For
this
pixel,
NO
need
to the
release
t+2,
t+3,
t+3,
t+4,
……
Save the new on-pathline pointsand let them ACCEPT the scattered value
a new seed from the pixel-centerFor this pixel, NO need to release
a new seed from the pixel-center
pathline
integrate
locate
release a seed from pixel center
texture t
scatter value
texture t+1
texture t+2
texture t+3
AUFLIC—Flexible Seeding Strategy
Flexible Seeding Strategy
How flexible a seed particle can be?
• Freely positioned
It is NOT necessarily located exactly on the pixel center.
Whatever particle within the pixel qualifies for scattering the pixel value.
• Possibly extracted
A seed may be extracted from the existing pathlines used during the
previous scattering processes.
A scattering process: the procedure in which a seed particle scatters
its value within its whole life span covering several (4) time steps.
• Adaptively released
A new seed is released when no extracted seed for the pixel is available.
Condition: ALL pixels seeded
At each time step, there is at least 1 seed from each pixel to scatter value.
AUFLIC—Flexible Seeding Strategy
How old a pathline can be?
• UFLIC pathlines die younger
An UFLIC pathline is forcibly terminated as soon as the life span expires.
The life span is usually set to 4 time steps.
• AUFLIC pathlines live older
An AUFLIC pathline will NOT stop its advection until:
it reaches the flow field boundaries
it meets a critical point
it is deactivated by the Dynamic Activation-Deactivation Scheme
• The older, the more reused, the less computation
Older pathlines can be repeatedly used during subsequent scattering
processes without much effort of expensive integration calculation.
AUFLIC—Flexible Seeding Strategy
Flexible seeding strategy
Large amount of new seeds are cancelled due to those extracted seeds.
Excessive new pathlines’ integration is therefore avoided.
St+2
St
St+1
: the reused pathline
St+3
: the pathlines cancelled
before births
St+4
: the seed actually released from the pixel center at time step t
: the seeds extracted from the existing pathline at time step t+1, t+2, t+3, and t+4, called potential seeds
: the actually cancelled seeds at the pixel-centers
AUFLIC—Dynamic Activation-Deactivation Scheme
Dynamic Activation-Deactivation Scheme
Problems
As pathlines are released, reused & advected over time, problems arise:
• Un-evenly distributed pathlines
Too many potential seeds passing through a pixel simultaneously
scatter the same pixel value
There are so many pixels NOT visited by any potential seeds
• Excessivly & un-necessarily reused pathlines
Too many active pathlines inevitably degrade acceleration performance
No sufficient memory to save the pathlines
AUFLIC—Dynamic Activation-Deactivation Scheme
Dynamic Activation-Deactivation Scheme
• pixel Mutex — an exclusion flag
A cleared mutex (= 0): there has been NO active seed from the pixel
A
set mutex (= 1): there has been an active seed from the pixel
• Current-Mutex — whether to release a new seed or NOT
Indicate pixel status during the current scattering process
• Next-Mutex — whether to activate or de-activate a potential seed
Indicate pixel status during the next scattering process
• Dynamically updating Current-Mutex & Next-Mutex
Release new seeds ONLY on REAL demand.
Excessive & un-necessary “potential” seeds are actually cancelled.
The least necessary pathlines are maintained for enough value-scattering.
AUFLIC—Save & Reuse Pathlines
Save & Reuse Pathlines
During each scattering process, pixels along each pathline are saved in a
pixel-ring-buffer when necessary and N (<= xres×yres) pathlines are
stored in a pathline-list for subsequent access and reuse.
suppose
(Next-Mutex
=pixel
==0),
check
the potential-seed’s
the
pixel’s
Current-Mutex
=flag
0,
the
active
seed
scatters
the
pixel
value Next-Mutex
to the
update all
theCurrent-Mutex
pixel
status
to
refuse
other
pathlines:
=1
(Next-Mutex
=Next-Mutex
=span
0)from
save
the
pathline
&
are
inited
to 0
soif release
a the
new
seed
the
pixel
center
life
just
expires,
succeeding
(pixels)
along the pathline
begin
to
save thepoints
pathline
as the
continues
else
dosave
NOT
save
the pathline
the
tailadvection
seed
NOT saved
time step 0
time step 1
save this part and insert it into the pathline-list
time step 2
time step 3
time step 4
time step 5
life span = 4 time steps
:active seed
:potential seed
:tail seed
scattering process 0 (time step 0 ~ time step 4) works to produce frame 0
:non-seed point
AUFLIC—Save & Reuse Pathlines
Save & Reuse Pathlines
During each scattering process, pixels along each pathline are saved in a
pixel-ring-buffer when necessary and N (<= xres×yres) pathlines are
stored in a pathline-list for subsequent access and reuse.
check the pixel status
if(Next-Mutex
1)After
delete
the pixels
pathline
from
thescattering
pathline
list
firstly
update
ALL
pixel’s
two Mutex
activate =the= seed
check
the
pixel
flag
ALL
complete
process1,
After
all
pixels
complete
scattering
process
0,
suppose
(Current-Mutex
=
=
1)
the
life
span
just
expires
elseCurrent-Mutex
keep
the
pathline
still
in
the
pathline
list
let
=
Next-Mutex;
to
check
if
a
new
seed
is
needed
if(Current-Mutex
=
=
0)
release
a
new
seed
from
the
pixel
center
convolve
the
pixel-buckets
toto
produce
frame
10to release.
let
the
tail
seed
advect
the
pathline
directly
scatter
the
pixel
value
to
the
already-known
on-pathline
points
(pixels) forward,
convolve
the
pixel-buckets
produce
frame
load the=(Next-Mutex
pathline
information
during
the
last
scattering
process
Suppose
= =to0)
save
this
into
the
existing
pathline
let Next-Mutex
0;
choose
thesaved
lastest
the
FIRST
pathline
pathline
ispart
saved
forinthe
a pixel-ring-buffer
next
scattering
process
else
reuse
the
saved
pathline
information
and begin calculations
to save the new points into the existing pathline
without pathline integration
cut this part and keep the rest still in the pathline
list the updated
pathline in
still
the pathline list
and thekeep
ring-buffer
stay inserted
theinpathline-list
time step 0
time step 1
time step 2
time step 3
time step 4
time step 5
life span = 4 time steps
:active seed
:potential seed
:tail seed
scattering process 0 (time step 0 ~ time step 4) works to produce frame 0
scattering process 1 (time step 1 ~ time step 5) works to produce frame 1
:non-seed point
Results
Platform
SGI Onyx2 with four 400MHZ MIPS R12000 processors
4GB memory
2D unsteady flow data sets & parameters
2D Data set
Resolution
Time steps
Life span
Output frames
Pixel ring-buffer size
Weather
576 × 291
41
4 time steps
37
72
Vortex
397 × 397
101
4 time steps
97
72
Concerns
• Image quality
• Acceleration
• Memory cost
Results—Image Quality
Image Quality
(A) UFLIC image
weather data set
576 × 291
(B) AUFLIC image
weather data set
576 × 291
Results—Image Quality
(C) UFLIC image
vortex data set
397 × 397
(D) AUFLIC image
vortex data set
397 × 397
Results—Acceleration
Acceleration
AUFLIC is designed to accelerate the value scattering process in the
UFLIC pipeline. Theoretically, AUFLIC & UFLIC are exactly in the same
speed for pipeline’s other stages.
AUFLIC compared with UFLIC in breakdown of the computation time (in second)
method
data loading
scattering
convolution
filtering
color&output
total
AUFLIC / UFLIC
UFLIC
5.00
635.35
3.77
3.37
1.06
648.55
52.94 %
AUFLIC
4.77
330.35
3.86
3.43
0.93
343.34
(A) weather data; resolution: 576 × 291; life span: 4; 37 frames / 41 time steps; pixel-ring-buffer size: 72.
method
data loading
scattering
convolution
filtering
color&output
total
AUFLIC / UFLIC
UFLIC
13.19
1551.17
9.32
8.42
2.39
1584.49
56.96 %
AUFLIC
12.58
869.89
9.05
8.64
2.35
902.51
(B) vortex data; resolution: 397 × 397; life span: 4; 97 frames / 101 time steps; pixel-ring-buffer size: 72.
Results—Memory Cost
Memory Cost
Pathline statistics
AUFLIC
UFLIC
items
released pathlines
1762823
6201792
release
28.42 %
100 %
un-reused pathlines
568155
6201792
reused
pathlines
1194668
reuse
percentage
items
total
method
percentage
reuse times
average reuse times
de-activated pathlines
total
pixels
average pathline length
AUFLIC
UFLIC
released pathlines
3500366
15288073
release
22.90 %
100 %
un-reused pathlines
1263664
15288073
0
reused
pathlines
2236702
0
67.77 %
0%
reuse
percentage
63.90 %
0%
4438969
0
total
11787707
0
3.72
0
average reuse times
5.27
0
561402
0
de-activated pathlines
1511223
0
146728381
309044731
total
357898668
739725898
83.23 pixels
49.83 pixels
average pathline length
102.25 pixels
48.39 pixels
(A) weather data;
resolution: 576 × 291;
life span: 4;
37 frames / 41 time steps; pixel-ring-buffer size: 72.
method
percentage
reuse times
pixels
(B) vortex data;
resolution: 397 × 397;
life span: 4;
97 frames / 101 time steps; pixel-ring-buffer size: 72.
Results—Memory Cost
Memory consumption for saving pathlines
• Low memory cost
Peak : 80.46MB
• Steady consumption
69.36 ~ 70.86MB
Conclusions
AUFLIC is proposed to speed up UFLIC computation for
unsteady flow visualization in value scattering process
Flexible Seeding Strategy reuse existing pathlines from last scattering process
Dynamic Activation-Deactivation Scheme maintain the least necessary pathlines
No image quality degradation
Nearly half time saved
High reuse percentage
Very low & quite steady memory consumption
Easily extended to 3D case
Future work
Enhanced with feature-driven seeding strategy
Extended to 3D unsteady flow field
Thank You!