Forzando Brutalmente MD5 - parte 3 - multicore
¿Venís de leer la intro, la parte 1 y la parte 2?
El tema
Hace años, tantos que ni es argumento de venta, tenemos computadoras multicore, esto es, que tienen varias CPUs.
Dos maneras de ejecutar simultáneamente tareas es por medio de disparar programas a la vez (forks) o a un programa pedirle que ejecute una función en un hilo (thread) distinto.
Algunas diferencias son que los forks se comunican mediante llamadas interprocesos, red, memoria compartida, archivos y los threads, como son parte de un mismo programa, por variables compartidas.
En este caso, como no hay comunicación, da lo mismo y de hecho la performance es la misma.
Se puede combinar con AVX2 y aumentar mucho el rendimiento.
Código
- https://github.com/cpantel/Forzando-Brutalmente-MD5/tree/master/v4_threads
- https://github.com/cpantel/Forzando-Brutalmente-MD5/tree/master/v4_threads_32cores
- https://github.com/cpantel/Forzando-Brutalmente-MD5/tree/master/v4_threads_avx2
- https://github.com/cpantel/Forzando-Brutalmente-MD5/tree/master/v5_fork