jueves, 24 de octubre de 2013

Obtener soporte de OpenCL en Drivers Mesa usando Arch

[AVISO IMPORTANTE] No sé qué leches habrá pasado pero la última versión del paquete opencl-mesa-git rompe el soporte de OpenCL así que NO actualicéis más de la versión 59136. Al parecer, en la siguiente versión el nombre de la librería ha cambiado de libOpenCL.so a libMesaOpenCL.so y ahora se queja de mala manera. Cuando el problema esté resuelto lo avisaré sin falta. [FIN DEL AVISO]

[ACTUALIZACIÓN] Ya se puede volver a utilizar perfectamente el paquete opencl-mesa-git del repositorio dado. Resulta que en mesa habían cambiado al modelo de ICD para poder tener diferentes implementaciones de OpenCL a la vez instaladas y por eso ahora el paquete se llamaba libMesaOpenCL.so. Pero el mantenedor del repositorio se había olvidado de modificar el PKGBUILD para añadir la dependencia de libcl, que es el cargador de ICD. Me puse en contacto con él y los paquetes ya están arreglados y funcionan.

Notad que ahora ya no proveen los headers de OpenCL, así que si queremos compilar código de OpenCL necesitaremos instalar también opencl-headers. Si no lo hacemos, tendremos que comprobar el soporte de OpenCL con alguna aplicación que sepamos que lo utiliza.

Notad también que el PKGBUILD que aparece en el repositorio todavía (28/10/13) no es el actualizado. [FIN DE LA ACTUALIZACIÓN]

Tanto en nuestras casas como en nuestras aulas u oficinas, utilizar un mobiliario de calidad y confortable es básico para poder trabajar de la mejor forma posible. Así pues, ¿Qué hacemos con, por ejemplo, una mesa que nos sea incómoda? La tiramos y la cambiamos:

La tiramos (╯°□°)╯︵ ┻━┻
Y la cambiamos ┬─┬ノ( ゜-゜ノ)

Pues precisamente vamos a hacer esto mismo con nuestra mesa, la única diferencia es que no será una mesa física, sino que son los drivers mesa los que vamos a cambiar.

Lo que queremos es poder aprovechar, o al menos servir como beta-testers del soporte de OpenCL en tarjetas gráficas AMD con nombres tan simpáticos como "Evergreen" o "Southern Islands". Y además, como regalo nos llevamos el ser beta-testers también de clang y llvm, ¡son todo ventajas!

Al menos esto era lo que yo quería: Probar el soporte de OpenCL en la tarjeta gráfica... por aquello de aprender y tal. Que al menos uno tiene la intención de cumplir todo lo que pueda con sus propósitos de año nuevo.

Bueno, que me lío, al tajo.

Supondremos que tenemos un sistema Arch, actualizado y en un equipo con una tarjeta gráfica adecuada. Si utilizamos abs para echarle un ojo al PKGBUILD de mesa, podremos ver que no tiene la flag de '--enable-opencl'. Por tanto, se nos presentan dos alternativas, la difícl y la fácil.

La difícil sería modificar el PKGBUILD para añadir la flag necesaria , compilar e instalar. ¿Y esto es complicado? Bueno... si solo fuese esto no lo sería, pero aparecen dos problemas. El primero es que se necesita el paquete libclc para compilar mesa con OpenCL, y ese hay que obtenerlo desde el AUR. Supongamos que resolvemos este pequeño percance y tenemos nuestro flamante paquete listo para ser instalado. ¿Qué podría ir mal ahora? Por ejemplo... conflictos con varios paquetes ya instalados.


Llegados a este punto, uno ya se cansa y quiere mandar a la porra a la pobre mesa, al OpenCL y la tarjeta gráfica, menos mal que siempre queda la salida fácil.

La forma fácil de hacer todo esto consiste en utilizar un repositorio con paquetes ya preparados para ser instalados y preparados para que resuelvan los conflictos ellos solitos.

Para esto, podemos utilizar el repositorio no oficial de mesa-git. Añadimos un par de líneas a nuestro pacman.conf:
[mesa-git]
Server = http://pkgbuild.com/~lcarlier/$repo/$arch
Le pedimos a pacman que actualice sus repositorios:
sudo pacman -Syy
E instalamos opencl-mesa-git
sudo pacman -S opencl-mesa-git
Esperamos a que termine todo, reiniciamos por si acaso y listos. Ahora solo queda comprobar que todo funcione. A esto nos ayudará Tom Stellard, uno de los desarrolladores de mesa y que tiene un pequeño repositorio con tests para OpenCL.

