Pensemos en paralelo

Estimados compañeros de profesión,

Hubo una época en la que los 100 metros planos “informáticos” se ganaban a punta de MHz, ahora todo depende de la cantidad de corredores que tengamos…

Ya lo decíamos en la Facultad hace unos 7 u 8 años, físicamente hay límites a la velocidad. Los multiprocesadores, y ahora los multinúcleos, han abierto una puerta a un salón de baile mucho más amplio, lo malo es que casi todos siguen en el lobby.

No quiero detenerme en un análisis largo del tema de la programación multihilo. Simplemente quiero dejar mi queja, unida a las de la ACM y tantos otros, de que la enseñanza de la programación debe dar un giro radical, pero no sólo en el yaw, sino también en el pitch, y salirse del plano…

¡Señores, que nuestras aplicaciones deben ser multihilos, concurrentes, paralelas, pensadas para hacer varias cosas al mismo tiempo!

¡Colegas, desempolvemos los threads, los mutex, CUDA, OpenCL, OpenMP, MPI, Grand Central Dispatch… o lo que tengamos a mano!

Tenemos un mundo lleno de unidades de cómputo desaprovechadas, ordenadores caseros con 4 núcleos dedicando un 95% de su tiempo al proceso idle().

Si no lo hacemos por eficiencia, hagámoslo por orgullo. Así como hoy en día cualquiera sabe programar, pero sólo los elegidos saben diseñar software; hoy cualquiera es serial, y es el momento de que sólo los elegidos sean paralelos. Tenemos la formación, tenemos “the gift”, tenemos núcleos, tenemos hilos, tenemos de el deber de hacer de éste un mundo en paralelo.

Con nuestros mayores ánimos y afectuosos saludos,

{ blogary_0, blogary_1, …, blogary_i, …, blogary_n }

Update: ejemplo de cómo si hacer un programa multicore; ya sabemos que una imagen vale más que mil palabras, pero en este caso vale más que ocho mil: así estaba la ocupación de los 8 núcleos virtuales de mi i7 (4 núcleos + HT) durante la conversión de un playlist de unas 50 canciones, de MP3 a ACC, usando iTunes (maravillas del Grand Central Dispatch de Snow Leopard).