1Introducción
1.1.1 Swift
1.1.2 Mercury
2 Caso de Estudio
2.1 Motivación
2.1.1 Hardware Paralelo: CPU
3Análisis de Código
3.1 Análisis del integrador Mercury
3.1.1 Elementos del paquete Mercury
3.1.2 Configuración inicial
3.1.3 Puntos de optimización
4 Optimizaciones Secuenciales Realizadas
4.1 Eliminación de entrada y salida redundante
4.2 Utilización de funciones intrínsecas
4.3 Conversión de una función llamada múltiples veces a forma “en línea” (inline)
4.4 Reducción de operaciones redundantes y simplificación de código
5 Optimizaciones Paralelas Realizadas
6 Resultados experimentales
6.1 Hardware utilizado
6.2 Evaluación del desempeño: Optimización del compilador -O2
6.2.1 Evaluación del caso de cuerpos pequeños: Opción –O2
6.2.2 Evaluación del caso de cuerpos grandes: Opción –O2
6.3 Evaluación del desempeño: Reducción de Entrada-Salida
6.3.1 Caso de cuerpos pequeños: Reducción de entrada-salida
6.3.2 Caso de cuerpos grandes: Reducción de entrada-salida
6.4 Evaluación del desempeño: Optimización secuencial “en línea” (inline)
6.4.1 Caso de cuerpos pequeños: optimización “en línea”
6.4.2 Caso de cuerpos grandes: optimización “en línea”
6.5 Evaluación del desempeño: Eliminación y reordenamiento de operaciones en MFO_DRCT
6.5.1 Caso de cuerpos grandes: Eliminación y reordenamiento de operaciones
6.6 Evaluación del desempeño: Optimización paralela
6.6.1 Caso de cuerpos grandes: Optimización paralela
6.7 Resultados de tiempos y coeficientes de mejora agrupados por caso
6.7.1 Resultados relevantes para el caso de cuerpos pequeños
6.7.2 Resultados relevantes para el caso de cuerpos grandes
7 Conclusiones
8 Referencias bibliográficas