ISBN 978-89-6211-698-4
대용량 데이터 가시화를 위한 애니메이션 캐
쉬 알고리즘 설계 및 구현
(Animation cache algorithm design and implementation for massive
data visualization)
김 민 아 (petimina
@kisti.re.kr)
한 국 과 학 기 술 정 보 연 구 원
목차
1. 개 요 ··· 1
2. Animation Cache를 위한 GIP 프로토콜 ··· 1
3. 응용 프로그램에서의 애니메이션 관리 ··· 2
4. Shared Memory Cache DB ··· 3
그림 차례
[그림 1] GIP animation sequence ··· 2
[그림 2] 사용자 인터페이스와 애니메이션 리스트 ··· 3
[그림 3] Animation cache table ··· 4
[그림 4] 애니메이션을 위한 class collaboration diagram ··· 5
[그림 5] ProcessAnimation 순서도 ··· 6
[그림 6] Animation Start ··· 10
[그림 7] Animation next ··· 11
표 차례
13
-VISE는 병렬 렌더링을 지원하지 않는다. 동일한 구조인 paraview 에서 대용량
데이터 가시화를 위한 애니메이션을 수행한 결과는 GLOVE의 성능이 paraview
의 paraview 보다 125배 빠른 것을 보여 준다.
Tool
Parallel
COVISE
Paraview
GLOVE
COVISE:Paraview:GLOVE
Probe by
Plane (sec)
single
36
11.93
20.04
1.8 : 0.59 : 1
multi
N/A
1.79
1.80
∞ : 0.99 : 1
iso-surface
(sec)
single
47
14.24
18.21
2.58: 0.78 : 1
multi
N/A
10.11
2.12
∞ : 4.76 : 1
iso-surface
animation(sec)
multi
N/A
274
2.12
∞ :129.2 : 1
[표 1] 1.2TB, 90 time step 로터 시뮬레이션 데이터 성능 측정
8. 참고문헌
[1] Andy Cedilnik, Berk Geveci, "Remote Large Data Visualization in ParaVie
w Framework", Eurographics Symposium on Parallel Graphics and Visualizatio
n, 2006
[2] COVISE, http://www.hlrs.de/covise
[3] S.Byron, "Virtual Reality in Scientific Visualization", Communications of t
he ACM, 39(5):62-71, 1996.
[4] Toshiyuki Kimura, "Asynchronous Communication Models for JAX-RPC
2.0", NTT Data Corperation, 2003
0.01
GLOVE Hierar hi al Index
1.1 GLOVE Class Hierar hy
Thisinheritan elistissortedroughly,but not ompletely,alphabeti ally: gipTransa tionDB . . . ??
GLOVE Class Index
2.1 GLOVE Class List
Herearethe lasses,stru ts, unionsandinterfa eswithbriefdes riptions: gipTransa tionDB (GipTransa tionDB is a lass for a table
with stati sizere ords on sharedmemory) . . . ?? gipVariableTrDB(GipVariableTrDBisa lassforatablewith
variable sizere ords onshared memory) . . . ?? glvSemaphore (GlvSemaphore lass is a lass for supporting
linuxsemaphore ) . . . ?? glvShmQueue
<
T>
(GlvShmQueue lass is a template lassGLOVE Class Do umentation
3.1 gipTransa tionDB Class Referen e
gipTransa tionDB (p.?? ) is a lass for a table with stati size re ords on sharedmemory.
#in lude
<
gipTransa tionDB.h>
Inheritan ediagramforgipTransa tionDB:gipTransactionDB
gipVariableTrDB
CollaborationdiagramforgipTransa tionDB:
gipTransactionDB
glvShmQueue< T >
mFreeTableIndex
glvSemaphore
mTableSem
mQSem
Publi Member Fun tions
Destru tor.
intCreateTable( har
∗
tableName,unsignedinttransa tionSize, int maxTrNum,intkeyPos, intkeyLen) int Insert (void
∗
keyValue, int keyLen, void∗
tr, unsigned int trLen) int Insert (void
∗
keyValue, void∗
tr,unsigned inttrLen) gipTrans∗
GetTransa tion (void∗
keyValue, intkeyLen) gipTrans∗
GetTransa tionByIndex (int index) gipTrans
∗
GetUnlo kTransa tion (void∗
keyValue, int keyLen) gipTrans∗
GetTransa tion (void∗
keyValue) int Delete (void
∗
keyValue, intkeyLen) int Delete (void∗
keyValue) int DeleteByIndex (intindex)
3.1.1 Detailed Des ription
gipTransa tionDB (p.??) is a lass for a table with stati size re ords on sharedmemory.
3.1.2 Constru tor & Destru tor Do umentation 3.1.2.1 gipTransa tionDB::gipTransa tionDB(key_t shmKey) Constru tor
Parameters:
shmKey meanssharedmemorykeyforatable
3.1.3 Member Fun tion Do umentation
3.1.3.1 int gipTransa tionDB::CreateTable ( har
∗
tableName, unsigned int transa tionSize, int maxTrNum, intkeyPos, intkeyLen)Createamemorydbtable Parameters:
tableName,transa tionSize,maxTrNum,keyPos,keyLen Returns:
su essorfail
3.1.3.2 int gipTransa tionDB::Delete (void
∗
keyValue)deleteatransa tionre ordforankeyvaluewhenthekeypositionand thekey lengthare alreadyknown.
Parameters: keyValue Returns:
su essorfail
ReimplementedingipVariableTrDBp. ( lassgipVariableTrDB
c
0bf 6a5de5c62dd25256b4db41e52b73
??)
3.1.3.3 int gipTransa tionDB::Delete (void
∗
keyValue, int keyLen) delete a transa tion re ord for an keyvalue when the keyposition is already known.Parameters:
keyValue,keyLen Returns:
su essorfail
ReimplementedingipVariableTrDBp. ( lassgipVariableTrDB
2
7ec4eca4a3ef 3a95ac62658e0f 9f 90d
??)
3.1.3.4 int gipTransa tionDB::DeleteByIndex (intindex) deleteatransa tion re ordbythetableindex
Parameters: index Returns:
su essorfail
ReimplementedingipVariableTrDBp. ( lassgipVariableTrDB
0
44407e1ba67553634d7e5e0971d6f 5d
??)
3.1.3.5 gipTrans
∗
gipTransa tionDB::GetTransa tion (void∗
keyValue)Returns:
atransa tion re orddata
ReimplementedingipVariableTrDBp. ( lassgipVariableTrDB
f
b3ccb94c64eaddf 62f f 85f c6e2c9746
??)
3.1.3.6 gipTrans
∗
gipTransa tionDB::GetTransa tion (void∗
keyValue, intkeyLen)getatransa tion re ordforakey Parameters:
keyValue,keyLen Returns:
atransa tion re orddata
ReimplementedingipVariableTrDBp. ( lassgipVariableTrDB
9
1d29b5b6d1c219c2c969f f279c15f 90
??)
3.1.3.7 gipTrans
∗
gipTransa tionDB::GetTransa tionByIndex (int index)getatransa tion re ordforanindex Parameters:
index Returns:
atransa tion re orddata
3.1.3.8 gipTrans
∗
gipTransa tionDB::GetUnlo kTransa tion (void∗
keyValue, intkeyLen)getatransa tion re ordforanindexwithoutlo king Parameters:
keyValue,keyLen Returns:
atransa tion re orddata
3.1.3.9 int gipTransa tionDB::Insert(void
∗
keyValue, void∗
tr, unsigned int trLen)insertare ordforatransa tionwhen keypositionand keylengthare already known.
Parameters:
keyValue,tr,trLen Returns:
su essorfail
ReimplementedingipVariableTrDBp. ( lassgipVariableTrDB
0
e76208e6238c0ad732872164af ab6a0
??)
3.1.3.10 int gipTransa tionDB::Insert (void
∗
keyValue, intkeyLen, void∗
tr,unsigned int trLen)insertare ordforatransa tion Parameters:
keyValue,keyLen,tr,trLen Returns:
su essorfail
ReimplementedingipVariableTrDBp. ( lassgipVariableTrDB
4
cf0d64a6ef 2da47832beaa6a32f 5de7
??)
Thedo umentationforthis lasswasgenerated fromthefollowingle:3.2 gipVariableTrDB Class Referen e
gipVariableTrDB (p.?? ) is a lass for a table with variable size re ords on sharedmemory.
#in lude
<
gipVariableTrDB.h>
Inheritan ediagramforgipVariableTrDB:gipVariableTrDB
gipTransactionDB
CollaborationdiagramforgipVariableTrDB:
gipVariableTrDB
gipTransactionDB
glvShmQueue< T >
mAllocIndexList
mFreeTableIndex
glvSemaphore
mTableSem
mQSem
Publi Member Fun tions
gipVariableTrDB (key_tshmKey)
∼
gipVariableTrDB ()Destru tor.
intCreateTable( har
∗
tableName,unsignedinttransa tionSize, int maxTrNum,intkeyPos, intkeyLen) int Insert (void
∗
keyValue, int keyLen, void∗
tr, unsigned int trLen) int Insert (void
∗
keyValue, void∗
tr,unsigned inttrLen) gipTrans∗
GetTransa tion (void∗
keyValue, intkeyLen) gipTrans
∗
GetTransa tion(void∗
keyValue, intkeyLen, int key-Index) gipTrans
∗
GetUnlo kTransa tion (void∗
keyValue, int keyLen) gipTrans∗
GetTransa tion (void∗
keyValue) intDelete (void
∗
keyValue, intkeyLen, intkeyIndex) intDelete (void∗
keyValue) intDeleteByIndex (intindex)
intFreeIndexInTable(stru t gipTrAllo IndexList
∗
indexList) voidPrint()print table ontents voidClear ()
delete all datain thememory database table
3.2.1 Detailed Des ription
gipVariableTrDB (p.??) is a lass for atable with variable size re ords on sharedmemory.
3.2.2 Constru tor & Destru tor Do umentation 3.2.2.1 gipVariableTrDB::gipVariableTrDB (key_t shmKey)
[inline℄ Constru tor
Parameters: shmKey
3.2.3 Member Fun tion Do umentation
3.2.3.1 int gipVariableTrDB::CreateTable ( har
∗
tableName, unsigned inttransa tionSize, int maxTrNum, int keyPos, int keyLen)CreateamemorydbtablewithgipTransa tionDB(p.??)CreateTable Parameters:
tableName,transa tionSize,maxTrNum,keyPos,keyLen Returns:
su essorfail
3.2.3.2 intgipVariableTrDB::Delete(void
∗
keyValue)deleteatransa tionre ordforankeyvaluewhenthekeyposition andthekey lengtharealreadyknown.
Parameters: keyValue Returns:
su essorfail
Reimplemented from gipTransa tionDB p. ( lassgipTransa tionDB
a
77741dc4674b1cc0db4328253952e44
??)
3.2.3.3 intgipVariableTrDB::Delete(void
∗
keyValue, intkeyLen, intkeyIndex)deleteatransa tionre ordforankeyvaluewhenthekeyposition andthekey lengtharealreadyknown.
Parameters:
keyValue,keyLen,keyIndex Returns:
su essorfail
3.2.3.4 intgipVariableTrDB::Delete(void
∗
keyValue, intkeyLen) delete a transa tion re ord for an keyvalue when the key position is already known.Parameters:
keyValue,keyLen Returns:
su essorfail
Reimplemented from gipTransa tionDB p. ( lassgipTransa tionDB
0
b0a3f 86b04ac6b2c48635e8c75ed943
??)
Parameters: index Returns:
su essorfail
Reimplemented from gipTransa tionDB p. ( lassgipTransa tionDB
d
c6c971ebdb9098c912564e62cb76d9c
??)
3.2.3.6 int gipVariableTrDB::FreeIndexInTable (stru t gipTrAllo IndexList
∗
indexList)freeaindexin theallo atedindexlist. Parameters:
indexList Returns:
su essorfail
3.2.3.7 gipTrans
∗
gipVariableTrDB::GetTransa tion (void∗
keyValue)getatransa tionre ordforankeyvaluewhenkeyposition andkeylengthare alreadyknown.
Parameters: keyValue Returns:
atransa tionre orddata
Reimplemented from gipTransa tionDB p. ( lassgipTransa tionDB
c
d7099cd781586051bd2681942c7a2b5
??)
3.2.3.8 gipTrans
∗
gipVariableTrDB::GetTransa tion (void∗
keyValue, intkeyLen, intkeyIndex)getatransa tionre ordforanindex Parameters:
keyValue,keyLen,keyIndex Returns:
3.2.3.9 gipTrans
∗
gipVariableTrDB::GetTransa tion (void∗
keyValue, intkeyLen)getatransa tion re ordforakey Parameters:
keyValue,keyLen Returns:
atransa tion re orddata
Reimplemented from gipTransa tionDB p. ( lassgipTransa tionDB
4
4f f 41ba884f 5e0ce440ac188a5d3ca1
??)
3.2.3.10 gipTrans
∗
gipVariableTrDB::GetUnlo kTransa tion(void∗
keyValue, int keyLen)getatransa tion re ordforanindexwithoutlo king Parameters:
keyValue,keyLen Returns:
atransa tion re orddata
Reimplemented from gipTransa tionDB p. ( lassgipTransa tionDB
6
a38756717493af 075b83dab405ce346
??)
3.2.3.11 int gipVariableTrDB::Insert(void
∗
keyValue, void∗
tr, unsigned int trLen)insertare ordforatransa tion whenkeyposition andkeylength arealready known.
Parameters:
keyValue,tr,trLen Returns:
su essorfail
3.2.3.12 int gipVariableTrDB::Insert (void
∗
keyValue, int keyLen, void∗
tr,unsigned int trLen)insertare ordforatransa tion Parameters:
keyValue,keyLen,tr,trLen Returns:
su essorfail
Reimplemented from gipTransa tionDB p. ( lassgipTransa tionDB
d
4e9e25c07301793159c7e8313f 33ebb
??)
3.3 glvSemaphore Class Referen e
glvSemaphore(p.??) lassisa lassforsupporting linuxsemaphore #in lude
<
glvSemaphore.h>
Publi Member Fun tions glvSemaphore ()
Constru tor.
∼
glvSemaphore ()Destru tor.
int Create ( har
∗
semName) int Lo k ()lo kthe semaphore int Release()
release thesemaphore int Close()
losethe semaphore
3.3.1 Detailed Des ription
glvSemaphore(p.??) lassisa lassforsupporting linuxsemaphore
3.3.2 Member Fun tion Do umentation 3.3.2.1 intglvSemaphore::Create ( har
∗
semName) CreateanamedsemaphoreParameters: semName Returns:
su essorfail
3.4glvShmQueue
<
T>
ClassTemplateReferen e 173.4 glvShmQueue
<
T>
Class Template Refer-en eglvShmQueue(p.??) lassisatemplate lassforaqueueonsharedmemory thatpro esses anshare.
#in lude
<
glvShmQueue.h>
CollaborationdiagramforglvShmQueue
<
T>
:glvShmQueue< T >
glvSemaphore
mQSem
Publi Member Fun tions glvShmQueue()
Constru tor.
∼
glvShmQueue()Destru tor.
intCreate (key_tshmKey, har
∗
semName,int qSize) intInsert (Titem) voidPrint()
Print all items in thequeue. intInsertBa kFreeList (intindex) intGetFrontFreeList ()
intInsert (T
∗
itemPtr) intInsert (T
∗
itemPtr,intnum) intDelete (T∗
item) voidDelete ()
delete a itemfromthe front ofthe queue intGetFront(T
∗
item) intGetFrontAndDelete(T
∗
item,int num)3.4.1 Detailed Des ription
template
<
typename T>
lass glvShmQueue<
T>
3.4.2 Member Fun tion Do umentation
3.4.2.1 template
<
typename T>
int glvShmQueue<
T>
::Create (key_t shmKey, har∗
semName, int qSize) [inline℄ CreateasharedmemoryqueueParameters:
shmKey,semName,qSize Returns:
su essorfail
3.4.2.2 template
<
typename T>
intglvShmQueue<
T>
::Delete(T∗
item) [inline℄ deleteaitemfromthequeue Parameters:item : aitempointer Returns:
su essorfail
3.4.2.3 template
<
typename T>
int glvShmQueue<
T>
::GetFront (T∗
item) [inline℄Getafrontitemfromthequeuewithoutdeletion. Parameters:
item pointertosaveagettingitem
3.4.2.4 template
<
typename T>
int glvShmQueue<
T>
::GetFrontAndDelete (T∗
item,intnum) [inline℄Getfrontitemsfromthequeuewithdeletion. Parameters:
3.4glvShmQueue
<
T>
ClassTemplateReferen e 193.4.2.5 template
<
typename T>
int glvShmQueue<
T>
::GetFrontFreeList () [inline℄Gettheindexofanitemfromthefrontofthequeue Returns:
theindex
3.4.2.6 template
<
typename T>
intglvShmQueue<
T>
::Insert (T∗
itemPtr, int num) [inline℄ InsertalistofitemsintothequeueParameters:
itemPtr,num alistofitemsandthenumberofitems Returns:
su essorfail
3.4.2.7 template
<
typename T>
intglvShmQueue<
T>
::Insert (T∗
itemPtr) [inline℄ Insertalistofitemsintothequeue Parameters:itemPtr alistofitems Returns:
su essorfail
3.4.2.8 template
<
typename T>
intglvShmQueue<
T>
::Insert (T item) [inline℄Insertaitemintothequeue Parameters:
item anitem Returns:
3.4.2.9 template
<
typename T>
int glvShmQueue<
T>
::InsertBa kFreeList (int index) [inline℄ Inserttheindexofanitemintotheba kofthequeue Parameters:index Returns:
su essorfail
3.5 trDBErrCode Class Referen e
trDBErrCode(p.??)isa lassfordealingwitherror odesforsharedmemory DB.
#in lude
<
trDBError.h>
3.5.1 Detailed Des ription
trDBErrCode(p.??)isa lassfordealingwitherror odesforsharedmemory DB.