La dependencia de datos es un tema clave en la computación paralela.
Considere [math] x = \ frac {(a + b)} {c} [/ math] bajo las reglas de precedencia: debe hacer la suma antes de la división, y todo es serial, es decir, no hay oportunidad para el paralelismo.
Sin embargo, [math] x = \ frac {(a + b)} {(c + d)} [/ math] puede ser algo paralelo en el sentido de que, en principio, puede realizar ambas adiciones al mismo tiempo desde las variables de datos [math] a, b, c, d [/ math] son independientes (no dependen entre sí) antes de realizar la división para obtener el resultado. Sin embargo, la división tiene que esperar a que se completen ambas adiciones, ya que depende de los datos de los resultados de esas adiciones.
- ¿Cuáles son algunas ideas o proyectos en Machine Learning o análisis de big data en un hackathon?
- Cómo encontrar un candidato apasionado con experiencia de 0 a 1 año para reclutar y capacitarse en ciencia de datos
- ¿Qué tan difícil es ser admitido en el campo de entrenamiento de ciencia de datos de Insight?
- ¿A qué empresa debo postularme para un trabajo si soy ciudadano de la UE y quiero trabajar en los Estados Unidos?
- Cómo saber si estoy listo para una entrevista de ciencia de datos
El análisis de algoritmos y software para la dependencia de datos es una técnica clave para descubrir oportunidades para la computación paralela.
¿Por qué te preocupas? La Ley de Moore nos ha dado una vergüenza de riquezas en el área de chips de silicio (podemos meter cada vez más circuitos en un área determinada de silicio), y el efecto principal durante la última década o tres ha sido cada vez más elementos de cómputo en varias partes de una computadora sistema:
- Unidades lógicas aritméticas múltiples (ALU, p. ej. sumadores, sustractores, multiplicadores, divisores, desplazadores de bits) en los procesadores, incluso hasta el punto de hacer que Hyper-threading (falsifique efectivamente dos CPU encima de una para tratar de mantener todas las ALU ocupadas) efectivas.
- Instrucción única, motores de cómputo de datos múltiples (SIMD) en todas las CPU modernas (por ejemplo, AltiVec, MMX, SSE (n), AVX) para calcular una operación dada sobre una matriz completa o matriz de datos en una sola instrucción.
- múltiples “núcleos” de procesador por paquete de chips de silicio (Procesador de múltiples núcleos)
- muchos ( miles de) elementos de procesamiento en paralelo en unidades de procesamiento de gráficos (GPU) porque Computer Graphics también es un espacio de problema SIMD, pero se han vuelto tan poderosos que ahora también estamos haciendo cálculos de GPU de uso general con ellos.
y así.
Sin embargo, todos esos pequeños elementos de computación no sirven de nada a menos que sea posible eliminar las dependencias de datos y el paralelismo en los problemas de computación (programas) para poner tantos de ellos a trabajar simultáneamente como sea posible para un determinado algoritmo y conjunto de datos.
Entonces, al más alto nivel, el análisis de dependencia de datos es una herramienta para el rendimiento del software.