Predecir tiempos de ejecución para álgebra lineal densa


9

Me gustaría predecir tiempos de ejecución para operaciones de álgebra lineal densa en una arquitectura específica utilizando una biblioteca específica. Me gustaría aprender un modelo que se aproxime a la función.

Fopags:: ::tamaños de entrada runtime

para operaciones como multiplicación de matrices, suma de elementos, resolución triangular, etc.

Sospecho que estos tiempos de ejecución son en su mayoría predecibles debido a la regularidad de las operaciones una vez que superas los tamaños de problemas que se ajustan cómodamente en la memoria caché.

Preguntas:

  1. ¿Es realista esta suposición? ¿Es probable que la función de tiempo de ejecución sea casi determinista?
  2. ¿Puedo suponer que esta función será polinómica en los tamaños de las entradas? (es decir, espero que la matriz densa se multiplique para parecerse a para y algún coeficiente escalar)αnorte×k×metroUNAnortek×sikmetroα
  3. ¿Hay trabajo preexistente sobre esto en alguna parte?
  4. Mi plan actual es hacer una regresión de mínimos cuadrados con un regularizador . ¿Cualquier otra sugerencia?L1

Editar: para ser claros, estoy buscando tiempos de ejecución, no FLOP o cualquier otra métrica de rendimiento común. Estoy dispuesto a restringirme a una arquitectura en particular.

Respuestas:


10

Recientemente he estado trabajando exactamente en este tema. Puede echar un vistazo a nuestro artículo: http://arxiv.org/abs/1209.2364 .

¿Por qué le interesa la predicción en tiempo de ejecución de las rutinas de álgebra lineal? ¿Tiene la intención de utilizar el modelo para un determinado propósito?


Gracias por el enlace. Le daré un vistazo. Estoy interesado en esto porque sospecho la misma razón que tú. Selección y programación de algoritmos automatizados para expresiones matriciales. Muchos problemas que de otro modo serían imposibles deberían ser posibles en este dominio altamente regular y predecible.
MRocklin

6

Hay mucho trabajo preexistente. La mayoría de los desarrolladores de bibliotecas de álgebra lineal publican resultados de rendimiento en términos de rendimiento de punto flotante que se pueden convertir en tiempos de ejecución.

Buscar en Google "Rendimiento DGEMM", por ejemplo, produce lo siguiente: http://math-atlas.sourceforge.net/timing/3_5_10/index.html .

En general, puede esperar que las respuestas no sean fluidas. Habrá saltos o picos cerca de ciertos tamaños de problemas (que se relacionan con los tamaños de caché). También debe esperar mesetas en las tasas y, por lo tanto, regiones lineales para una amplia gama de tamaños de problemas. No espero que los ajustes polinómicos sean muy útiles.

Dado un esfuerzo de evaluación comparativa de base amplia, podría ser más fácil tabular los resultados e interpolarlos según sea necesario. ¿Cual es tu meta?


1
DGEMMnorte3

Convertir flops en tiempos de ejecución es, en mi experiencia, difícil. Realmente solo me importan los tiempos de ejecución en mi caso. Estoy probando la viabilidad de la programación estática.
MRocklin

En mi experiencia, los picos / mesetas solo ocurren para problemas pequeños. Una vez que salgas del caché, las cosas son bastante suaves. Estoy de acuerdo en que agregar funciones por partes probablemente mejoraría el ajuste.
MRocklin
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.