Digamos que tiene el siguiente algoritmo de fuerza bruta (muy inútil):
#include
usando el espacio de nombres estándar;
- ¿Cuántos números debajo de [matemática] 10 ^ n [/ matemática] hay cuyos dígitos suman [matemática] [/ matemática]?
- Cómo hacer que un algoritmo se visualice como visualgo.net
- ¿Cómo debo comenzar con las estructuras de datos y los conceptos de algoritmos suponiendo que sé cero?
- ¿Cuál es la diferencia entre la implementación de HPLC y FTIR?
- ¿Algunos algoritmos de ML son más vulnerables a los conjuntos de entrenamiento desequilibrados que otros? ¿Por qué?
int main ()
{
para (int i = 0; i <10000; i ++)
{
si ((i% 123) == 45)
cout << i << endl;
}
devuelve 0;
}
Todo lo que hace es calcular qué números entre 0 y 10 000 divididos por 123 tienen un resto de 45 (probando cada posibilidad, que es la fuerza bruta).
Como probablemente pueda ver, este algoritmo requiere 10 000 iteraciones en un hilo (lo que llevará un tiempo ‘largo’). Ahora, si tuviéramos que implementar este algoritmo en paralelo (por ejemplo, en una tarjeta de video CUDA). Podríamos comenzar 10 000 hilos paralelos y terminar todo el algoritmo en una iteración. Esto hace que el algoritmo se ejecute ~ 10 000 veces más rápido que uno anterior.
El paralelismo no mejora el algoritmo, solo ejecuta partes de él al mismo tiempo, haciendo que se ejecute más rápido.