velocidad por plano para masa inclinado fuerza friccion desliza con como calcular bloque angulo aceleracion performance cuda gpgpu metrics

performance - por - ¿Cómo calcular la aceleración de un programa de GPU?



un bloque de masa m se desliza por un plano inclinado (2)

Al medir la aceleración, en la mayoría de los casos, debe escribir completamente desde cero los algoritmos serie y paralelo. No hay ninguna razón particular por la que el mejor algoritmo paralelo con P = 1 tenga algo en común con el algoritmo serial óptimo. En la mayoría de los casos, el algoritmo paralelo tendrá que hacer un montón de trabajo adicional y es bastante ineficiente en comparación con un algoritmo serial óptimo.

Motivación: se me ha asignado la tarea de medir la eficiencia métrica y paralela de Karp-Flatt de mi código CUDA C, que requiere el cálculo de la aceleración. En particular, necesito trazar todas estas métricas en función del número de procesadores p .

Definición: Speedup refiere a cuánto es más rápido un algoritmo paralelo que un algoritmo secuencial correspondiente, y se define como:

Problema: He implementado mi algoritmo en CUDA C y lo he cronometrado para obtener Tp . Sin embargo, sigue habiendo algunos problemas en la determinación de Sp :

  • ¿Cómo observar T1 sin reescribir completamente mi código desde cero?
    • ¿Puedo ejecutar el código CUDA en serie?
  • ¿Qué es p cuando ejecuto diferentes núcleos con diferentes números de hilos?
    • ¿Se refiere a no. de hilos o no. de procesadores utilizados en tiempo de ejecución?
    • Dado que ambas cantidades también variarán a lo largo del tiempo de ejecución, ¿es el máximo o el promedio utilizado?
    • ¿Cómo puedo restringir mi código para que se ejecute en un subconjunto de procesadores o con menos subprocesos?

Muchas gracias.


Para obtener una medida razonable de aceleración, necesita el programa secuencial real . Si no tiene una, debe escribir la mejor versión secuencial que pueda, porque no es razonable comparar un código paralelo altamente sintonizado con una implementación en serie de basura.

Tampoco puede comparar razonablemente una versión de 1 procesador de su programa paralelo con la versión del procesador N para obtener una verdadera medida de aceleración. Dicha comparación le indica que la aceleración de pasar de P = 1 a P = N para el mismo programa, pero el punto de las curvas de aceleración es mostrar por qué construir un programa paralelo (que generalmente es más difícil y requiere hardware más complicado [GPU] y Las herramientas [OpenCL] tienen sentido en comparación con la codificación de la mejor versión secuencial utilizando herramientas y hardware más ampliamente disponibles.

En otras palabras, no hacer trampa.