Nos vamos a nuestro directorio de trabajo/frikeo y clonamos su repositorio con git:
git clone http://cgit.freedesktop.org/~tstellar/opencl-example/
Nos movemos al mismo y compilamos todo con make:
cd opencl-example && make
Ahora probamos los tests:
./run_tests.sh
Si al final obtenemos un "71 passes, 0 fails" felicidades, tienes OpenCL instalado y funcionando (al menos experimentalmente) Si no, primero asegúrate de estar utilizando una de las tarjetas soportadas o si no, pon un bug.

Como nota importante: El soporte todavía es experimental e incompleto, tampoco empecéis a decir que X cosa no funciona porque todavía queda mucho trabajo por hacer.

Espero que os haya sido útil, si tenéis algún problema no dudéis en preguntar, ¡quizás hasta os pueda ayudar! En un futuro trataré de hacer algún post sobre OpenCL, explicando lo que es y como hacer pequeños programitas con él.

Más información en: GalliumCompute
Mi hilo en los foros de Arch preguntando esto mismo: Arch Forums

domingo, 20 de octubre de 2013

Retomando el Blog, Otra Vez

Hola otra vez, tal vez recordéis que hace tiempo tenía un blog.... y lo abandoné, hasta ahora. Después de un tiempo pensándolo he decidido retomar la labor de escribir por aquí algunas cosillas. Aunque esta vez va a ser con una filosofía más o menos distinta, más bien basada en "publicaré lo que quiera y cuando quiera". Así que os podréis esperar cualquier cosa, como viene siendo habitual, por otra parte, en mi cuenta de Twitter.

Tal vez os estéis preguntando porqué, después de tanto tiempo, he decidido volver a escribir en un blog, de forma que cualquiera me pueda leer, por ejemplo gente que ande aburrida por google. Pues bien, la respuesta es muy simple:

- ESCRIBIR -

Esa es la respuesta, escribir, vuelvo a retomar el blog para escribir. O más bien, para tratar de escribir mejor. He notado que últimamente, más en este último par de años, me cuesta mucho escribir un texto largo sin que sea una sucesión de ideas que caben en un tweet.

Si habéis entendido que vuelvo por aquí porque Twitter está haciendo que mi mente no desarrolle nada más allá de los 140 caracteres habéis acertado. Ya que es lo que creo. El límite de caracteres de Twitter nos hace buscar la compactación máxima de las ideas de forma que podamos expresarlas cada vez en frases más y más cortas. Esto nos hace escribir mal. O mejor dicho, no nos hace necesariamente escribir mal, un texto puede estar compuesto perfectamente de frases de menos de 140 caracteres. Lo que hace es que nos cueste mucho más desarrollar a lo largo de varios párrafos una idea.

Esto es precisamente lo que busco, no ya evitar, ya que he caido, sino corregir. Creo que, regresando a un blog, de forma que puedo escribir artículos más desarrollados, reflexionados y corregidos podré, en alguna medida, volver a poder escribir "parrafadas"

Hasta aquí mis razones, por las que agradecería que fuerais indulgentes conmigo, al menos en los primeros posts, trataré de mejorar con los siguientes.

En cuanto al contenido y frecuencia del blog. No voy a intentar llegar a la frecuencia del Tipo de la Brocha de dos artículos bastante largos a la semana. Tampoco creo que seré capaz de llegar a la calidad y a la capacidad de reflexión de Elisabet Roselló u otros escritores. Más bien, este blog va a contener lo que a mí me apetezca, desde reflexiones personales, comentarios de libros y películas hasta tutoriales/ejemplos sobre alguna cosa relacionada con la tecnología.

Esperemos que en esta nueva etapa, el blog vuelva a funcionar como a mí me gustaría, y yo mismo vuelva a escribir como me gustaría.

P.D: Si a alguien no le gusta algo de la plantilla, puede decirlo, y si sugiere otra y me gusta más pues la pondré, que ahora es fase de pruebas (^_^)