Algoritmo Gauss-Jordan paralelo

Todo cuanto tiene que ver con la obtención, almacenamiento y proceso de la información digital, sus aplicaciones y el software y hardware utilizado.
Mensaje
Autor
Avatar de Usuario
fusion
Mensajes: 4573
Registrado: Lun Feb 20, 2006 1:12 pm
País: Madrid
Ciudad: Alcobendas
Ubicación: Madrid

Re: Algoritmo Gauss-Jordan paralelo

#11 Mensaje por fusion »

Ese problema lo tuve con un simulador electrostático, hay una manera de invertir matrices que reduce el tiempo un 40%, pero no más pues los resultados de un kernel los tiene que hacer otro y no funciona. En mi caso invertía hasta 10mil x 10mil, el problema de invertir matrices grandes (que se lo digan a Ansys) es que a veces un término es "casi 0" y no sabes si considerarlo 0 o no, combinado además de si hay líneas que son proporcionales a las otras el determinante es 0 y no se puede invertir.
Notra: no usar floats, para no encontrarse overflows y suma de elementos inferiores al número de dígitos (en parte relacionado a lo que dice Baldo)

Yo al menos no logro que vaya más rápido, claro que yo uso diagonalizar...
a menos que disponga de una GPU con 10.000 núcleos es imposible que se ejecuten 10.000 kernel1 simultáneamente
Sí, empleando una tarjeta gráfica, pero es muy muy difícil y no creo merezca la pena

Avatar de Usuario
Homer
Mensajes: 2151
Registrado: Dom Abr 30, 2006 2:07 pm
País: España
Ciudad: Sabadell
Contactar:

Re: Algoritmo Gauss-Jordan paralelo

#12 Mensaje por Homer »

¡No me jodas fusión! el primer requisito para que 10.000 núcleos funcionen simultáneamente es que existan.

No entiendo a qué os referís exactamente con los métodos de invertir o diagonalizar, pero sospecho que no son más que variantes del mismo algoritmo de Gauss.

Estoy absolutamente convencido de que es posible un algoritmo que crezca con la segunda potencia del rango, pero la intuición y el rigor matemático no se llevan muy bien.

Avatar de Usuario
Homer
Mensajes: 2151
Registrado: Dom Abr 30, 2006 2:07 pm
País: España
Ciudad: Sabadell
Contactar:

Re: Algoritmo Gauss-Jordan paralelo

#13 Mensaje por Homer »

Bueno, se me ha ido un poco la mano, absolutamente convencido solo estoy de que sí es posible una solución en tiempo proporcional a rango*rango*rango/núcleos. Que es precisamente el planteamiento inicial de mi consulta.

fusion, seguro que esto te interesa: “Estos problemas se obtienen cuando el elemento pivotal es cercano a cero en vez de ser exactamente igual, por lo que si la magnitud del elemento pivotal es pequeño comparado con los otros elementos, entonces se introducen errores de redondeo. Por lo tanto, antes de normalizar cada renglón, es ventajoso determinar el coeficiente mayor disponible. Entonces se pueden intercambiar los renglones de tal forma que el elemento mayor sea el pivotal. A este método se le conoce con el nombre de pivoteo parcial.”

Supongo que el algoritmo de “pivoteo parcial” también se podrá paralelizar

Avatar de Usuario
fusion
Mensajes: 4573
Registrado: Lun Feb 20, 2006 1:12 pm
País: Madrid
Ciudad: Alcobendas
Ubicación: Madrid

Re: Algoritmo Gauss-Jordan paralelo

#14 Mensaje por fusion »

¡No me jodas fusión! el primer requisito para que 10.000 núcleos funcionen simultáneamente es que existan.
La gráfica que usé tenía 3500 kernels y me costó 350 euros (hace 4 años), en el ordenador cabían dos, pero seguro los hay que se puedan meter más.
Eso sí, si usas double en vez de float tienes la mitad de núcleos
No se me ocurrió elegir el elemento pivotal mayor ¿o será mejor el medio?, en cualquier caso me parece una gran idea :)

Avatar de Usuario
Homer
Mensajes: 2151
Registrado: Dom Abr 30, 2006 2:07 pm
País: España
Ciudad: Sabadell
Contactar:

Re: Algoritmo Gauss-Jordan paralelo

#15 Mensaje por Homer »

Con el algoritmo G-J, calcular la inversa y luego las soluciones tarda ocho veces más que calcular directamente las soluciones. Que lo sepáis.

Responder

¿Quién está conectado?

Usuarios navegando por este Foro: Bing [Bot] y 3 invitados