Aprovechar al máximo la CPU con parallel

Utilizaremos el programa parallel para lanzar tantos procesos en paralelos como hilos tenga nuestra CPU.

Instalación

Para instalar parallel de los repositorios en Ubuntu:

sudo apt-get install parallel

Para el ejemplo necesitaremos el programa fastq-dump:

sudo apt-get install sra-toolkit

Utilización

El siguiente ejemplo muestra como convertir a FASTQ en paralelo tantos ficheros SRA como hilos tenga la CPU, quedando el resto de ficheros en cola. Cuando una conversión termina queda un hilo libre que es ocupado por otra conversión, siempre que haya ficheros en cola. De esta forma la cola va avanzando.

ls *.sra | parallel -j+0 fastq-dump

Si añadimos --eta y --progress podremos estimar el tiempo restante y seguir el avance de la cola, respectivamente.

ls *.sra | parallel -j+0 --eta --progress fastq-dump

Si queremos utilizar un número de hilos diferente, sustituimos +0 por dicho número. Por ejemplo,

ls *.sra | parallel -j4 --eta --progress fastq-dump

Utilizará cuatro hilos.

También podemos añadir parámetros al programa que se va a paralelizar. Por ejemplo, al programa fastq-dump podemos añadirle la opción --split-files si estamos trabajando con paired-end reads:

ls *.sra | parallel -j+0 --eta --progress fastq-dump --split-files