Mostrando entradas con la etiqueta GotoBLAS. Mostrar todas las entradas
Mostrando entradas con la etiqueta GotoBLAS. Mostrar todas las entradas

viernes, 17 de diciembre de 2010

GotoBLAS ya es software libre

Buenas noticias,

La implementación de alto rendimiento en lenguaje ensamblador de los Basic Linear Algebra Subprograms, GotoBLAS2, ya es software libre. Hasta ahora, aunque el código fuente podía ser descargado previo registro, su uso y modificación estaba limitado a trabajos científicos y sin ánimo de lucro. El pasado mes de noviembre el Texas Advanced Computing Center (TACC), propietario de los derechos (y lo sigue siendo), liberó el código bajo los términos de la licencia BSD, lo que lo convierte en software libre. En la web indican que GotoBLAS2 ya no es un proyecto en desarrollo del TACC, por lo que lo ponen a disposición del público. Yo no sé las razones exactas, pero sospecho que abandonan porque el programador original, Kazushige Goto (seguro que apodado entre sus compañeros el friki* o ese tío tan raro que programa en ensamblador*) ya no trabaja en el TACC (lo ha fichado Microsoft) y no tienen gente capaz de seguir con el proyecto. Como digo, es una buenísima noticia para el software libre porque nada más y nada menos que la implementación más rápida de BLAS ahora puede ser libremente desarrollada por la comunidad. Esto en teoría, claro, ya que es muy difícil que alguien que no sea K. Goto llegue a tener un dominio del código lo suficientemente profundo como para mejorar su trabajo. Pero bueno, ahora, por lo menos, si alguien quiere intentarlo ya no está limitado en cuanto a la publicación sus progresos por ninguna licencia.

Para los que estuvieron en la última charla de C del otro día, olvidaos de lo que dije acerca de que GotoBLAS no era libre. La charla, por cierto, os la podéis descargar de aquí: http://www.mat.ucm.es/~joseluig/descargas/iag-c.zip (todavía no sabemos cuándo vamos a migrar el blog). He añadido a la carpeta doc/ un *.pdf con un estudio de un desarrollador de Debian del rendimiento de distintas implementaciones de BLAS.

*De ninguna manera pretendo despreciar a K. Goto ni a su trabajo con lo dicho arriba entre paréntesis. Ya quisiera yo ser tan friki como él (y llevarme a las nenas de calle diciendo que implemento código de multiplicación matricial en ensamblador para x86, Power, Alpha, etc. y no me despeino).

Hala, a picar código, que no todo va a ser ...:

lunes, 22 de marzo de 2010

Sustitutos libres de MatLab

Bueno, para estrenarnos en el blog vamos a escribir un pequeño apunte acerca de las alternativas que tenemos a MatLab en el mundo del software libre.

Como creo que todos sabemos por experiencia, MatLab es un software que, en temas de cálculo numérico, permite hacer (casi) de todo. Como también es un intérprete de un lenguaje de programación nos permite el desarrollo de aplicaciones, característica que, en mi caso, es la que más uso. Como aspectos negativos, nos encontramos varios:
  1. No es software libre, con lo que tenemos que creernos lo que hace porque sí, no podemos modificarlo (en el caso de que alguien sepa cómo), no podemos redistribuirlo, etc.
  2. Hasta que no haya un número importante de usuarios que necesiten una característica determinada, MathWorks no la implementará.
  3. Hay plataformas para las que no existe de forma nativa, como los *BSD, por ejemplo (aunque parece que en FreeBSD se puede instalar la versión de Linux).
  4. Cuesta un dineral. No sé el precio exacto, pero es una barbaridad, muchos miles de euros. Y todo ese dinero para, al final, no usar más que un pequeño porcentaje de sus funcionalidades.
En realidad, alguien podría decir que el único aspecto importante es el del dinero. Pasamos entonces a intentar convencerlo de usar un software equivalente, repasando varias de las alternativas que existen:
  1. GNU Octave: Podría decirse que, a efectos prácticos, es un clon de MatLab. Es software libre (pertenece al proyecto GNU) y puede que sea la alternativa más sólida al programa de MathWorks. A nivel de sintaxis es compatible casi al 100% con MatLab, e incluso añade características interesantes que éste no tiene. En cuanto a los cálculos, GNU Octave se basa en bibliotecas de referencia: BLAS (la versión de referencia, ATLAS o GotoBLAS) y LAPACK para el álgebra, FFTW para las transformadas de Fourier, etc. También permite enlazar funciones escritas en C/C++ o Fortran de una manera fácil (tarea que no es trivial en MatLab). Eso sí, tiene una pega: el soporte para gráficos no es nada bueno (comparado con el de MatLab).
  2. FreeMat: No he usado nunca este programa, aunque tiene buena pinta. También tiene una compatibilidad con MatLab a nivel de sintaxis muy alta.
  3. Scilab: Este es un software francés que parece que tiene buena fama. Aunque tiene la pega de que su sintaxis es bastante diferente a la de MatLab, cuanta con la ventaja frente a otras alternativas libres de tener un muy buen entorno gráfico. Tampoco lo he usado nunca, pero lo pongo por si alguien tiene interés.
Y, para finalizar, un poco de autobombo. Hace unas semanas escribí un paquete para Octave que facilita el trabajo con proyecciones cartográficas mediante la biblioteca PROJ.4 (la cual merecería una charla aparte). Por si a alguien le interesa, se puede encontrar OctPROJ (que así se llama la criatura) en la web de Octave-Forge.

Sobre este tema se podría escribir mucho más, pero no tengo ganas.