scieee Open visual document viewer

Hacia una biblioteca BLAS realmente portable entre diferentes tipos de aceleradores

Rodríguez Gutiez, Eduardo,González Escribano, Arturo,Llanos Ferraris, Diego Rafael

Abstract

Producción Científica

Full text

Hacia una biblio eca BLAS ealmen e po able en e di e en es ipos de acele ado es Edua do Rod iguez-Gu iez,1A u o Gonzalez-Esc ibano,2Diego R. Llanos 3 Resumen— Las u inas de ´algeb a lineal BLAS son ampliamen e u ilizadas en aplicaciones cien ´ı icas de odo ipo. Exis en implemen aciones espec´ı icamen e op imizadas pa a di e en es ipos de pla a o mas de c´ompu o incluyendo acele ado es. Po ejemplo, la im- plemen aci´on con enida en la biblio eca In el MKL, apa e de ejecu a se en CPUs, incluye e siones pa- a Xeon Phi, mien as que la biblio eca cuBLAS es ´a especialmen e dise˜nada pa a GPUs de NVIDIA. Sin emba go, los mecanismos pa a ges iona la me- mo ia u ilizada po las es uc u as de da os sob e las que se ealiza el compu o son di e en es en cada imple- men aci´on, as´ı como algunos mecanismos elacionados con las llamadas y el paso de pa ´ame os. En es e a ´ıculo p esen amos una in e az ´unica pa a BLAS, in eg ada en un modelo de p og ama- ci´on he e og´enea (Con olle s) que sopo a g upos de n´ucleos de CPU, acele ado es Xeon Phi o GPUs de NVIDIA de o ma anspa en e pa a el p og amado . Con es a p opues a es posible cons ui p og amas po ables basados en u inas BLAS, que se ejecu an en di e en es ipos de acele ado es cambiando simple- men e un pa ´ame o de inicializaci´on. Nues a p o- pues a explo a in e namen e la biblio eca espec´ı ica pa a cada ipo de disposi i o. Las di e encias en sus in e aces y en los mecanismos ex e nos pa a ges iona la memo ia de los disposi i os, minimizando ans e- encias, son anspa en es pa a el p og amado . Los esul ados expe imen ales mues an que nues a abs- acci´on no in oduce p´e didas de endimien o signi- ica i as. Palab as cla e— BLAS, P og amaci´on he e og´enea, Con olle s, Acele ado es, GPU, Xeon Phi, MIC, CU- DA. I. In oducci´ on La especi icaci´on BLAS, muy conocida en el ´ambi- o de la compu aci´on cien ´ı ica, con iene la de ini- ci´on de es conjun os (denominados ni eles) de u i- nas ma em´a icas de bajo ni el que pe mi en ealiza ope aciones ec o - ec o , ec o -ma iz y ma iz- ma iz, espec i amen e. Exis en cie as implemen- aciones de BLAS que pe mi en ob ene un mejo endimien o cuando se ejecu an sob e un ha dwa e espec´ı ico. Algunos ejemplos de ´es as son cuBLAS[1], cuyas unciones es ´an op imizadas pa a GPUs que sopo en CUDA, y la implemen aci´on que se encuen- a como pa e de In el MKL[2], que pe mi e acele a su ejecuci´on bajo pla a o mas In el, en e las que se incluyen los cop ocesado es Xeon Phi. Uno de los p oblemas asociados al uso de cop oce- sado es es ´a en el ele ado cos e de mo e los da os necesa ios desde el hos al disposi i o. Pa a una se- cuencia conc e a de llamadas a u inas BLAS, esco- 1Dp o. de In o m´a ica, Uni . Valladolid, e-mail: [email p o ec ed] 2Dp o. de In o m´a ica, Uni . Valladolid, e-mail: [email p o ec ed] 3Dp o. de In o m´a ica, Uni . Valladolid, e-mail: [email p o ec ed] ge los momen os en los que se sinc onizan y mue en da os en e el hos y el disposi i o es impo an e. Los mecanismos pa a ealiza es as ans e encias a ´ıan en e las di e sas implemen aciones de BLAS, e in- cluso den o de cada implemen aci´on exis en di e en- es opciones con di e en es g ados de anspa encia y esponsabilidad de ca a al p og amado . Las biblio- ecas MKL de In el y cuBLAS/n BLAS de NVIDIA p o een dis in os mecanismos de o loading, ya sea o almen e au om´a ico, asis ido po el compilado (Compile -Assis ed O loading, CAO), o con ans e- encias p og amadas manualmen e. A mayo es, aun- que la in e az de las unciones BLAS pueda pa ece uni o me en e las di e en es implemen aciones, en la p ´ac ica exis en peque˜nas di e encias que con iene ene en cuen a. Po ejemplo, los mismos pa ´ame os pueden apa ece po alo o po e e encia en di e- en es biblio ecas, di e en es nomb es o cons an es se usan pa a indica el mismo ipo ope aciones o da os, e incluso algunas biblio ecas pueden ene pa ´ame- os ex a espec´ı icos de la p opia implemen aci´on, ales como una es uc u a de da os que ep esen a el con ex o de la biblio eca en cuBLAS. En abajos p e ios p esen amos el modelo deno- minado Con olle [3], que pe mi e la implemen aci´on de algo i mos conc e os en unidades de c´ompu o o ke nels. Cada ke nel se iden i ica po un nomb e e in- e az ´unicos, pe o se pueden decla a di e en es im- plemen aciones del mismo ke nel. Desde una gen´e i- ca que u iliza una abs acci´on que pe mi e ejecu a lo en cualquie disposi i o, has a una implemen aci´on espec´ı icamen e op imizada pa a cada ipo de pla a- o ma, o incluso pa a cada amilia de a qui ec u a. Un con olado se asocia a un disposi i o en su c ea- ci´on. Pe mi e asocia es uc u as de da os a su con- ex o e in oca la ejecuci´on de ke nels po nomb e. El con olado escoge la implemen aci´on del ke nel in ocado m´as adecuada pa a la pla a o ma o dispo- si i o al que es ´a asociado. La p ime a p opues a so- po aba como disposi i o an o un g upo de n´ucleos de CPU, como GPUs de NVIDIA[3]. Pos e io men- e se a˜nadi´o el sopo e pa a acele ado es In el MIC (Xeon Phi)[4]. In e namen e los Con olle s u ilizan OpenMP y CUDA pa a la coo dinaci´on de a eas. En es e abajo se p esen a una capa so wa e de abs acci´on en e di e sas implemen aciones de BLAS, u ilizando como sopo e la biblio eca de Con- olle s. Es a p opues a pe mi e al usua io p og a- ma c´odigos con secuencias de llamadas a las u inas de BLAS con una in e az uni o me y selecciona con un ´unico pa ´ame o el ha dwa e des ino en el que se ejecu a ´a el c´odigo. In e namen e, la biblio eca es- coge ´a la mejo implemen aci´on disponible pa a el ha dwa e seleccionado, u ilizando llamadas a biblio- eca BLAS espec´ı icamen e op imizadas pa a dicho ha dwa e, p o is as po el ab ican e o po e ce as pa es. Nues a p opues a combina po abilidad de c´odigo y de endimien o. El p esen e a ´ıculo es ´a es uc u ado en a ias pa es. La secci´on 2 p esen a algunos abajos e- lacionados. En la secci´on 3 se epasan algunas ca ac- e ´ıs icas de las he amien as u ilizadas. La secci´on 4 de alla las soluciones u ilizadas en nues a p opues a. En la secci´on 5 se desc ibe el abajo expe imen al pa a alida la p opues a. Finalmen e, en la secci´on 6 se discu en las conclusiones y el abajo u u o. II. T abajo elacionado La idea de ejecu a las unciones de BLAS en un en o no he e og´eneo no es nue a. Po ejemplo, exis- e una biblio eca BLAS pensada pa a se ejecu ada de o ma pa alela denominada PBLAS, p esen ada po Choi e al.[5] y que puede se desca gada des- de[6]. Una a ian e de ´es a, llamada He e oPBLAS[7] y c eada po Manumachu e al., es capaz de ejecu- a los algo i mos de BLAS explo ando el pa alelis- mo median e memo ia dis ibuida con He e oMPI en cl´us e es he e og´eneos, lo que a˜nade la capacidad de balanceo de ca ga. Sin emba go, He e oPBLAS no es capaz de explo a las capacidades de c´ompu o de los cop ocesado es conec ados a los nodos y ´unicamen e u iliza los co es de CPU. Una soluci´on al e na i a a la p esen ada aqu´ı es el conjun o de biblio ecas MAGMA[8], que con iene e siones op imizadas de las unciones de BLAS y LAPACK, y es ´a disponible an o pa a CPUs, CU- DA, OpenCL[9] y Xeon Phi[10]. La p incipal di e- encia que p esen a la soluci´on desc i a en es e a- bajo espec o a MAGMA es que no p e ende gene a una implemen aci´on e icien e po cada cop ocesado exis en e, sino que u iliza en su luga las biblio e- cas p opo cionadas po las p opias compa˜n´ıas que desa ollan el ha dwa e. De es a o ma se e i an los p oblemas de i ados de ac ualiza pe manen emen e los algo i mos de BLAS pa a cada nue a a qui ec u- a[11], o de ene que inclui nue os algo i mos que puedan apa ece pa a a qui ec u as an iguas. Finalmen e, dado que es posible p og ama an o pa a CPUs, GPUs y Xeon Phi u ilizando OpenCL, ambi´en cabe ci a la biblio eca clBLAS[12], que o - ma pa e de clMa hLib a ies, que a su ez es ´a siendo desa ollada po AMD. III. BLAS y Con olle s A. Implemen aciones especializadas de BLAS La especi icaci´on BLAS, muy conocida en el ´ambi- o de la compu aci´on cien ´ı ica, con iene la de inici´on de es conjun os (denominados ni eles) de u inas ma em´a icas b´asicas que pe mi en ealiza ope acio- nes ec o - ec o , ec o -ma iz y ma iz-ma iz, es- pec i amen e. Exis en cie as implemen aciones de BLAS que pe mi en ob ene un mejo endimien o cuando se ejecu an sob e un ha dwa e espec´ı ico. Al- gunos ejemplos de ´es as son cuBLAS[1], cuyas un- ciones es ´an op imizadas pa a GPUs que sopo en CUDA, y la implemen aci´on que se encuen a como pa e de In el MKL[2], que pe mi e acele a su ejecu- ci´on bajo pla a o mas In el, en e las que se incluyen los cop ocesado es In el MIC Xeon Phi. Cada u ina iene no malmen e cua o e siones pa a cua o ipos de da os di e en es. El ipo de da- os se e leja en el nomb e de la unci´on con una spa- a eales en pun o lo an e de p ecisi´on simple (p.ej. SGEMM); d, pa a eales en pun o lo an e de p eci- si´on doble (DGEMM); c, pa a n´ume os complejos en pun o lo an e de p ecisi´on simple (CGEMM) y inal- men e z, pa a complejos en pun o lo an e de p eci- si´on doble (ZGEMM). No malmen e se suele emplea un as e isco *o alg´un o o s´ımbolo en luga de la le- a co espondien e al ipo de da os cuando se ci a el nomb e de una u ina de o ma gen´e ica. En cada ni el de BLAS se de inen di e en es u i- nas. En ni el 1 encon amos u inas que hacen ope- aciones escala - ec o o ec o - ec o . Po ejemplo, la u ina *AXPY, que mul iplica los elemen os de un ec o po un escala , o I*AMAX, que pa a un ec o de uel e el ´ındice de la celda con el alo m´as al o del mismo. En ni el 2 encon amos u inas con ope- aciones ec o -ma iz, como po ejemplo *GEMV, que de uel e el esul ado de mul iplica una ma iz po un ec o . Finalmen e, en ni el 3 hay ope aciones ma iz-ma iz, como *GEMM que pe mi e ob ene el esul ado de la mul iplicaci´on de dos ma ices. En cada implemen aci´on especializada pa a cop o- cesado es encon amos di e sos mecanismos de o - loading, que son las ope aciones de mo imien o de da os desde la je a qu´ıa de memo ia del hos al dis- posi i o, o ice e sa. La biblio eca MKL, po ejem- plo, pe mi e hace o loading au om´a ico[13] de cie - as unciones a Xeon Phi. En es e caso, una llamada a unci´on de BLAS implica de o ma anspa en e el mo imien o de da os de en ada al cop ocesado y la ecupe aci´on de los esul ados mo i´endolos al hos . Es e mecanismo, si bien debe se habili ado po el usua io median e la llamada a una unci´on o la de ini- ci´on de una a iable de en o no (MKL MIC ENABLE=1), su ac i aci´on pa a una llamada a BLAS es decisi´on de la implemen aci´on. S´olo se ealiza cuando ´es a juzga que el ama˜no de da os a p ocesa es lo su i- cien emen e g ande como pa a que el mo imien o al cop ocesado compense[14]. En caso con a io la u- ina se ejecu a en el hos . Aunque es una uncionali- dad au om´a ica y anspa en e, s´olo es ´a disponible pa a pa a un conjun o muy educido de unciones de BLAS (*GEMM, *TRSM, y *STRMM), las uncio- nes de ac o izaci´on LU (*GETRF, *GETRFNPI), QR (*POTRF) y Cholesky (*GEQRF) y la educ- ci´on a o ma idiagonal (SYRDB) de LAPACK[15], [16], [17]. El encadenamien o de secuencias de lla- madas a es as unciones pueden p oduci m´ul iples mo imien os de da os innecesa ios, ya que aunque los esul ados de una u ina se ayan a u iliza como en adas en o a pos e io , el o loading au om´a ico siemp e ans ie e las en adas y salidas de cada u- ina de o ma independien e. O a opci´on consis e en el uso de In el Langua- ge Ex ensions o O load (LEO). Se a a de unas ano aciones del compilado de In el (p agmas) que pe mi en ealiza comunicaciones expl´ıci as de da os en e hos y disposi i o en los momen os deseados. Es o pe mi e el mayo g ado de con ol al p og ama- do , a cos a de un mayo es ue zo po su pa e pa a de e mina los mo imien os ´op imos y codi ica los, apa e de gene a un c´odigo menos po able. Como pa e de las posibilidades que o ece LEO es ´a el modo de o loading asis ido po el compilado (CAO), en el que el p opio usua io es esponsable de de ini qu´e unciones o g upos de ´es as se ejecu a ´an en el cop ocesado y cu´ales en el hos , quedando los de alles del mo imien o pa cialmen e ocul os. Es, po an o, una soluci´on m´as gene al que la an e io . To- das las unciones BLAS de MKL pueden se ejecu a- das median e es a ´ecnica y pe mi e eu iliza da os en e llamadas a u inas sin mo imien os innecesa- ios Sin emba go, las decisiones son esponsabilidad del p og amado , y los mo imien os se sinc onizan con los comienzos o inales de u inas. NVIDIA iene una soluci´on simila al o loading au om´a ico de MKL, median e una biblio eca llama- da n BLAS, que se ejecu a sob e su implemen aci´on especializada de BLAS pa a sus GPUs, denomina- da cuBLAS. Al igual que en el caso an e io , e i ica si la ans e encia median e el bus PCI compensa el iempo es imado de ejecuci´on. De nue o al igual que en MKL, s´olo es ´a disponible pa a un conjun o edu- cido de unciones (*GEMM, *SYRK, (C,Z)HERK, *SYR2K, (C,Z)HER2K, *TRSM, *TRMM, *SYMM y (C,Z)HEMM)[18]. Si no se u iliza es a opci´on, las ans e encias de memo ia en e hos y GPU deben se ges ionadas con las llamadas habi uales a la bi- blio eca de CUDA. Es o es equi alen e a la u iliza- ci´on de In el LEO en cuan o a mayo con ol, mayo es ue zo de desa ollo y meno po abilidad. En cuan o a di e encias de in e az podemos des- aca que en la segunda e si´on del API de cuBLAS se u iliza un nue o pa ´ame o handle que es espec´ı i- co de es a implemen aci´on. Se a a de una es uc- u a que con iene in o maci´on sob e el con ex o de la biblio eca, y que debe se c eada, pasada como p ime pa ´ame o en cada llamada a es a biblio e- ca, y pos e io men e des uida. O as di e encias me- no es apa ecen po ejemplo en la o ma de pasa cie os pa ´ame os. Po ejemplo, los escala es al a, be a, e c., se pasan como pun e o en odas las lla- madas a cuBLAS, mien as que en In el MKL se pasan po alo . O o p oblema eside en los di- e en es alo es que cada implemen aci´on asigna a las cons an es o ipos de da o que de inen ope acio- nes, ales como po ejemplo cublasOpe a ion y CBLAS TRANSPOSE, que especi ican si se debe ealiza o no la anspues a de una de las ma ices de en ada an es de ealiza la ope aci´on. Relacionado con ´es a, algunas biblio ecas como CBLAS pe mi en de ini si la ma iz de en ada es ´a en ow-majo o de (com´un en lenguajes como C) o en column-majo o de (em- pleado po p og amas en lenguaje Fo an). B. Con olle s La biblio eca de Con olle s[3], [4] in oduce una en idad abs ac a, el con olado , que se asocia en su c eaci´on a un disposi i o. Es e puede se una GPU, una acele ado In el MIC Xeon Phi, o un g upo de n´ucleos de CPU que se manejan de o ma anspa- en e como un acele ado . El con olado sopo a uncionalidades pa a aso- cia /desasocia una es uc u a de da os a su con ex- o, c ea /des ui es uc u as de da os den o de su con ex o que no ienen e lejo en el hos , y lanza ke nels ( u inas de abajo) en el disposi i o. Las llamadas a ke nels eciben como pa ´ame os alo es, o e e encias a es uc u as de da os de su con ex o (asociadas o c eadas). La asociaci´on de una es uc u a de da os al con ex o de un con olado implica que an es de se u ilizada po un ke nel los da os del hos se copia an a la imagen que se c ea en el con ex o del disposi i o. En el momen o de desaso- cia la, si la es uc u a ha sido modi icada en el dis- posi i o, los da os ac uales se copian en la imagen o iginal del hos . Las copias hacia el disposi i o pue- den se eage olazy, ealiz´andose en el momen o de la asociaci´on o e as´andose has a que son necesa ias. El con olado es esponsable de ges iona la cola de pe iciones de ejecuci´on de ke nels, y maneja las ans e encias de memo ia de o ma anspa en e. In- e namen e, los con olado es u ilizan las biblio ecas o uncionalidades na i as que p o een los endedo es de las pla a o mas, o las biblio ecas de e ce os m´as e icien es pa a cada pla a o ma. Po an o p o een de una capa de abs acci´on pa a desa olla p og a- mas po ables, consiguiendo la m´axima e iciencia en la ges i´on del disposi i o g acias a explo a los me- canismos na i os de cada uno. Pa a de ini ke nels, la biblio eca de con olado es u iliza un sis ema de decla aci´on gen´e ica de in e az donde se de alla el nomb e, n´ume o de pa ´ame os, ipos, nomb es y ol de en ada/salida. Un ke nel con un nomb e ´unico puede se decla ado a ias eces con un iden i icado de pla a o ma. Exis e un iden i ica- do gen´e ico que si e pa a decla a ke nels que se pueden ejecu a en cualquie pla a o ma. El con o- lado p o ee de un espacio de iden i icaci´on de´ındices de h ead simila al de CUDA u OpenCL, pe o que asocia los h eads en o den ow-majo , lo que pe - mi e po abilidad en e disposi i os. Se p o ee de un in e az de acceso a los elemen os de es uc u as de da os ´unico. Po an o el p og amado puede de ini ke nels sencillos y po ables. La especi icaci´on se ha- ce en g ano ino. El con olado es el esponsable de ag upa los h eads en bloques (pa a GPUs) o de ge- ne a a eas de g ano g ueso que eco en el espacio de´ındices con bucles (en OpenMP) pa a su ejecuci´on e icien e. Sin emba go, ambi´en se pe mi e decla a ke nels espec´ı icos pa a pla a o mas y a qui ec u as, donde se pueden inclui es uc u as y p imi i as p opias del modelo de p og amaci´on in e no. Po ejemplo, los ke nels decla ados pa a GPUs pueden u iliza sin- axis y p imi i as de CUDA pa a decla a y usa memo ia compa ida, sinc oniza los h eads del blo- que, e c. Es o pe mi e i cons uyendo una biblio eca de ke nels especializados que el con olado u iliza ´a p io iz´andolos sob e los ke nels gen´e icos cuando la a qui ec u a asociada sea la adecuada. Pa ´ame os de lanzamien o ales como los ama˜nos de bloque y g id pa a GPUs, se seleccionan au om´a icamen e en unci´on de una decla aci´on de p opiedades del c´odi- go suminis ada po el p og amado y un modelo de p edicci´on in e no. En caso de no ene una ca ac e- izaci´on espec´ı ica se u ilizan alo es po de ec o que asegu an m´axima ocupaci´on de los co es de la GPU. Pa a consegui una uni o midad en la ges i´on de las es uc u as de da os y en el paso de pa ´ame os, el modelo de con olado es se apoya en la biblio eca Hi map. Es a biblio eca pe mi e de ini es uc u as de da os con dominios de´ındices, ales como a ays o g a os. Cada es uc u a se ep esen a con una es uc- u a denominada Hi Tile que con iene me a-da os y pun e os a la zona de memo ia con los da os. La bi- blio eca incluye un in e az uni icado pa a la decla a- ci´on de espacios de ´ındices, c eaci´on, des ucci´on, y acceso a los da os de un Hi Tile. Los pa ´ame os de los ke nels en el modelo de con olado es son siem- p e ipos b´asicos pasados po alo , o Hi Tiles de cualquie ipo base. IV. P opues a de soluci´ on En es a secci´on se de alla la soluci´on p opues a pa a consegui una biblio eca po able y e icien e de BLAS a a ´es del modelo de con olado es. La bi- blio eca de con olado es nos acili a una o ma de cons ui un in e az ´unico pa a ke nels con di e en- es implemen aciones especializadas pa a di e en es pla a o mas. El con olado es el esponsable de es- coge la implemen aci´on adecuada pa a la a qui ec- u a a la que se asocia en su cons ucci´on. En caso de no exis i una ap opiada, el con olado u iliza ´a la implemen aci´on gen´e ica no especializada. Nues a p opues a se basa en ex ende el meca- nismo de los con olado es pa a implemen a ke nels con c´odigo que se ejecu a en el hos , pa a a˜nadi es nue os ipos de implemen aciones de ke nels, uno pa- a cada ipo de disposi i o sopo ado. Los ipos se denominan libCPU,libXPhi ylibGPU. Es os nue os ipos de ke nels se decla an como cualquie o o ke nel, pe o usando es os nomb es co- mo iden i icado es de a qui ec u a. En luga de im- plemen a un c´odigo especializado que se lanza y eje- cu a en el disposi i o, implemen an llamadas a un- ciones de biblio ecas ex e nas. Po an o su c´odigo se ejecu a en el hos , pe o la llamada a la biblio eca na i a dispa a la ejecuci´on de una u ina en el dis- posi i o. En el caso de g upos de CPUs (libCPU) o In el MIC XeonPhi (libXPhi), las llamadas se ´an a la biblio eca MKL. En el caso de GPUs (libGPU) las llamadas se ´an a cuBlas. Se ha desa ollado una colecci´on de ke nels. Uno po cada unci´on de BLAS y ipo de da os, que ac ´uan c´omo w appe s sob e las biblio ecas o igina- les. Hemos denominado a es a biblio eca de ke nels cuBLAS In el MKL O os Biblio eca Hi C lBLAS Hi Map Con olle s P og ama del Usua io Fig. 1 Capas de abs acci´ on y he amien as u ilizadas en la soluci´ on p opues a. Hi C lBLAS ( e Fig. 1). En es a biblio eca, cada unci´on de BLAS es un ke nel del modelo de con o- lado es, con es implemen aciones, una pa a cada ipo de disposi i o (CPUs, XeonPhi, GPU). El in e - az p opues o pa a cada unci´on de BLAS es com´un y uni o me. Den o de cada implemen aci´on se ges- ionan los de alles necesa ios pa a hace la llamada adecuada a la biblio eca co espondien e. Po ejem- plo, las implemen aciones libGPU con ienen in e na- men e el handle necesa io pa a las llamadas a cuBlas, que se c ea y des uye con el con olado cuando es e es ´a asociado a una GPU. O as di e encias espec o de las API de las biblio ecas u ilizadas como base se esuel en en la implemen aci´on de cada ke nel. Toda la ges i´on de ans e encias de da os ya es ´a esuel a en la biblio eca de con olado es, que u iliza CUDA, o CAO seg´un el ipo de disposi i o asocia- do al con olado . Las es uc u as de ipo Hi Tile de la biblio eca Hi map, u ilizadas en los con olado es, p o een ambi´en de un in e az uni icado pa a la ges- i´on de las es uc u as de da os. V. Es udio expe imen al A con inuaci´on se p esen a un abajo expe imen- al pa a comp oba que la implemen aci´on de la p o- pues a de la biblio eca de ke nels no impone una pe- nalizaci´on demasiado ele ada con espec o al iempo que a da ´ıa una aplicaci´on implemen ada di ec a- men e usando una de las biblio ecas o iginales. Como caso de p ueba se ha seleccionado un c´odigo que pe mi e calcula el esul ado de mul iplica una ma iz Apo o a B(ambas cuad adas) epe idas eces po la de echa. Dicho de o o modo, pe mi e ob ene el esul ado de C=A×Bn. En es e caso se u iliza una implemen aci´on ecu si a: Ck=Ck−1∗B, pa a k∈ {1,2, ..., n}, donde C0=A. Algunas imple- men aciones como In el MKL no pe mi en especi i- ca el mismo a gumen o como pa ´ame o de en ada y salida en la misma llamada, po lo que el esul ado de mul iplica Ck×Bno puede almacena se de uel a en Cpa a mul iplica de nue o po Bpo la de echa en la siguien e i e aci´on. Es o obliga al uso de una e ce a ma iz ese ada en la unidad de c´ompu o donde almacena el esul ado pa cial. U ilizamos un segundo ke nel pa a hace la copia de la ma iz in- e media a la que se usa como p ime ope ando en cada i e aci´on. Es e segundo ke nel no iene ca ga compu acional apa e de la simple ans e encia de memo ia, lo que pe mi e e mejo si las p opias lla- /∗CAL BLAS XPHI. cu ∗/ // C a a c e i z a c i ´on d e l k e ne l : Pa ´a me os po d e e c o CAL KERNEL GPU CHAR STATIC( scopy , 2 , de , de , de ) ; // D ec la ac i ´on de l a implemen aci ´on pa a GPU CAL KERNEL LIBGPU( scopy , 5 , IVAL, in , n , IN, Hi Tile loa ∗, x , IVAL, in , incx , IO, Hi Tile loa ∗, y , IVAL, in , incy ) { cublasScopy(comm−>handleCUBLAS , n , x . kda a , incx , y . kda a , incy ) ; } /∗CAL BLAS XPHI. cpp ∗/ // D ec la ac i ´on de l a implemen aci ´on pa a XeonPhi CAL KERNEL XPHI( scopy , 5 , IVAL, in , n , IN, Hi Tile loa ∗, x , IVAL, in , incx , IO, Hi Tile loa ∗, y , IVAL, in , incy ) { cb l as sco p y (n , x . da a , incx , y . da a , incy ) ; } Fig. 2 Ejemplo de decla aci´ on de dos implemen aciones (pa a GPU-CUDA y pa a In el MIC XeonPhi), del ke nel scopy de BLAS, en la biblio eca Hi C lBLAS. madas a los ke nels suponen un o e head ap eciable. La implemen aci´on pe mi e juga con dos pa ´ame- os, el n´ume o de eces que se mul iplica la ma iz B y el ama˜no de la ma iz. An es de comenza la i e aci´on p incipal, las ma ices iniciales AyBse copian en la memo ia de la unidad de c´ompu o. La implemen aci´on del c´odigo pa a las p uebas se ealiz´o en cua o e apas y dio como esul ado es c´odigos di e en es adem´as de la p opia biblio eca de ke nels. En una p ime a ase, la especi icaci´on de la aplicaci´on se adujo a dos a ian es, una u ilizando In el MKL y a˜nadiendo los p agmas necesa ios pa- a ejecu a las unciones de BLAS en una XeonPhi median e O loading asis ido po compilado y op i- miz´andola pa a educi las ans e encias de da os, y una segunda a ian e en la que se u iliza cuBLAS y el compilado de NVIDIA pa a ealiza el mismo p ocesamien o en una GPU habili ada pa a CUDA. En ambos casos se ha e i icado que las unciones de BLAS se ejecu an ealmen e en sus espec i os co- p ocesado es y que en ning´un caso el compilado o el sis ema de ejecuci´on oman la decisi´on de ejecu- a la unci´on en el hos . Po ejemplo en el caso de la Xeon Phi u ilizamos a iables de en o no, ales como OFFLOAD REPORT=3, an es de la ejecuci´on del p og a- ma[19]. Es as dos a ian es (ma ixABk XeonPhi, ma ixABk CUDA, no u ilizan Con olle s y se em- plean como e e encias. Pos e io men e, se ealiz´o la e si´on que u iliza con olado es, empezando po la c eaci´on de la capa in e media de ke nels. Como ya se ha explicado, po cada unci´on de BLAS se implemen a on dos ke nels con el mismo nomb e, uno pa a libXPhi que u ili- za su equi alen e en In el MKL y una segunda que u iliza la unci´on co espondien e en cuBLAS. Todo es o se ealiza cua o eces po cada g upo de uncio- nes (eg. *GEMM →SGEMM, DGEMM, CGEMM, ZGEMM), y los ke nels de CUDA y los de In el MKL se c ean en dos iche os sepa ados pa a pode compi- la cada uno de ellos con su compilado espec´ı ico. A con inuaci´on se c ea on sendos iche os de cabece a, y inalmen e el p og ama p incipal. El aspec o del p og ama p incipal se mues a en la Fig. 3. En ´el se pueden e las di e en es e apas de las que suele cons a no malmen e el desa ollo de p og amas usando Con olle s. En p ime luga se inicializa el sis ema de con olado es y se decla an las a iables, ales como ma ices y ec o es, que se ayan a emplea , u ilizando Hi Tiles. Pa a las ma i- ces AyBse decla a y ese a espacio de memo ia en el hos en la misma llamada. Pa a la ma iz Cs´olo se decla an sus ca ac e ´ıs icas pe o no se ese a me- mo ia pa a los da os, ya que se u iliza ´a s´olo como a iable empo al en el disposi i o. El siguien e paso es decla a los con olado es que deseemos con el ipo CALCn l. Median e la unci´on de c eaci´on el con olado queda ´a asociado con una unidad de c´ompu o (como po ejemplo una GPU, una Xeon Phi espec´ı ica o un conjun o de uno o m´as co es CPU). Dado que odas las unciones de con- olado es eciben como pa ´ame o un CALCn l, es posible selecciona din´amicamen e (en iempo de eje- cuci´on) qu´e unciones se ´an ejecu adas po cada uni- dad de c´ompu o (con olado ). Es o ambi´en pe mi e que las mismas unciones puedan se ejecu adas po di e en es con olado es, o bien que cada con olado ejecu e un conjun o conc e o de unciones. A con inuaci´on, en el c´odigo, se de ine una con igu- aci´on que incluye el n´ume o de hilos (l´ogicos o i - uales) que se u iliza ´an en la unidad de c´ompu o, y se copian las ma ices desde la CPU a la misma usan- do CAL Cn lA ach. Como se expuso an e io men e, in main ( in a gc , cha ∗a g [ ] ) { CAL Cn lIni ( 1 ) ; // D ecl a ac i ´on de dominio de i n d i c e s de cada ec o / m a i z H i T i l e l o a ma ixA , ma ixB , ma ixC ; h i il e Do m ai n (&ma ixC , loa , 2 , ows , columns ) ; // Rese a de esp acio ( s ol o pa a e c o e s / ma ices en CPU) hi ileDomainAlloc(&ma ixA , loa , 2 , ows , columns ) ; hi ileDomainAlloc(&ma ixB , loa , 2 , ows , columns ) ; // I n i c i a l i z a da os en hos ... // C ea con o l a d o CALCn l commGPU; CAL Cn lC ea e(&commGPU, CAL CNTRL LIBGPU, 0 ) ; // N´ume o de h eads ( ea le s en GPU, i u a l e s en CPU) CALTh ead h eads ; CALTh eadIni ( h eads , 2 , ows , columns ) ; // Asocia ma ices que e s i d i ´an an o en hos como en a c e l e a d o CAL Cn lA ach(&commGPU, &ma ixA ) ; CAL Cn lA ach(&commGPU, &ma ixB ) ; // C ea ma ices que e s i d i ´an s ´o l o en e l a cele ado CAL Cn lIn e nal(&commGPU, &ma ixC ) ; ... // Lanzamien o de k e n e l s in imes ; o ( im es = 0 ; ime s < i n a l p o w e ; imes++) { CAL Cn lLaunch (commGPU, sgemm , h eads , 13 , & i l e o p n o a , & i l e o p n o a , ows , columns , columns , 1 . 0 , &ma ixA , columns , &ma ixB , columns , 0 . 0 , &ma ixC , ows ) ; CAL Cn lLaunch (commGPU, scopy , h eads , 5 , ows∗columns , &ma ixC , 1 , &ma ixA , 1 ) ; } ... // L ibe a e s u c u a s CAL Cn lDe ach(&commGPU, &ma ixA ) ; CAL Cn lDe ach(&commGPU, &ma ixB ) ; CAL Cn lDes oyIn e nal(&commGPU, &ma ixC ) ; CAL Cn lDes oy(&commGPU) ; h i i l e F e e ( ma ixA ) ; h i i l e F e e ( ma ixB ) ; } Fig. 3 Ex ac o del p og ama p incipal del ejemplo C=A×Bku ilizando la biblio eca de con olado es y Hi C lBLAS. En es e caso el con olado u ilizado es ´ a asociado a la p ime a GPU del sis ema. puede se necesa io ese a espacio den o del dis- posi i o pa a una es uc u a empo al, sin memo ia ese ada en en la CPU. En el ejemplo se u iliza la unci´on CAL Cn lIn e nal pa a ealiza es a ese - a pa a la ma iz C. Seguidamen e, el c´odigo con- iene un bucle que lanza los ke nels co espondien es a SGEMM, pasando los pa ´ame os necesa ios. En unci´on del ipo de disposi i o al que es ´e asociado el CALCn l que se pasa como pa ´ame o, el ame- wo k de con olado es elegi ´a en e la implemen a- ci´on de cuBLAS o la de In el MKL pa a Xeon Phi. Du an e las i e aciones no se p oduce mo imien o de da os en e el cop ocesado y el hos , lo que aumen a la e iciencia. Finalmen e, al ealiza la ope aci´on de de ach de las ma ices AyB, los da os de la ma iz esul ado almacenada en Ase copian de uel a a la CPU. En el caso de B, el con olado de ec a que no ha sido modi icada y no ealiza ans e encia de memo ia a la CPU. La ma iz C ese ada s´olo en el disposi i o se des uye. Se des uye el con olado en uso y se libe a la memo ia usada en el hos . Las p uebas con es e c´odigo ue on ejecu adas en una m´aquina denominada ‘Chime a’, que con iene las ca ac e ´ıs icas especi icadas en la Tabla I. El mo- i o pa a su selecci´on, como se puede e en dicha abla, es que la misma dispone an o de un cop o- cesado Xeon Phi como de una GPU Ti an Black, lo que pe mi e hace p uebas u ilizando cualquie a de los dos disposi i os, asegu ando que el es o del ha dwa e de la pla a o ma es exac amen e el mismo. Cada expe imen o se epi e al menos cinco eces, ob- se ´andose una al a es abilidad en las medidas y e- p oducibilidad de los esul ados. Las Fig. 4 y 5 mues an la elaci´on en e los iem- pos de ejecuci´on del p og ama que ob iene la mul- iplicaci´on de una ma iz po o a epe idas eces (C=A×Bk), pa a un k= 3, en unci´on del ama˜no de la ma iz que se le pasa como pa ´ame o. La p ime a igu a, Fig. 4, mues a la di e encia en- e la e si´on que hace llamadas a cuBLAS di ec a- men e ( ep esen ada median e pun os cuad ados) y la e si´on que u iliza llamadas a las unciones del con olado que ac ´uan como w appe s de cada un- ci´on de cuBLAS. En es a g ´a ica se puede e que el uso de Con olle s (y po an o de la biblio eca que se desc ibe en es e abajo). La di e encia de endimien- o pa a la e si´on con Con olle s comienza con una pe dida de has a un 79 % pa a ma ices peque˜nas de 1000 ×1000, que se educe ´apidamen e al aumen a el ama˜no de la ma iz, has a algo menos de un 4 % de penalizaci´on pa a ma ices de 20000 ×20000. La segunda g ´a ica, Fig. 5 con iene la misma com- pa aci´on pa a Xeon Phi. Una e si´on u iliza llamadas di ec as a la implemen aci´on CBLAS de In el MKL, y la o a u iliza el mismo c´odigo de con olado u ili- zado en el caso de la GPU, pe o es a ez asociando el con olado a la unidad Xeon Phi en el momen o de su c eaci´on. Se puede e que en es e caso los iempos de ejecuci´on de la a ian e con con olado , con ma- ices g andes a pa i de 6500 ×6500, la des en aja onda siemp e en e el 10 % y el 19 %. Sin emba go, con ama˜nos peque˜nos de has a 6000×6000, el com- po amien o depende mucho del ama˜no en conc e o. En cie os casos se ob ienen penalizaciones de has a el 19 %. En o os, sin emba go, la e si´on con con- olado ob iene en ajas de endimien o de has a un 14 %, o incluso en un caso conc e o con una en aja de un 46 %. Pues o que es os esul ados son consis- en es a lo la go de a ias ejecuciones, ac ualmen e se es ´a abajando en ealiza un p o iling de allado pa a a e igua las azones de es as a iaciones seg´un el ama˜no de las ma ices, O a en aja que se ha podido demos a median e la implemen aci´on de es e so wa e es que el uso de las nue as biblio ecas de ke nels pe mi en que la apli- caci´on pueda cambia en e las unciones de CBLAS MKL y las de cuBLAS an s´olo cambiando un ´uni- co pa ´ame o al c ea el Con olle , consiguiendo la po abilidad deseada. VI. Conclusiones y abajo u u o En es e abajo se p esen a una implemen aci´on de una biblio eca de unciones BLAS he e og´enea, de al o ma que es posible de ini algo i mos gen´e icos in- dependien es de la pla a o ma, u ilizando de o ma anspa en e an o implemen aciones p opias como las unciones BLAS que p o een las biblio ecas de los p opios ab ican es de los di e en es acele ado es y cop ocesado es. Es a soluci´on pe mi e po a ´acil- men e c´odigos que p e iamen e ealiza an llamadas a biblio ecas espec´ı icas BLAS de o ma muy sencilla, a la ez que habili a el uso de m´ul iples cop ocesa- do es de ipos di e en es sin obliga al p og amado Sis ema ope a i o Cen OS 7.2.1511 P ocesado In el Xeon E5-2620 3 Velocidad de eloj 2.40GHz Memo ia p incipal 32 GB DDR3 1333 MHz Memo ia cach´e 15 MB Cop ocesado In el Xeon Phi (KNC) A3120 Cop ocesado NVIDIA GTX Ti an Black GK110B En o no In el Pa allel S . XE 2017.0.035 En o no NVIDIA CUDA (n cc) 8.0.44 TABLA I Ca ac e ´ ıs icas ha dwa e y so wa e del en o no de p uebas. a esol e las di e encias en e di e en es in e aces o duplica el c´odigo. A mayo es, g acias al sis ema de con olado es, es- a soluci´on e i a el mo imien o innecesa io de los da- os que esiden en los di e en es ipos de unidades de c´ompu o has a que los da os esul ado son expl´ıci a- men e sinc onizados con el hos po el p og amado . Al u iliza es e sis ema, el o e head in oducido con espec o a una implemen aci´on di ec a del p og a- ma p incipal u ilizando las biblio ecas p opo ciona- das po los ab ican es es peque˜no. Uno de los obje i os a co o plazo es la educci´on del o e head que exis e en las ejecuciones pa a la e - si´on libXPhi con ama˜nos de ma ices g andes, como se ha podido ap ecia median e el caso de es udio u ilizado. Adem´as, pa a pode ene una base expe- imen al m´as amplia, se es ´an implemen ando y p o- bando nue os ejemplos, incluyendo casos que pe mi- an p oba di e sas op imizaciones o solapa c´alculo y comunicaci´on. Se plan ea ambi´en como abajo u u o compa a con o as lib e ´ıas de BLAS o ien- adas a la po abilidad en sis emas he e og´eneos. Ag adecimien os Es e abajo ha sido pa cialmen e inanciado po el Minis e io de Ciencia e Inno aci´on (MICINN) y po el p og ama ERDF de la Uni´on Eu opea: P oyec o HomP og-He Sys (TIN2014-58876-P), CAPAP-H6 (TIN2016-81840-REDT), y COST P og am Ac ion IC1305: Ne wo k o Sus ainable Ul ascale Compu- ing (NESUS). Re e encias [1] NVIDIA Co po a ion, “cuBLAS Lib a y: Use Guide,” h p://docs.n idia.com/pd /CUBLAS_Lib a y. pd , Jan. 2017. [2] In el Co po a ion, “In el R Ma h Ke nel Lib a y (In el R  MKL)”, h p://so wa e.in el.com/en-us/in el-mkl. [3] Ana Mo e on-Fe nandez, Hec o O ega-A anz, and A - u o Gonzalez-Esc ibano, “Con olle s: An abs ac ion o ease he use o ha dwa e accele a o s,” The In e na ional Jou nal o High Pe o mance Compu ing Applica ions, p. 109434201770296, May 2017. [4] Ana Mo e on-Fe nandez, Edua do Rod iguez-Gu iez, A - u o Gonzalez-Esc ibano, and Diego R. Llanos, “Suppo - ing he Xeon Phi cop ocesso in a He e ogeneous P o- g amming Model,” in Eu o-Pa 2017: Pa allel P oces- sing, San iago de Compos ela, Galicia, Spain., Aug. 2017, Sp inge , Cham, In p ess. [5] Jaeyoung Choi, Jack Donga a, Susan Os oucho , An- oine Pe i e , Da id Walke , and R. Clin on Whaley, “A 0 2 4 6 8 10 12 14 16 0 5 10 15 20 Tiempo (segundos) Ca dinalidad de cada dimensión (en miles de elemen os) C=A×Bn usando cuBLAS en GTX Ti an Black (Chime a) cuBLAS cuBLAS + Con olle s Fig. 4 Resul ados expe imen ales pa a el p og ama de mul iplicaci´ on C=A×Bnejecu ado en una GPU NVIDIA, an o la e si´ on que ealiza llamadas di ec amen e a cuBLAS, como la e si´ on con Con olle s. 0 1 2 3 4 5 0 2 4 6 8 10 Tiempo (segundos) Ca dinalidad de cada dimensión (en miles de elemen os) C=A×Bn usando MKL CBLAS en Xeon Phi 3120 (Chime a) MKL CBLAS (Xeon Phi) MKL CBLAS (Xeon Phi) + Con olle s Fig. 5 Resul ados expe imen ales pa a el p og ama de mul iplicaci´ on C=A×Bn, ejecu ado en un cop ocesado Xeon Phi, an o la e si´ on que ealiza llamadas di ec amen e a CBLAS de MKL. como la e si´ on con Con olle s. p oposal o a se o pa allel basic linea algeb a subp o- g ams,” in Applied Pa allel Compu ing Compu a ions in Physics, Chemis y and Enginee ing Science. Aug. 1995, pp. 107–114, Sp inge , Be lin, Heidelbe g. [6] “PBLAS Home Page,” h p://www.ne lib.o g/ scalapack/pblas_q e .h ml. [7] Ra i Reddy Manumachu, Alexey Las o e sky, and Pe- d o Alonso, “He e ogeneous PBLAS: Op imiza ion o PBLAS o He e ogeneous Compu a ional Clus e s,” in 2008 In e na ional Symposium on Pa allel and Dis ibu- ed Compu ing, July 2008, pp. 73–80. [8] S animi e Tomo , Jack Donga a, and Ma c Baboulin, “Towa ds dense linea algeb a o hyb id GPU accele a- ed manyco e sys ems,” Pa allel Compu ing, ol. 36, no. 5, pp. 232–240, June 2010. [9] Peng Du, Rick Webe , Pio Luszczek, S animi e Tomo , G ego y Pe e son, and Jack Donga a, “F om CUDA o OpenCL: Towa ds a pe o mance-po able solu ion o mul i-pla o m GPU p og amming,” Pa allel Compu- ing, ol. 38, no. 8, pp. 391–407, Aug. 2012. [10] Jack Donga a, Ma k Ga es, Azzam Haida , Yulu Jia, Khai ul Kabi , Pio Luszczek, and S animi e To- mo , “HPC P og amming on In el Many-In eg a ed-Co e Ha dwa e wi h MAGMA Po o Xeon Phi,” Scien i ic P og amming, ol. 2015, pp. e502593, Ap . 2015. [11] Ma k Ga es, “MAGMA Fo um: Pe o mance is- sue,” h p://icl.cs.u k.edu/magma/ o um/ iew opic. php? =2& =1475, Dec. 2016. [12] Ken Knox, Jian Liu, Da id Tanne , Pa an Yalaman- chili, Ch is ian Kellne , Hugh Pe kins, Tingxing Tim Dong, Ga¨e an Lehmann, Ced ic Nug e en, and Benja- min Coquelle, “clBLAS: a so wa e lib a y con aining BLAS unc ions w i en in OpenCL,” h ps://gi hub. com/clMa hLib a ies/clBLAS, May 2017, o iginal-da e: 2013-08-13T15:05:53Z. [13] In el Co po a ion, “Using In el R MKL Au oma ic O - load on In el R Xeon Phi Cop ocesso s,” h ps://goo. gl/1kq8GB, 2011. [14] In el Co po a ion, “In el R MKL Au oma ic O load enabled unc ions o In el Xeon Phi cop ocesso s,” h ps://goo.gl/9jV7PY, Feb. 2013. [15] Ken Mil eld, “In el Xeon Phi MIC O load P og amming Models,” h ps://goo.gl/ KxFgx, No . 2014. [16] In el Co po a ion, “In el R Ma h Ke nel Lib a y (In el R  MKL) 11.3 Release No es,” h ps://goo.gl/oPU5ay, Feb. 2016. [17] In el Co po a ion, “In el R Ma h Ke nel Lib a y (In el R  MKL) 2017 Release No es,” h ps://goo.gl/82 Mkh, Sep . 2016. [18] NVIDIA Co po a ion, “NVBLAS,” h p://docs. n idia.com/cuda/n blas/index.h ml. [19] James Je e s, James Reinde s, and A inash Sodani, In- el Xeon Phi P ocesso High Pe o mance P og amming, Mo gan Kau mann, Camb idge, MA, edici´on: 2 edi ion, June 2016. [20] L. Susan Black o d, An oine Pe i e , Roldan Pozo, Ka- in Reming on, R. Clin Whaley, James Demmel, Jack Donga a, Iain Du , S en Hamma ling, G eg Hen y, Mi- chael He oux, Linda Kau man, and And ew Lumsdai- ne, “An upda ed se o basic linea algeb a subp og ams (BLAS),” ACM T ansac ions on Ma hema ical So wa e, ol. 28, no. 2, pp. 135–151, June 2002. [21] Ga y W. Howell, James W. Demmel, Cha les T. Ful- on, S en Hamma ling, and Ka en Ma mol, “Cache e i- cien bidiagonaliza ion using BLAS 2.5 ope a o s,” ACM T ansac ions on Ma hema ical So wa e, ol. 34, no. 3, pp. 1–33, May 2008. [22] Je emy G. Siek, Ian Ka lin, and E. R. Jessup, “Build o o de linea algeb a ke nels,” Ap . 2008, pp. 1–8, IEEE. [23] Ga y W. Howell and Cha les T. Ful on, “Cache E icien Householde Bidiagonaliza ion,” The College o William and Ma y, Williamsbu g, Vi ginia, June 2003.