Una he amien a de benchma king pa a
compilado es de OpenACC
Daniel Ba ba,1A u o Gonz´alez-Esc ibano2y Diego R. Llanos3
Resumen— OpenACC exis e ya desde hace algunos
a˜nos y, du an e los mismos, han ido apa eciendo una
se ie de compilado es an o en el ´ambi o acad´emico
como en la indus ia. Debido a la no edad del
es ´anda OpenACC as´ı como al con inuo desa ollo
de los compilado es exis en es, una sui e de bench-
ma ks espec´ı icamen e c eada pa a analiza el com-
po amien o del c´odigo gene ado po es os compi-
lado es en dis in as m´aquinas adquie e una u ili-
dad impo an e. En es e a ´ıculo p esen amos TOR-
MENT OpenACC, una sui e de benchma ks p epa ada
pa a se compilada po di e en es compilado es y que
o ece un esumen de los esul ados ob enidos. As´ı
mismo, jun o a es a he amien a hemos desa ollado
una m´e ica adecuada pa a la pun uaci´on de los pa es
compilado -m´aquina y que hemos denominado Pun-
uaci´on TORMENT ACC.
Palab as cla e— OpenACC, compilado es, bench-
ma king.
I. In oducci´
on
OpenACC es un es ´anda abie o que de ine una
se ie de di ec i as de compilaci´on o p agmas pa a
ejecuci´on de agmen os de c´odigo en acele ado es
de ipo GPU y Xeon Phi. Su obje i o es acili a
la pa alelizaci´on de c´odigo secuencial en es e ipo
de acele ado es educiendo el iempo necesa io an o
en la p og amaci´on como en el ap endizaje [1]. La
especi icaci´on se encuen a en la e si´on 2.5 [2].
La esponsabilidad de la pa alelizaci´on au om´a ica
del c´odigo secuencial ecae sob e los di e en es com-
pilado es que sopo an OpenACC: PGI Compile [3],
de The Po land G oup, emp esa aho a pe enecien e
a N idia, es seg´un los es udios que hemos ealizado
el compilado con un g ado de madu ez m´as al o.
Se encuen a disponible como pa e del N idia Ope-
nACC Toolki , g a ui o du an e es meses y con la
posibilidad de adqui i licencias come ciales o de in-
es igaci´on. OpenUH [4], de la Uni e sidad de Hous-
on y accULL [5] de la Uni e sidad de La Laguna son
dos al e na i as de c´odigo abie o desa olladas en el
´ambi o acad´emico y que pueden desca ga se lib e-
men e pa a su uso.
Adem´as de los compilado es se˜nalados exis en
o os compilado es que sopo an OpenACC, pe o
debido a que en la echa de edacci´on de es e
a ´ıculo ue imposible ob ene licencias de p ueba o
acad´emicas, han sido dejados ue a de nues os es u-
dios. Es os compilado es es ´an siendo desa ollados
po CRAY Inc. yPa hscale Inc..
1Dp o. de In o m´a ica, Uni e sidad de Valladolid, e-mail:
[email p o ec ed].
2Dp o. de In o m´a ica, Uni e sidad de Valladolid, e-mail:
[email p o ec ed].
3Dp o. de In o m´a ica, Uni e sidad de Valladolid, e-mail:
[email p o ec ed].
Nues o abajo consis e en el desa ollo de una
he amien a de an´alisis de endimien o del c´odigo
gene ado po es os compilado es que hemos denomi-
nado TORMENT OpenACC (T asgo pe ORMance
and E alua ioN Tool o OpenACC). El mo i o que
nos ha mo ido a comenza es e abajo es la es-
casez de he amien as simila es pa a OpenACC y las
ca encias de las exis en es. Es as he amien as son,
a echa de edacci´on de es e a ´ıculo, EPCC Ope-
nACC Benchma k Sui e [6] y Rodinia [7]. El p ime o
ha sido desa ollado po el Edinbu gh Pa allel Com-
pu ing Cen e y consis e en una se ie de mic obench-
ma ks, des inados a medi el o e head de la imple-
men aci´on de los dis in os p agmas, y benchma ks
pa a medi el endimien o del c´odigo gene ado. Ro-
dinia es una aducci´on de los benchma ks o iginales
de la sui e de Rodinia [8] pa a OpenACC desa ol-
lado po Pa hscale.
Nues o abajo busca da espues a a la necesi-
dad de an´alisis del endimien o y compa aci´on del
c´odigo gene ado po los dis in os compilado es, in-
en ando man ene un equilib io en e las o alezas y
debilidades de los di e en es compilado es y a ando
de ob ene una he amien a que sea posible u iliza
con los compilado es disponibles pa a la comunidad
acad´emica. Debido a que los compilado es se en-
cuen an a´un en ase de desa ollo, es imp escindible
man ene el c´odigo lo m´as sencillo posible.
Adem´as del desa ollo de la he amien a como
al, hemos desa ollado ambi´en una m´e ica pa a
pode o ece al usua io de es a he amien a una
pun uaci´on ela i a que pe mi a la compa aci´on en-
e di e en es sis emas y compilado es analizados.
Es a m´e ica ha sido denominada Pun uaci´on TOR-
MENT ACC
El es o del a ´ıculo se o ganiza del siguien e modo:
La secci´on dos desc ibe con m´as de enimien o las he -
amien as de benchma king exis en es. La secci´on
es desc ibe los compilado es ac ualmen e sopo a-
dos po TORMENT OpenACC. En la secci´on cua-
o se desc ibe la he amien a, sus obje i os y ca ac-
e ´ıs icas a medi y enume a los benchma ks ac ual-
men e implemen ados, as´ı como la m´e ica u ilizada.
Finalmen e, la secci´on cinco concluye el a ´ıculo.
II. He amien as exis en es
Como se indicaba en la in oducci´on, a echa de
edacci´on de es e a ´ıculo exis en dos he amien as
de an´alisis de endimien o pa a OpenACC. A con in-
uaci´on desc ibimos m´as en p o undidad las mismas
y las ca encias de ec adas.
A. EPCC OpenACC Benchma k Sui e
La sui e de benchma ks desa ollada po el EPCC
ha sido dise˜nada espec´ı icamen e pa a OpenACC. Se
compone de es pa es di e enciadas y que denomina
Ni el 0,Ni el 1 yNi el de Aplicaciones.
En el Ni el 0 se pueden encon a una se ie de mi-
c obenchma ks cuyo obje i o es medi el o e head
gene ado po las implemen aciones de los p agmas.
Es os mic obenchma ks dan un esul ado que es la
di e encia de dos iempos de ejecuci´on en unci´on
del p agma que es ´an analizando, o bien el iempo
de ans e encia de da os en una di ec i a de ipo
#p agma acc da a. Es os esul ados son in e esan es
pa a el desa ollo de los compilado es, pe o al y
como es ´an dise˜nados no o ecen una idea cla a de
endimien o y los esul ados pueden se con usos.
En el Ni el 1 se encuen an un conjun o de bench-
ma ks ´ıpicos de ipo BLAS basados en Polybench y
Polybench/GPU [9]. Los esul ados o ecidos po es-
os benchma ks son iempos de ejecuci´on de los di e -
en es c´odigos po lo que son un buen indicado del
endimien o del c´odigo gene ado po los di e en es
compilado es.
En el Ni el de Aplicaciones hay 3 benchma ks de
mayo en idad que los an e io es. Es os benchma ks
ambi´en o ecen iempos de ejecuci´on, pe o al se
p oblemas menos sin ´e icos dan esul ados m´as in-
e esan es.
En gene al, la idea del EPCC OpenACC Bench-
ma k Sui e es ´a bien plan eada y dise˜nada. No ob-
s an e, los esul ados ob enidos en los mic obench-
ma ks no son adecuados pa a un an´alisis de
endimien o. Los dem´as benchma ks, si bien pod ´ıan
se ´u iles, siemp e han dado p oblemas en nues os
es udios. En unos casos no pod´ıan compila se con al-
gunos de los compilado es u ilizados, en o os casos
daban e o de ejecuci´on. Uno de los mayo es p oble-
mas ha sido la limi aci´on en los ama˜nos de los da os
a u iliza debido a p oblemas en la implemen aci´on
que lle aban a que se in en ase asigna mucha m´as
memo ia de la deseada, o iginando e o es en la eje-
cuci´on y limi ando a 10MB el ama˜no de los da os.
B. Rodinia pa a OpenACC
La emp esa Pa hscale Inc. ha desa ollado una
e si´on [7] de la sui e de benchma ks Rodinia [8],
[10] pa a su uso con compilado es de OpenACC. Con
la e si´on exis en e en Gi Hub a d´ıa 25 de Ab il
de 2014, en gene al los benchma ks disponibles no
compilan con ninguno de los compilado es exis en es,
sal o con adas excepciones. El compilado de PGI es
el ´unico que log a compila un n´ume o signi ica i o
de benchma ks.
La sui e se compone de benchma ks que dan el
iempo de ejecuci´on, po lo que se ´ıan un buen pun o
de pa ida pa a un an´alisis de endimien o. Po des-
g acia, la escasa madu ez del c´odigo y la poca com-
pa ibilidad con los compilado es disponibles hacen
imposible su uso pa a es ablece una compa a i a de
endimien os.
III. Compilado es Sopo ados
En la in oducci´on hemos enume ado b e emen e
los compilado es disponibles. Su elecci´on es ´a mo-
i ada po la exis encia de licencias g a ui as o
acad´emicas, o bien po se de c´odigo abie o. A con-
inuaci´on explica emos algunos de alles de los compi-
lado es sopo ados en la e si´on p elimina de TOR-
MENT OpenACC.
A. PGI Compile
El compilado de PGI [3], desa ollado po The
Po land G oup y N idia, es a echa de edacci´on de
es e a ´ıculo el compilado con un g ado de madu ez
m´as al o. Su uso es ´a muy ex endido en los di e -
en es alle es y con e encias que se ealizan sob e
OpenACC. Ac ualmen e es ´a disponible como pa e
del N idia OpenACC oolki que incluye una licencia
g a ui a de es meses y la posibilidad de adqui i
una licencia come cial o acad´emica. En nues os es-
udios, el compilado de PGI ha demos ado se el
m´as s´olido y el que m´as al o g ado de madu ez iene.
Se ajus a bien a la especi icaci´on de OpenACC. Su
ins alaci´on es simple y dispone de abundan e docu-
men aci´on.
B. OpenUH
El compilado OpenUH, desa ollado po la Uni-
e sidad de Hous on, es una al e na i a de c´odigo
abie o. Compa ado con el compilado de PGI, su
madu ez y solidez son meno es y ca ece de algunas
uncionalidades, como educciones sob e m´ınimos o
m´aximos, lo cual di icul a lige amen e la p og a-
maci´on de aplicaciones. Su ins alaci´on, a echa de
edacci´on de es e a ´ıculo, no es an sencilla como
cab ´ıa espe a . La e si´on p e-compilada disponible
en su web [4] ca ece algunas lib e ´ıas que deben se
compiladas a pa e u ob enidas de o a o ma.
C. accULL
El compilado accULL [5], desa ollado po la Uni-
e sidad de La Laguna, es al igual que OpenUH
un compilado de c´odigo abie o. De los es com-
pilado es sopo ados es el que iene una meno
solidez, eniendo p oblemas pa a la aducci´on uen e
a uen e de algunas ca ac e ´ıs icas de C, como pun-
e os a unci´on o de uncionalidades de OpenACC
como algunos ipos de educciones. La ins alaci´on
de la e si´on disponible en su web [11] es bas an e
simple siguiendo las ins ucciones que pueden encon-
a se adjun as al compilado en iche os de ex o.
IV. TORMENT OpenACC
Nues a p opues a en desa ollo se denomina
TORMENT OpenACC y es el ac ´onimo pa a T asgo
pe ORMance and E alua ioN Tool o OpenACC.
El p oyec o ha nacido pa a in en a da una soluci´on
a la necesidad de da espues a a los in en os de e-
aliza compa a i as de endimien o de c´odigo Ope-
nACC.
A. Mo i aci´on
Las he amien as ac uales han demos ado en nue-
s os es udios p e ios no se su icien es pa a da una
espues a sencilla a las compa a i as de c´odigo gen-
e ado po los di e en es compilado es de OpenACC.
En nues os es udios con dichas he amien as hemos
encon ado una se ie de p oblemas que es amos in-
en ando e i a en nues a p opues a.
El p ime o de los p oblemas es la escasa com-
pa ibilidad del c´odigo de los benchma ks en e los
di e en es compilado es. Es cie o que si el c´odigo
se ajus a al es ´anda debe ´ıa compila se y ejecu-
a se co ec amen e en cualquie implemen aci´on del
es ´anda OpenACC, pe o en la ac ual e apa en la
que se encuen an an o el es ´anda como los compi-
lado es es muy di ´ıcil. Debido a es o hemos in en-
ando desa olla TORMENT OpenACC eniendo
en cuen a an o la especi icaci´on del es ´anda como
las capacidades ac uales de los di e en es compi-
lado es.
O o p oblema de ec ado es que muchos de
los benchma ks no o ecen una idea cla a de
endimien o, como es el caso de los mic obenchma ks
del EPCC OpenACC Benchma k Sui e. Si bien es
cie o que es os mic obenchma ks son ´u iles pa a el
desa ollo de los compilado es, c eemos que el o e -
head de la implemen aci´on de los dis in os p agmas
no es ealmen e ele an e en una compa a i a de
endimien os. Po es e mo i o, en nues a p opues a
dejamos ue a ese ipo de p uebas.
Finalmen e, hemos obse ado ambi´en que, en mu-
chos casos, benchma ks que pa ecen compila co ec-
amen e luego gene an e o es en iempo de ejecuci´on
o esul ados inco ec os. Es a ´ul ima si uaci´on puede
supone que, si no se de ec a el esul ado e ´oneo, los
esul ados de endimien o ob enidos sean ambi´en
inco ec os. Pa a e i a es o, adem´as de inco po-
a comp obaci´on de esul ados a los benchma ks
ambi´en analizamos los esul ados du an e el desa -
ollo de nues a p opues a pa a que los benchma ks
que inco po amos en nues a he amien a compilen
y ejecu en co ec amen e con cualquie a de los com-
pilado es.
O o aspec o impo an e que hemos enido en
cuen a a la ho a de lle a a cabo el desa ollo de
TORMENT OpenACC es la o ece a la comu-
nidad una he amien a que adem´as de acili a el
an´alisis de endimien o del c´odigo gene ado po los
compilado es de OpenACC ejecu ados en dis in as
m´aquinas, o ezcan una medida del endimien o que
pe mi a una compa aci´on ´acil en e m´aquinas y
compilado es. Es a idea nos ha lle ado al desa ollo
de la m´e ica TORMENT ACC que desc ibi emos
pos e io men e.
B. Obje i os
El obje i o p incipal de TORMENT OpenACC es
la de pe mi i un an´alisis de endimien o de c´odigo
OpenACC gene ado po los dis in os compilado es
de o ma sencilla, gene ando un esumen de esul a-
dos ´acilmen e analizable y dando un alo , denom-
inado pun uaci´on TORMENT ACC, que pe mi e la
compa aci´on de los pa es m´aquina-compilado .
Nues a p opues a p e ende acili a a la comu-
nidad una he amien a p epa ada espec´ı icamen e
pa a OpenACC y el es ado de desa ollo emp ano
de los compilado es exis en es de o ma que se e i en
p oblemas en compilaci´on o ejecuci´on de o as he -
amien as de benchma king exis en es. TORMENT
OpenACC es a ´a p epa ado pa a compila se y ejecu-
a se con la meno in e enci´on posible del usua io.
Recopilando la in o maci´on del p oceso y o eciendo
inalmen e un in o me en o ma o HTML con los
da os ele an es.
Adem´as, TORMENT OpenACC u iliza ´a los com-
pilado es GCC y NVCC pa a ob ene da os de ejecu-
ciones de c´odigo secuencial y c´odigo CUDA espec i-
amen e. De es e modo, nues a p opues a o ece ´a
al usua io in o maci´on del speedup con espec o al
c´odigo secuencial y CUDA ejecu ado en la misma
m´aquina.
C. Es uc u a de la he amien a
TORMENT OpenACC se compone de una se ie de
sc ip s que se enca gan de odo el p oceso de com-
pilaci´on, ejecuci´on y ob enci´on de esul ados, elim-
inando es a ca ga al usua io. Es os sc ip s se di i-
den en es ca ego ´ıas. Los sc ip s de con igu aci´on
gu´ıan al usua io en la ob enci´on de las u as co -
ec as a lib e ´ıas CUDA (necesa ias po algunos de
los compilado es), u as de compilado es y coman-
dos de ejecuci´on (en caso de que el usua io u ilice,
po ejemplo, sis emas de colas ipo slu m). El sc ip
de ejecuci´on se enca ga de la compilaci´on y ejecuci´on
usando odos los compilado es que hayan sido halla-
dos en el sis ema del usua io. Finalmen e, el sc ip
de gene aci´on de esul ados p ocesa los esul ados
ob enidos y gene a un iche o HTML con el in o me
inal.
El p og ama p opiamen e dicho es ´a desa ollado
de modo que sea lo m´as sencillo posible pa a e i a
p oblemas de compilaci´on, e i ando ni eles de indi-
ecci´on que en o as si uaciones se ´ıan aconsejables.
Cada benchma k es ´a de inido en su p opia unidad
de compilaci´on y es ´a inco po ado en el mismo uen e
el c´odigo OpenACC y CUDA, u ilizando compilaci´on
condicional y e i ando ene de o ma simul anea
iche os .c y.cu con c´odigo duplicado. Los iche os .cu
son necesa ios pa a que el compilado NVCC gene e
el c´odigo CUDA co espondien e, pe o es o se ha e-
suel o median e el uso de enlaces simb´olicos a los
iche os .c co espondien es.
El p og ama p incipal se enca ga del lanzamien o
de los benchma ks. Cada uno se lanza con 10 epe i-
ciones con una epe ici´on ex a al comienzo cuyos
esul ados son desechados. Al inaliza es as diez
epe iciones se ob ienen los alo es denominados peak
ya e age y que co esponden a la mejo de las ejecu-
ciones y a la media a i m´e ica de odas ellas. Es os
alo es se i ´an pa a calcula la m´e ica de la que
habla emos pos e io men e.
CUDA_ATTR__ in ge Random(unsigned in * seed)
{
unsigned in nex = *seed;
in esul ;
nex *= 1103515245;
nex += 12345;
esul = (unsigned in ) (nex /65536) % 2048;
nex *= 1103515245;
nex += 12345;
esul <<= 10;
esul ^= (unsigned in ) (nex /65536) % 1024;
nex *= 1103515245;
nex += 12345;
esul <<= 10;
esul ^= (unsigned in ) (nex /65536) % 1024;
*seed = nex ;
e u n esul ;
}
Fig. 1
C´
odigo pa a la gene aci´
on de n´
ume os alea o ios.
D. Benchma ks implemen ados
La e si´on p elimina de TORMENT OpenACC
con iene ´unicamen e dos benchma ks. El desa ollo
de la he amien a sigue en p oceso y o os bench-
ma ks se i ´an a˜nadiendo p og esi amen e.
D.1 Mon eCa loPi
Es e benchma k consis e en una ap oximaci´on de
Pi po el m´e odo de Mon e Ca lo, que se basa en
la gene aci´on de pun os alea o ios en un cuad ado
de lado uni a io. Se comp ueba si es os pun os se
encuen an den o de un cua o de c´ı culo de adio
uni a io y se acumula el o al de pun os que cumplen
dicha condici´on. Finalmen e, se aplica la siguien e
´o mula:
π≈4∗P
T
Donde Pes el n´ume o de pun os den o del cua o
de c´ı culo y Tes el o al de pun os gene ados.
Mon eCa loPi es un benchma k que no iene
p ´ac icamen e ans e encias de memo ia y un
c´alculo compu acional muy simple, pe o puede se
op imizado en CUDA haciendo que cada hilo calcule
a ios pun os y u ilizando la sha ed memo y de los
bloques pa a e i a accesos a memo ia global. Un
buen esul ado de los compilado es en es e bench-
ma k depende ´a de es os ac o es.
Dado que no se puede hace uso de la unci´on s and
de C en el c´odigo ejecu ado en la GPU, y el uso de
la lib e ´ıa cu and se limi a a c´odigo CUDA, hemos
decidido eplica la unci´on s and pa a pe mi i su
ejecuci´on en la GPU, como se indica en la ig. 1.
El c´odigo u ilizado pa a las e siones de OpenACC
y CUDA se mues a en las igs. 2 y 3
#p agma acc pa allel loop
p i a e(i, d, x, y, seed)
educ ion(+:coun )
o (i = 0; i < COORD_NUM; ++i){
seed = 1987 ^ i*27;
x = (double)ge Random(&seed)/(double)RAND_MAX;
y = (double)ge Random(&seed)/(double)RAND_MAX;
d = sq (x*x + y*y);
i (d <= 1.0){
++coun ;
}
}
Fig. 2
C´
odigo de Mon eCa loPi pa a OpenACC.
__CUDA_GLOBAL__ oid piKe nel(
cons unsigned long in iesPe Th ead,
unsigned long in * hi s)
{
unsigned in seed;
in gid, id, bid;
in lhi s;
loa x, y;
ex e n __sha ed__ unsigned long in sda a[];
gid = (blockIdx.x*blockDim.x) + h eadIdx.x;
id = h eadIdx.x;
bid = blockIdx.x;
lhi s = 0;
seed = 1987 ^ gid*27;
o (in i = 0; i < iesPe Th ead; ++i){
x = ( loa )ge Random(&seed)/( loa )RAND_MAX;
y = ( loa )ge Random(&seed)/( loa )RAND_MAX;
loa d = sq (x*x + y*y);
i (d <= 1.0 ){
++lhi s;
}
}
sda a[ id] = lhi s;
__sync h eads();
i ( id == 0){
o (in i = 1; i < blockDim.x; ++i){
lhi s += sda a[i];
}
hi s[bid] = lhi s;
}
}
Fig. 3
C´
odigo de Mon eCa loPi pa a CUDA.
#p agma acc da a copyin(S[0:sizeS],B[0:sizeB])
copy(C[0:sizeB])
{
#p agma acc pa allel loop p i a e(s a B)
i s p i a e( esul ,sizeS,sizeB)
o (s a B = 0; s a B <= sizeB-sizeS; s a B++){
C[s a B] = 0;
i (s a B <= esul ) {
in ind;
o (ind = 0; ind < sizeS; ind++){
i (S[ind] != B[s a B+ind]) b eak;
}
i (ind == sizeS){
esul = s a B;
C[s a B] = 1;
}
}
}
}
esul = -1;
o (s a B = 0; s a B <= sizeB-sizeS; s a B++){
i (C[s a B] == 1){
esul = s a B;
b eak;
}
}
Fig. 4
C´
odigo de S ingMa ch pa a OpenACC.
D.2 S ingMa ch
El benchma k S ingMa ch es un p og ama de
alineamien o de cadenas de ca ac e es. El p og ama
consis e en la b´usqueda de la p ime a ocu encia
de una cadena peque˜na en una cadena g ande, u i-
lizando un algo i mo nai e. En es e benchma k, la
cadena g ande iene una longi ud de 10 millones de
ca ac e es, es deci 10MB. Las cadenas peque˜nas,
que son cua o, ienen una longi ud de 1000 ca ac-
e es o 1KB.
Es e algo i mo es in e esan e po que combina
ans e encia de da os con uso e icien e de la memo-
ia, especialmen e el uso de la sha ed memo y. Los
c´odigos de las e siones de OpenACC y CUDA
pueden e se en las igs. 4 y 5.
E. M´e ica u ilizada
Pa a la elecci´on de la m´e ica denominada
TORMENT ACC hemos decidido op a po la
me odolog´ıa SPEC [12]. El Sys em Pe o mance
E alua ion Coope a i e, com´unmen e conocido como
SPEC, es un e e en e ampliamen e conocido en
cuan o a benchma king y an´alisis de endimien o se
e ie e. Una de sus o alezas es el econoce que los
benchma ks en ejecen en unci´on del paso del iempo
y, en consecuencia, deben se ac ualizados.
SPEC u iliza la siguien e me odolog´ıa. En p ime
luga , cada p og ama de uel e su iempo de eje-
cuci´on y se calcula el SPEC a io, que consis e en el
a io ob enido de di idi un iempo de ejecuci´on de
e e encia suminis ado po SPEC en e el iempo de
ejecuci´on ob enido. Finalmen e, se ob iene la media
geom´e ica de odos los SPEC a ios del conjun o de
__global__ oid ke nel_busqueda(cons cha * b_ida a,
cons in sizeB, cons cha * s_ida a,
cons in sizeS, unsigned in * esul )
{
ex e n __sha ed__ unsigned cha sda a[];
in gid = (blockIdx.x*blockDim.x) + h eadIdx.x;
in id = h eadIdx.x;
in sS a = THREADS_PER_BLOCK + sizeS;
in o se ;
i (gid == 0){
* esul = -1;
}
__sync h eads();
i (gid < * esul ){
unsigned cha * bd = &sda a[ id];
b_ida a += gid;
unsigned cha * sd = &sda a[sS a + id];
s_ida a += id;
i ( id<THREADS_PER_BLOCK){
o (o se = 0; id+o se <sS a ;
o se += THREADS_PER_BLOCK)
{
i (o se ==0){
*bd = *b_ida a;
bd+=THREADS_PER_BLOCK;
b_ida a+=THREADS_PER_BLOCK;
con inue;
}
*bd = *b_ida a;
bd+=THREADS_PER_BLOCK;
b_ida a+=THREADS_PER_BLOCK;
*sd = *s_ida a;
sd+=THREADS_PER_BLOCK;
s_ida a+=THREADS_PER_BLOCK;
}
}
__sync h eads();
i (gid <= sizeB-sizeS){
unsigned in i;
unsigned in b = 1;
unsigned cha * sd = &sda a[sS a ];
unsigned cha * bd = &sda a[ id];
o (i = 0; b && i+15 < sizeS; i+=16){
b &= (*sd == *bd); sd++; bd++;
b &= (*sd == *bd); sd++; bd++;
b &= (*sd == *bd); sd++; bd++;
b &= (*sd == *bd); sd++; bd++;
b &= (*sd == *bd); sd++; bd++;
b &= (*sd == *bd); sd++; bd++;
b &= (*sd == *bd); sd++; bd++;
b &= (*sd == *bd); sd++; bd++;
b &= (*sd == *bd); sd++; bd++;
b &= (*sd == *bd); sd++; bd++;
b &= (*sd == *bd); sd++; bd++;
b &= (*sd == *bd); sd++; bd++;
b &= (*sd == *bd); sd++; bd++;
b &= (*sd == *bd); sd++; bd++;
b &= (*sd == *bd); sd++; bd++;
b &= (*sd == *bd); sd++; bd++;
i (!b) b eak;
}
o (; b && i < sizeS ; i++){
b &= (*sd == *bd); sd++; bd++;
i (!b) b eak;
}
i ( b ) a omicMin( esul , gid);
}
}
}
Fig. 5
C´
odigo de S ingMa ch pa a CUDA.
benchma ks [13].
Nues a p opues a sigue una idea simila a la de
SPEC, pe o con algunas a iaciones. En p ime lu-
ga , la ejecuci´on de los benchma ks que componen
TORMENT OpenACC de uel en es alo es. Peak
Time es el mejo iempo de ejecuci´on ob enido, me-
dido en segundos. A e age Time es el iempo medio
de odas las ejecuciones del benchma k, ambi´en
en segundos. Finalmen e, S anda d De ia ion es la
des iaci´on es ´anda del conjun o de medidas e indica
la a iabilidad ob enida en las ejecuciones del bench-
ma k. Con los iempos peak ya e age se calcula un
a io con espec o a los iempos de e e encia sum-
inis ados con la he amien a, y que son los iem-
pos de ejecuci´on secuencial del benchma k en una
m´aquina de e e encia. Una ez ejecu ados odos los
benchma ks, se ob iene la media a m´onica de odos
los a ios, an o pa a peak ime como a e age ime.
Es os alo es que se ob ienen son las pun uaciones
TORMENT ACC peak ya e age.
La p incipal di e encia en e TORMENT Ope-
nACC y SPEC, a pa e de la me odolog´ıa de oma de
iempos de ejecuci´on, consis e en el uso de la media
a m´onica en luga de la media geom´e ica. Es a de-
cisi´on se undamen e en el hecho de que, pa a los ob-
je i os de TORMENT OpenACC la media a m´onica
iene m´as en ajas que la media geom´e ica. En
p ime luga , aunque la media geom´e ica siemp e
p oduce una o denaci´on consis en e, no necesa ia-
men e p oduce la o denaci´on co ec a [13] ya que es a
media no es in e samen e p opo cional al iempo de
ejecuci´on. En cambio, la media a m´onica si que es
in e samen e p opo cional al iempo de ejecuci´on lo
que hace que sea una media co ec a pa a exp esa
a ios. Es as a i maciones son compa idas po o os
a ´ıculos como [14].
V. Conclusiones y T abajo Fu u o
Como conclusi´on, TORMENT OpenACC es una
he amien a de an´alisis y compa aci´on de endimien-
os de c´odigo gene ado po compilado es de Ope-
nACC, eniendo en conside aci´on el ni el de madu ez
de an o el es ´anda OpenACC como de los di e en es
compilado es. TORMENT OpenACC desa olla una
sui e de benchma ks espec´ı icamen e dise˜nados pa a
OpenACC y man eniendo la m´axima po abilidad
en e compilado es, pe mi iendo su compilaci´on y
ejecuci´on en odos ellos.
Los esul ados o ecidos po TORMENT Ope-
nACC incluyen la denominada pun uaci´on TOR-
MENT ACC, dise˜nada pa a la compa aci´on de pa es
m´aquina-compilado . Adem´as, se o ece un esumen
de la ejecuci´on de los benchma ks con una abla de
iempos y a ios, an o m´ınimos como medios e in-
cluyendo la des iaci´on es ´anda pa a un an´alisis de
a iabilidad de los iempos de ejecuci´on del c´odigo
gene ado.
Jun o con los esul ados de los compilado es de
OpenACC se incluyen ambi´en esul ados de eje-
cuci´on de c´odigo gene ado po los compilado es GCC
y NVCC pa a c´odigo secuencial y CUDA. De es e
modo, se puede o ece al usua io una compa a i a a
ni el de m´aquina del endimien o del c´odigo gene -
ado po los compilado es de OpenACC con espec o
a e siones secuenciales y CUDA de los benchma ks.
El abajo u u o a desa olla consis e en la am-
pliaci´on de la sui e de benchma ks, pa a log a esul-
ados que sean e dade amen e ele an es. T a ando
de cub i los aspec os m´as in e esan es de la eje-
cuci´on de c´odigo en las GPUs. Adem´as, una pa e
impo an e del abajo es an e consis e en man ene
la compa ibilidad en e compilado es y asegu a el
co ec o uncionamien o de la he amien a en dis in-
as m´aquinas.
Ag adecimien os
En memo ia de Agus ´ın de Dios He n´andez.
Es a in es igaci´on ha sido pa cialmen e inanciada
po el MICINN y el p og ama ERDF de la Uni´on Eu-
opea: p oyec o HomP og-He Sys (TIN2014-58876-
P), la ed CAPAP-H5 (TIN2014-53522-REDT) y el
COST P og am Ac ion IC1305: Ne wo k o Sus-
ainable Ul ascale Compu ing (NESUS).
Re e encias
[1] OpenACC-s anda d.o g, “Abou OpenACC,” .
[2] OpenACC-s anda d.o g, “OpenACC 2.5 d a o public
commen ,” oc 2015.
[3] PGI, “Pgi accele a o compile s wi h OpenACC di ec-
i es,” h ps://www.pg oup.com/ esou ces/accel.h m,
no 2015.
[4] Uni e si y o Hous on, “Open-sou ce UH compile ,”
h p://web.cs.uh.edu/~openuh/download/, no 2015.
[5] Ruym´an Reyes, I ´an L´opez-Rod ´ıguez, Juan J Fume o,
and F ancisco de Sande, “accULL: an OpenACC imple-
men a ion wi h CUDA and OpenCL suppo ,” in Eu o-
Pa 2012 Pa allel P ocessing, pp. 871–882. Sp inge ,
2012.
[6] EPCC, “Epcc OpenACC benchma k sui e,” h ps:
//gi hub.com/EPCCed/epcc-openacc-benchma ks, sep
2013.
[7] Pa hscale, “Rodinia benchma k sui e 2.1 wi h Ope-
nACC po ,” h ps://gi hub.com/pa hscale/ odinia,
ap 2014.
[8] Shuai Che, Michael Boye , Jiayuan Meng, Da id Ta jan,
Je emy W Shea e , Sang-Ha Lee, and Ke in Skad on,
“Rodinia: A benchma k sui e o he e ogeneous com-
pu ing,” in Wo kload Cha ac e iza ion, 2009. (IISWC),
2009 IEEE In e na ional Symposium on. IEEE, 2009,
pp. 44–54.
[9] Louis-No¨el Pouche , “Polybench: The polyhed al
benchma k sui e,” URL: h p://www. cs. ucla. edu/˜
pouche /so wa e/polybench/[ci ed July,], 2012.
[10] Shuai Che, Je emy W Shea e , Michael Boye , Lukasz G
Sza a yn, Liang Wang, and Ke in Skad on, “A cha ac e -
iza ion o he Rodinia benchma k sui e wi h compa ison
o con empo a y CMP wo kloads,” in Wo kload Cha -
ac e iza ion (IISWC), 2010 IEEE In e na ional Sympo-
sium on. IEEE, 2010, pp. 1–11.
[11] Uni e sidad de La Laguna, “accULL,” h p://cap.pcg.
ull.es/es/accULL, no 2015.
[12] Kai alya M Dixi , “The spec benchma ks,” Pa allel
compu ing, ol. 17, no. 10, pp. 1195–1209, 1991.
[13] Da id J Lilja, Measu ing compu e pe o mance: a p ac-
i ione ’s guide, Camb idge Uni e si y P ess, 2005.
[14] John R Mashey, “Wa o he benchma k means: ime o
a uce,” ACM SIGARCH Compu e A chi ec u e News,
ol. 32, no. 4, pp. 1–14, 2004.
Benchma k e sion:0.91
Hos name:hyd a
Use name:daniel
So wa es ackin o
Ke nel:Linux3.10.0229.4.2.el7.x86_64x86_64
GCC:gcc(GCC)4.8.320140911(RedHa 4.8.39)
NVCC:Cudacompila ion ools, elease7.5,V7.5.17
PGICompile :pgcc15.7064bi a ge onx8664Linux phaswell
OpenUHCompile :OpenUH3.1.0(basedonOpen64Compile Sui e:Ve sion5.0)
accULLCompile :Release0.4alpha
CPUin o
Model:In el(R)Xeon(R)CPUE52609 3@1.90GHz
A chi ec u e:x86_64
Numbe o Co es:6
MaxMHz:MHz
MinMHz:MHz
L1Cache:32K
L2Cache:256K
L3Cache:15360K
RAM:65687144kB
GPU(s)in o
GPU0:NVIDIACo po a ionGK110B[GeFo ceGTXTi anBlack]
( e a1)
GPU1:NVIDIACo po a ionGK110B[GeFo ceGTXTi anBlack]
( e a1)
GPU2:NVIDIACo po a ionGK110B[GeFo ceGTXTi anBlack]
( e a1)
GPU3:NVIDIACo po a ionGK110B[GeFo ceGTXTi anBlack]
( e a1)
TORMENT_ACC_0.91Peak:28.26 TORMENT_ACC_0.91A e age:25.71
Speedup sSequen ial(peak):57.92x Speedup sSequen ial(a e age):52.40x
Speedup sCUDA(peak):0.17x Speedup sCUDA(a e age):0.15x
TORMENT_ACC_0.91Peak:12.37 TORMENT_ACC_0.91A e age:12.30
Speedup sSequen ial(peak):25.35x Speedup sSequen ial(a e age):25.07x
Speedup sCUDA(peak):0.07x Speedup sCUDA(a e age):0.07x
TORMENT_ACC_0.91Peak:16.14 TORMENT_ACC_0.91A e age:16.07
Speedup sSequen ial(peak):33.08x Speedup sSequen ial(a e age):32.76x
Speedup sCUDA(peak):0.10x Speedup sCUDA(a e age):0.10x
Sys emIn o ma ion
GCC_Sequen ialCompile Resul s:
GCC_Sequen ial
Benchma k PeakTime(s) PeakRa io A g.Time(s) A g.Ra io S d.De ia ion
Mon eCa loPi 14.763701 0.43 14.764007 0.43 0.000336
S ingMa ch 20.118267 0.57 20.136980 0.57 0.021079
NVCC_CUDACompile Resul s:
NVCC_CUDA
Benchma k PeakTime(s) PeakRa io A g.Time(s) A g.Ra io S d.De ia ion
Mon eCa loPi 0.016409 383.96 0.017840 354.36 0.001254
S ingMa ch 0.105644 108.48 0.105889 109.21 0.000162
PGICompile Resul s:
PGI
Benchma k PeakTime(s) PeakRa io A g.Time(s) A g.Ra io S d.De ia ion
Mon eCa loPi 0.067226 93.72 0.077228 81.86 0.008222
S ingMa ch 0.688718 16.64 0.758494 15.25 0.068944
OpenUHCompile Resul s:
OpenUH
Benchma k PeakTime(s) PeakRa io A g.Time(s) A g.Ra io S d.De ia ion
Mon eCa loPi 0.153154 41.14 0.165321 38.24 0.006447
S ingMa ch 1.574083 7.28 1.578459 7.33 0.002537
accULLCompile Resul s:
accULL
Benchma k PeakTime(s) PeakRa io A g.Time(s) A g.Ra io S d.De ia ion
Mon eCa loPi 0.135701 46.43 0.139198 45.42 0.007257
S ingMa ch 1.173044 9.77 1.184555 9.76 0.004565
Peaksco euses hebes o 10 esul s.A e agesco euses hea i hme icmeano 10 esul s.Inbo hcaseshighe isbe e .
TORMENTOpenACCResul page
G upoT asgoUni e sidaddeValladolid
Benchma k e sion:0.91
Hos name:co ikLap op
Use name:dani
So wa es ackin o
Ke nel:Linux3.16.04amd64x86_64
GCC:gcc(Debian4.9.210)4.9.2
NVCC:Cudacompila ion ools, elease7.5,V7.5.17
PGICompile :pgcc15.7064bi a ge onx8664Linux phaswell
OpenUHCompile :OpenUH3.1.0(basedonOpen64Compile Sui e:Ve sion5.0)
accULLCompile :Release0.4alpha
CPUin o
Model:In el(R)Co e(TM)i54200HCPU@2.80GHz
A chi ec u e:x86_64
Numbe o Co es:4
MaxMHz:3400.0000MHz
MinMHz:800.0000MHz
L1Cache:32K
L2Cache:256K
L3Cache:3072K
RAM:3939364kB
GPU(s)in o
GPU0:NVIDIACo po a ionGM107M[GeFo ceGTX850M]( e
a2)
TORMENT_ACC_0.91Peak:8.98 TORMENT_ACC_0.91A e age:8.22
Speedup sSequen ial(peak):8.84x Speedup sSequen ial(a e age):8.05x
Speedup sCUDA(peak):0.17x Speedup sCUDA(a e age):0.16x
TORMENT_ACC_0.91Peak:6.56 TORMENT_ACC_0.91A e age:6.60
Speedup sSequen ial(peak):6.46x Speedup sSequen ial(a e age):6.46x
Speedup sCUDA(peak):0.13x Speedup sCUDA(a e age):0.13x
TORMENT_ACC_0.91Peak:6.50 TORMENT_ACC_0.91A e age:6.54
Speedup sSequen ial(peak):6.40x Speedup sSequen ial(a e age):6.40x
Speedup sCUDA(peak):0.12x Speedup sCUDA(a e age):0.13x
Sys emIn o ma ion
GCC_Sequen ialCompile Resul s:
GCC_Sequen ial
Benchma k PeakTime(s) PeakRa io A g.Time(s) A g.Ra io S d.De ia ion
Mon eCa loPi 6.196389 1.02 6.196760 1.02 0.000310
S ingMa ch 11.292974 1.01 11.298524 1.02 0.006537
NVCC_CUDACompile Resul s:
NVCC_CUDA
Benchma k PeakTime(s) PeakRa io A g.Time(s) A g.Ra io S d.De ia ion
Mon eCa loPi 0.057900 108.81 0.062234 101.58 0.004161
S ingMa ch 0.335251 34.19 0.335390 34.48 0.000085
PGICompile Resul s:
PGI
Benchma k PeakTime(s) PeakRa io A g.Time(s) A g.Ra io S d.De ia ion
Mon eCa loPi 0.343979 18.32 0.378440 16.70 0.034409
S ingMa ch 1.925690 5.95 2.120944 5.45 0.192720
OpenUHCompile Resul s:
OpenUH
Benchma k PeakTime(s) PeakRa io A g.Time(s) A g.Ra io S d.De ia ion
Mon eCa loPi 0.697705 9.03 0.698031 9.06 0.000198
S ingMa ch 2.224097 5.15 2.226121 5.19 0.003758
accULLCompile Resul s:
accULL
Benchma k PeakTime(s) PeakRa io A g.Time(s) A g.Ra io S d.De ia ion
Mon eCa loPi 0.675184 9.33 0.676132 9.35 0.000704
S ingMa ch 2.298089 4.99 2.299703 5.03 0.003703
Peaksco euses hebes o 10 esul s.A e agesco euses hea i hme icmeano 10 esul s.Inbo hcaseshighe isbe e .
TORMENTOpenACCResul page
G upoT asgoUni e sidaddeValladolid