摘要:En este trabajo se presenta una mejora en la performance de un programa paralelo de fisicoquímica hidrodinámica computacional en un cluster Beowulf heterogéneo bajo el sistema operativo Linux y la biblioteca de pasaje de mensajes (MPI ). El programa paralelo resuelve las ecuaciones de Nernst-Planck para el transporte iónico, la ecuación de Poisson para el campo eléctrico y las ecuaciones de Navier-Stokes para el fluido en el espacio de tres dimensiones y el tiempo, mediante la utilización de un esquema de diferencias finitas fuertemente implícito, métodos de relajación standard y técnicas de descomposición por subdominios. Las mejoras en el código paralelo se obtuvieron mediante: i) balance de carga semi-dinámico, que no requiere un conocimiento a priori de las características del cluster, ii) reordenamiento del proceso iterativo, con el fin de soportar el solapamiento del tiempo de cómputo con el de comunicación, y iii) uso de directivas de comunicación no-bloqueantes, diferentes tamaños de buffer y diversas implementaciones código-abierto de MPI . Por medio de estas estrategias, se ha logrado una mejora de aproximadamente un 40% en relación a la versión paralela sin optimizar. En algunos casos, se alcanzó una escalabilidad con eficiencia cercana a la unidad. La versión paralela del programa ha sido utilizada en el estudio de problemas complejos tridimensionales en escalas que no se habían logrado alcanzar con versiones anteriores.
其他摘要:En este trabajo se presenta una mejora en la performance de un programa paralelo de fisicoquímica hidrodinámica computacional en un cluster Beowulf heterogéneo bajo el sistema operativo Linux y la biblioteca de pasaje de mensajes (MPI ). El programa paralelo resuelve las ecuaciones de Nernst-Planck para el transporte iónico, la ecuación de Poisson para el campo eléctrico y las ecuaciones de Navier-Stokes para el fluido en el espacio de tres dimensiones y el tiempo, mediante la utilización de un esquema de diferencias finitas fuertemente implícito, métodos de relajación standard y técnicas de descomposición por subdominios. Las mejoras en el código paralelo se obtuvieron mediante: i) balance de carga semi-dinámico, que no requiere un conocimiento a priori de las características del cluster, ii) reordenamiento del proceso iterativo, con el fin de soportar el solapamiento del tiempo de cómputo con el de comunicación, y iii) uso de directivas de comunicación no-bloqueantes, diferentes tamaños de buffer y diversas implementaciones código-abierto de MPI . Por medio de estas estrategias, se ha logrado una mejora de aproximadamente un 40% en relación a la versión paralela sin optimizar. En algunos casos, se alcanzó una escalabilidad con eficiencia cercana a la unidad. La versión paralela del programa ha sido utilizada en el estudio de problemas complejos tridimensionales en escalas que no se habían logrado alcanzar con versiones anteriores.