Arreglar error aritmético en versión distribuida

Estoy invirtiendo una matriz a través de una factorización de Cholesky, en un entorno distribuido, como se discutióaquí. Mi código funciona bien, pero para probar que mi proyecto distribuido produce resultados correctos, tuve que compararlo con la versión en serie. ¡Los resultados no son exactamente los mismos!

Por ejemplo, las últimas cinco celdas de la matriz de resultados son:

serial gives:
-250207683.634793 -1353198687.861288 2816966067.598196 -144344843844.616425 323890119928.788757
distributed gives:
-250207683.634692 -1353198687.861386 2816966067.598891 -144344843844.617096 323890119928.788757

Había publicado en elForo de Intel sobre eso, pero la respuesta que obtuve fue sobre obtener los mismos resultados en todas las ejecuciones que haré con la versión distribuida, algo que ya tenía. Parecen (en otro hilo) ser incapaces de responder a esto:

¿Cómo obtener los mismos resultados, entre la ejecución en serie y distribuida? es posible? Esto daría lugar a corregir el error aritmético.

He intentado configurar esto:mkl_cbwr_set(MKL_CBWR_AVX); y usandomkl_malloc(), para alinear la memoria, pero nada cambió. ¡Obtendré los mismos resultados, solo en el caso de que genere un proceso para la versión distribuida (que lo hará casi en serie)!

Las rutinas distribuidas a las que llamo:pdpotrf () ypdpotri ().

Las rutinas en serie a las que llamo:dpotrf () ydpotri ().

Respuestas a la pregunta(2)

Su respuesta a la pregunta