best counter
GNU/Linux. MuyLinux

GNU Parallel: computación paralela a golpe de comando

18/10/2010| por | 7 comentarios

Los modernos microprocesadores multi-core con 2,3,4,6,8 y hasta 12 núcleos por procesador son ya el presente de la tecnología de fabricantes como AMD e Intel: ambos nos proponen micros muy potentes a la hora de procesar tareas paralelas, pero la mayoría de las aplicaciones lamentablemente no pueden sacar provecho de esa ingente cantidad de potencia de proceso.

GNUParallel 500x286 GNU Parallel: computación paralela a golpe de comando

De hecho, la mayoría de las aplicaciones no pueden ser paralelizadas fácilmente, y este es uno de los principales problemas a solucionar por parte de los desarrolladores de software actuales, que siguen pensando en procesadores monocore -o dual-core, como mucho- y que hacen que desaprovechemos gran parte de los recursos de nuestras máquinas.

Sin embargo en GNU/Linux existe una utilidad especialmente diseñada para sacar provecho de una red de máquinas conectadas, tanto localmente como a través de cualquier tecnología de red.

Se trata de GNU Parallel, una herramienta de la interfaz de comandos que nos permite “ejecutar trabajos en paralelo de forma local o usando ordenadores remotos. Un trabajo típico es un comando simple o un pequeño script que tiene que ser ejecutado“.

En el vídeo que os mostramos a continuación se pueden comprobar las ventajas de esta herramienta, que puede ser utilizada para tareas muy simples -como la rápida descompresión de ficheros- pero también para tareas más intensivas en el uso del procesador como el procesamiento de imágenes, vídeos, o la compilación (uno de los apartados más interesantes) de todo tipo de código aprovechando el número de procesadores disponibles.

You need to a flashplayer enabled browser to view this YouTube video

En la página oficial de GNU Parallel encontraréis toda la información y la sintaxis de uso de una aplicación que demuestra una vez más la versatilidad de Linux y el Open Source, que se pueden adaptar de forma notable a cualquier escenario.

Related posts:

  1. Youtube-dl: descarga de vídeos a golpe de comando
  2. Encuentra lo que buscas con el comando find
  3. ¿Qué comando Linux desearías haber conocido hace 10 años?
  4. Ubuntu, a por Mac OS X… a golpe de talonario
  5. Gestión remota con el comando screen
Categorías: GNU/Linux, Open Source, Trucos

Hay 7 comentarios

  1. 1
    Vagabundo dice:

    Suena interesante para el caso de emuladores como Dolphin, que ya tiene soporte de doble nucleo incluido, pero que nunca supe si en mi phenom x3 era mejor dejarlo como esta u optimizarlo a 2 nucleos, que pasaria con el tercero? no trabajaria? seria mejor dejarlo chambear como si fuera un nucleo?.

  2. 2
    sancochito dice:

    ¿y qué pasa con mi recién estrenado phenom II x4 955? al final ni podré instalarlo :_(

  3. 3
    juan dice:

    Interesante noticia, a probarlo :)

  4. 4
    redtitle dice:

    xD Madre mia…para cuando aprenda a programar a un nivel medio-alto la tecnología no tendrá nada que ver lo aprendido…

    ¿Alguien me podria indicar que se puede tardar en aprender a programar medianamente bien y dedicarse a ello?

    Muchas gracias a cualquier respuesta, un saludo

    • 5
      Ankh dice:

      Las bases de la programación no han cambiando en mucho tiempo. De hecho cosas que suenan a moderno como el paradigma de orientación a objetos llevan al menos 40 años. Todas las tecnologías de desarrollo modernas no son mas que layers, abstracciones que facilitan ciertas tareas. Para alguien que sabe las bases, estos cosas no son complicadas. Yo aprendí a programar en C pelado, y después de eso tuve que usar java, apex, php, .net, y la madre en coche, y aprender una de esas tecnologías no me llevaba mas de una semana. Obviamente no me aprendí todo el jdk, o el .net completo, sino aquello que sabia que iba a necesitar; si luego precisaba algo mas, /javase/6/docs/, msdn.microsoft.com o php.net y ya.
      Así que creéme cuando te digo que es muy útil e importante saber las bases de la programación. Mira que hay mucho chanta suelto programando en java y .net que no tiene idea de como funciona realmente el sistema que esta escribiendo.
      Saludos.

      • 6
        redtitle dice:

        Gracias compañero, actualmente me encuentro cursando sistemas de telecomunicación e informáticos y por ende, estudiando desde las puertas lógicas hasta C pasando por ensamblador y creo que tienes toda la razón.

        A medida que voy comprendiendo las bases, entiendo mejor conceptos mas complejos.

        Pero he de reconocer que en un principio asusta ver a que velocidad avanza la tecnología y me surgen dudas sobre que es lo que realmente debo tratar para optimizar al máximo el tiempo.

        un saludo

        • 7
          yonose dice:

          Hola de nuevo, compañero redtitle

          Creo que ya bien puedes ir de lleno con los lenguajes de descripción de hardware!!
          A nosotros los electrónicos nos concierne más el software de lo que creemos. Te recomiendo mucho que revises estos temas:

          Todo lo que tenga que ver con formas de programas los lenguajes de programación es primordial!! por ejemplo:

          1) systemC, que es una implementación de C++, para tener una concurrencia más compatible con VHDL, Verilog

          2) procura usar software de análisis de cobertura para determinar la concurrencia de tu código, por ejemplo, coverage analizer (que viene con Fedora Electronic Lab), MyHDL, Verilator, etc etc…

          3)Modelador de maquinas finitas, o sea, hacer algo similar a un UML, pero orientado hacia la EDD (Event-Driven-Development), modelar maquinas de estado finito, para poder traducir facilmente a VHDL, Verilog… puedes conseguir FSMDesigner, es un software sencillo, cunque la heurística deja qué desear, te puede dar una idea. FSMDesigner está para UNIX, sólo construir con ./configure + flags; make; make install.

          4)Si necesitas trabajar algo de sistemas embedidos con Glibc herramientas como bitbake, buildroot, etc etc no dudes en consultarme…. si sabes o conoces a alguien para manejar sistemas embedidos con uClibc, sería de mucha ayuda para mí.

          5) .NET es un hermoso jardín enjaulado que no deseo usar… creo que se podría hacer lo mismo usando eclipse+aptana studio (ruby), se puede ser libre y hacer maravillas EMHO… es más eficiente para metodos como el TDD (Test-Driven-Development) y paradigmas como el DRY (Don’t Repeat Yourself)

          Espero que esta tardía información sea de ayuda. también te recomiendo que revises protocolos muy usados, por ejemplo, el NRZ (No Return to Zero) se usa acutalmente en la interfaz USB, en todas las especificaciones 1,1, 2.0, 3.0 … HART, Wifi (Wimax) y pues considero el bluetooth agrupado en esa categoría, es algo similar… solo es buscar las hojas de especificaciones y tendrás bastante trabajo :P :P

          P.D: No quiero (pero me toca) esperar para conseguir el nuevo bache de Arduinos que salieron!! y confieso que ODIO mi universidad y he aprendido más siendo autodidacta que por la universidad!!

          Saludos!!!

Escribe tu comentario