Tarea2
Tarea2
Requisitos de finalización
Parte a)
Evalúe el tiempo de ejecución de las tres variantes para matrices nxn, variando n según las capacidades de su plataforma de cómputo (por ejemplo entre 1 y 256 con paso 16).
Grafique los resultados y grafique también la curva correspondiente a t1*(n^3) donde n es la dimensión de la matriz en cada caso y t1 es el tiempo correspondiente a n=1.
Analice los resultados. ¿Por qué son distintos los tiempos entre una variante y otra? ¿cómo explica la relación entre la curva t1*(n^3) y los resultados experimentales? ¿observa alguna relación entre las características de su plataforma de ejecución y los resultados obtenidos?
i) Resuelva para cada matriz A_i de las descargadas un sistema de ecuaciones A_i x = b, utilizando la factorización de cholesky y el solver directo que tenga a disposición en el lenguaje de programación elegido (en Octave/Matlab se usa el operador "\").
ii) Resuelva los mismos sistemas pero aplicando antes el ordenamiento AMD para reducir el fill-in de la factorización.
iii) Resuelva los mismos sistemas de ecuaciones utilizando el método del gradiente conjugado sin utilizar un precondicionador (pcg en Matlab/Octave).
iv) Resuelva los mismos sistemas de ecuaciones utilizando el método del gradiente conjugado precondicionado con una factorización de cholesky incompleta sin fill-in ( ichol ).
v) Compare el tiempo de ejecución de las 4 soluciones. Para el solver directo estudie el fill-in generado en la factorización de cholesky con y sin ordenamiento, y su influencia en el tiempo de ejecución . Para el solver iterativo estudie el trade-off entre la reducción de la cantidad de iteraciones lograda al utilizar el precondicionador y el costo de aplicarlo. En base a los resultados obtenidos discuta en qué casos resulta conveniente cada solución.
Cierre: miércoles, 15 de noviembre de 2023, 23:59
Parte a)
Implemente en Matlab/Octave/Python u otro lenguaje tres variantes de la versión estándar de la multiplicación de matrices.
i) utilizando la multiplicación de matrices de la herramienta
ii) multiplicando vectores C(i,j) = A(i,:)*B(:,j) (o usando .dot en Python)
iii) multiplicando coeficientes
iii) multiplicando coeficientes
Grafique los resultados y grafique también la curva correspondiente a t1*(n^3) donde n es la dimensión de la matriz en cada caso y t1 es el tiempo correspondiente a n=1.
Analice los resultados. ¿Por qué son distintos los tiempos entre una variante y otra? ¿cómo explica la relación entre la curva t1*(n^3) y los resultados experimentales? ¿observa alguna relación entre las características de su plataforma de ejecución y los resultados obtenidos?
Parte b)
Descargue entre 5 y 10 matrices simétricas de la colección SuiteSparse (https://sparse.tamu.edu/) que sean de características variadas (dimensión, cantidad de elementos distintos de 0, densidad, estructura, etc.).i) Resuelva para cada matriz A_i de las descargadas un sistema de ecuaciones A_i x = b, utilizando la factorización de cholesky y el solver directo que tenga a disposición en el lenguaje de programación elegido (en Octave/Matlab se usa el operador "\").
ii) Resuelva los mismos sistemas pero aplicando antes el ordenamiento AMD para reducir el fill-in de la factorización.
iii) Resuelva los mismos sistemas de ecuaciones utilizando el método del gradiente conjugado sin utilizar un precondicionador (pcg en Matlab/Octave).
iv) Resuelva los mismos sistemas de ecuaciones utilizando el método del gradiente conjugado precondicionado con una factorización de cholesky incompleta sin fill-in ( ichol ).
v) Compare el tiempo de ejecución de las 4 soluciones. Para el solver directo estudie el fill-in generado en la factorización de cholesky con y sin ordenamiento, y su influencia en el tiempo de ejecución . Para el solver iterativo estudie el trade-off entre la reducción de la cantidad de iteraciones lograda al utilizar el precondicionador y el costo de aplicarlo. En base a los resultados obtenidos discuta en qué casos resulta conveniente cada solución.