-
Notifications
You must be signed in to change notification settings - Fork 0
/
resultados.tex
378 lines (272 loc) · 21.7 KB
/
resultados.tex
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
\chapter{Resultados}
En este capítulo se presentan algunos de los resultados obtenidos utilizando las distintas implementaciones.
Las evaluaciones realizadas y los resultados presentados, se encuentran divididos en dos secciones:
En primer lugar se evalúa el tiempo de ejecución de las distintas implementaciones analizando la optimización lograda, lo cual dará una idea de las posibles ventajas que proveen en cuanto a eficiencia,
intentando explicar, además, cuáles son los casos en los cuales se pueden aprovechar estas.
Todas las pruebas correspondientes a los tiempos de ejecución se realizan midiendo exclusivamente el tiempo de la etapa de cálculo de fuerzas, sobre la cual se plantearon las modificaciones.
Para todas las mediciones se utilizó el reloj est\'andar de alta precisi\'on para Linux (\texttt{clock\_gettime}~\cite{LinuxDocumentation}).
En segundo lugar se analizan distintas fuentes de error en los resultados, las cuales se han mencionado durante el desarrollo de este trabajo a medida que se presentaban las aproximaciones utilizadas en los cálculos.
La calidad numérica se analiza para cálculos individuales y para ejecuciones prolongadas siguiendo el esquema de dinámica molecular.
Se estudian también los efectos de distintas variables en las implementaciones que afectan esta propiedad.
Los sistemas utilizados para las evaluaciones se detallan en el apéndice \ref{sistemas}.
Por otro lado, en la primera sección de este capítulo se describen algunas consideraciones generales acerca de los sistemas y parámetros de ejecución que se deben tener en cuenta para hacer una correcta interpretación de los resultados.
% dad varios aspectos de los sistemas de prueba son relevantes para hacer una correcto análisis de los resultados,
% El equipamiento utilizado para las pruebas se detallan en el apéndice \ref{equipamiento}.
Los detalles del hardware utilizado se encuentran en el apéndice \ref{equipamiento}.
% PONER ALGO MAS DE QUE ASPECTOS SON RELEVANTES
% En el apéndice \ref{sistemas} se detalla la forma en que los sistemas de partículas fueron construidos y las propiedades de estos.
%
% Claramente, el factor mas importante del sistema que afectará a la ejecución es el número total de partículas de éste. Los tamaños de sistemas utilizados fueron tres, y para
%
% Además del tamaño, hay otros factores del sistema que se tuvieron en cuenta para realizar una correcta evaluación y que deben ser
% Para tener en cuenta cualquier posible diferencia relacionada a los tipos de partículas, la asignación de tipos se hizo de forma aleatoria entre un total de 37 tipos existentes.
%
% Además de las posiciones y tipos de particulas, es posible especificar velocidades iniciales....
% En cuanto a los parámetros de ejecución, se debe tener en cuenta que a medida que la simulación avanza, las partículas son libres de difundir y éste es el resultado natural de una simulación en el vacío.
\section{Consideraciones previas}\label{introResultados}
Para poder evaluar correctamente el tiempo de ejecución asociado a una simulación, se debe tener en cuenta como afectan los parámetros utilizados.
Como se explicó en los capítulos previos, la combinación de \textit{cutoff} y tamaño-configuración del sístema define el número total de interacciones presentes y, por lo tanto,
el número de cálculos a realizar en una iteración. El valor de \textit{cutoff} es constante durante toda la ejecución, sin embargo, la configuración del sistema (posiciones relativas de las partículas) obviamente no lo es.
Es importante tener en cuenta, entonces, que si no se usan condiciones periódicas, dadas las características del potencial que estamos usando,
el sistema no tiene ninguna restricción para expandirse a medida que la simulación avanza. Este es el resultado natural de una simulación en el vacío sobre un sistema de partículas sin enlaces químicos entre ellas.
Esto genera que una mayor cantidad de elementos quede fuera del rango de \textit{cutoff} y, por lo tanto, la cantidad de cálculos varíe, disminuyendo a lo largo de la ejecución.
El cambio en la configuración del sistema, a su vez, está afectado por las condiciones iniciales. Las posiciones y velocidades iniciales del sistema pueden hacer que la expansión ocurra más rápidamente.
Una configuración inicial en condiciones de alta tempratura (distribución de velocidaddes con un mayor valor medio) genera este tipo de efecto.
Por otro lado, en el caso de usar condiciones periódicas hay otro parámetro que debe ser considerado, es el tamaño de la \textit{caja} de simulación.
Como se puede ver de lo explicado en \ref{frontera}, si definimos una caja de simulación de lado $L_m=2R_{cut}$ , habrá una y sólo una imagen de cada partícula dentro del rango de cutoff.
De esta forma, sea cual sea la evolución del sistema, el número de interacciones que deben evaluarse será siempre constante a lo largo de la simulación.
% El tamaño de la caja es, entonces, otro factor importante. De esta forma, a menos que se especifique lo contrario, se define como tamaño de la caja al valor de cutoff/2.
Todos estos factores deben ser tenidos en cuenta a la hora de analizar los resultados, principalmente aquellos que evalúan tiempos de ejecución.
En las próximas secciones, cuando sea relevante, se especificarán las propiedades del sistema y de la ejecución que se utilizaron en cada prueba.
% \begin{itemize}
% \item El tamaño del sistema, como se claramente genera una mayor cantidad de calculos a realizar....
% \item Las velocidades y posiciones iniciales ..... . En el apéndice \ref{sistemas} el proceso para asignar velocidades inciales a los sistemas de prueba utilizados.
% \item el largo de la simulación y el uso de periocidad: es importante tener en cuenta que, si no se usa periodicidad, luego de cierto punto las particulas .
% se debe tener en cuenta que a medida que la simulación avanza, las partículas son libres de difundir y éste es el resultado natural de una simulación en el vacío.
%
% \end{itemize}
% Este efecto se verá en cualquier simulación independientemente de las propiedades del sistema inicial y, claramente es algo a tener en cuenta ya que afecta la correcta evaluación, la aproximación que usamos es aplicar condiciones periódicas de contorno en todas las simulaciones, independientemente del tamaño del sistema.
% Al usar condiciones periodicas
% , las situaciones mencionadas que afectan a la ejecucion sirven para demostrar propiedades de las implementaciones y como ejecuciones de control, para
% \section{Performance}
\section{Evaluación de la performance}
% Los sistemas detallados en la sección anterior se utilizaron para evaluar las distintas implementaciones en cuanto a performance..
% PRIMER GRAFICO DEBERÍA IR EL TIEMPO DE EJECUCION DE LAS 3 IMPLEMENTACIONES PARA LOS DISTINTOS SISTEMAS (PERIODICO)
% GRAFICO DE BARRA CON LAS 3 IMPLEMENTACIONES AGRUPADAS EN 3(O 2) SISTEMAS DE PRUEBAS **PERIODICO - CANTIDAD FIJA DE PASOS*
% *****PUEDO METER LO DE CPU TAMBIEN ACA ****
La figura \ref{time-compare} muestra la mejora en el tiempo de ejecución obtenida para las distintas implementaciones.
Como puede verse, la implementación que utiliza valores tabulados del potencial logra disminuir el tiempo de ejecución con respecto a la implementación base,
mientras que la modificación para que se utilicen directamente valores tabulados de la derivada duplica esta mejora.
Estos resultados son los esperados basándose en las consideraciones que planteamos cuando se describieron las distintas modificaciones.
Se muestra, además, en la figura \ref{time-compare-cpu}, una comparación de las mejoras en la eficiencia que se obtienen con respecto a la implementación del cálculo de fuerzas sobre CPU.
El objetivo es demostrar la escala en la cual se encuentran las distintas implementaciones sobre GPU, con respecto a la implementación utilizando CPU (y sus posibles variantes).
Esta gran mejora en el tiempo es lo que ha impulsado el uso actual de la arquitectura GPU como estándar en este tipo de aplicaciones.
% Las evaluaciones miden el tiempo de ejecución del paso correspondiente al cálculo de fuerzas.
\begin{figure}[htbp]
\centering
\includegraphics[width=\plotwidth]{plots/performance/comparacion-tiempos-sistemas.png}
\caption{Comparaci\'on para los tres casos de prueba estudiados para las distintas implementaciones evaluadas}
\label{time-compare}
\end{figure}
\begin{figure}[htbp]
\centering
\includegraphics[width=\plotwidth]{plots/performance/comparacion-tiempos-TODOScpu.png}
\caption{Comparaci\'on para los tres casos de prueba estudiados y la versión implementada sobre CPU para las distintas implementaciones evaluadas}
\label{time-compare-cpu}
\end{figure}
\subsection{Efectos de la periodicidad}
% DESPUES EXPLICAR COMO AFECTA LA (NO)PERIODICIAD A LA EJECUCION Y MOSTRA EL GRAFICO DE TIEMPO DE EJECUCION DE LAS 3 IMPLEMENTACIONES PARA LOS DISTINTOS SISTEMAS (***NO** PERIODICO)
% DEBERIA MOSTRAR UN GRAFICO QUE DE ALGUNA FORMA COMPARE LAS IMPLEMENTACIONES PARA 1 SOLA ITERACION Y PARA UN NUMERO X DE ITERACIONES (PERIODICO con max. cutoff Y NO PERIODICO)
% Y DECIR QUE A MEDIDA QUE SE EJECUTA, LOS ATOMOS SE 'ESCAPAN' DE LA CAJA NO PERIODICA PERO LA EJECUCION PERIODICA SIEMPRE MANTIENE EL NUMERO DE ATOMOS SOBRE LOS CUALES CALCULAR LA FUERZA
En la figura \ref{periodic-effects} se ven los efectos mencionados al inicio de este capítulo, acerca del impacto de la evolución del sistema sobre el costo computacional de cada iteración.
% A partir de las distintas ejecuciones se calcularon los tiempos promedios por iteración.
Se muestra el tiempo por iteración al inicio de la simulación(iteración 1) y luego de 1000 pasos de ejecución(iteración 1000).
Los resultados corresponden a la ejecución de las diferentes implementaciones para un mismo sistema(X átomos), utilizando distintas condiciones de borde.
Se ve que en el caso de tener condiciones no periódicas, al evolucionar la ejecución, el proceso de expansión del sistema disminuye el número de partículas que se encuentran dentro del radio definido por el \textit{cutoff}.
Esto genera una disminución en el numero de interacciones que se deben calcular y por lo tanto se reduce el tiempo por iteración.
En otras condiciones iniciales, o para diferentes esquemas(potenciales) de interacción, el tiempo promedio podría aumentar.
En el caso de condiciones periódicas(usando el \textit{cutoff} máximo),
todas las partículas del sistema se mantienen dentro del radio de iteracción y por lo tanto el número de cálculos necesarios se mantiene constante, lo que se ve reflejado en el tiempo de ejecución asociado a la iteración.
\begin{figure}[htbp]
\centering
\begin{subfigure}[b]{\plotwidthtres}
\includegraphics[width=\textwidth]{plots/NOperiodic/comparacion-NOperiodico.png}
\caption{Condiciones no periódicas}
\label{compar-1iter-promedio}
\end{subfigure}
\begin{subfigure}[b]{\plotwidthtres}
\includegraphics[width=\textwidth]{plots/NOperiodic/comparacion-periodico.png}
\caption{Condiciones periódicas}
\label{compar-niter-promedio}
\end{subfigure}
\caption{Comparaci\'on de tiempos de ejecuci\'on por iteración para condiciones de borde periódicas y no periódicas}
\label{periodic-effects}
\end{figure}
\subsection{Efectos del cutoff}
En la sección \ref{introResultados} se mencionaron algunos efectos que se pueden ver en el tiempo de ejecución, asociados al valor de \textit{cutoff} en simulaciones bajo distintas condiciones de periodicidad.
Para demostrar estos efectos, se realizan un conjunto de simulaciones para los distintas implementaciones a lo largo de 1000 iteraciones.
Los resultados pueden verse en la figura \ref{time-vs-cut}.
En el caso de simulaciones en condiciones de periodicidad, el tiempo de ejecución aumenta constantemente a medida que se incrementa el \textit{cutoff}.
Esto se deduce de las consideraciones detalladas a lo largo de las secciones previas, al aumentar el número de interacciones que se tienen en cuenta aumentará también el costo computacional asociado.
El valor máximo que tomará el \textit{cutoff} será $R_{cut}=\frac{L_m}{2}$, donde $L_m$ es el largo máximo de la caja, tal como se describe en el capítulo 1.
Un resultado interesante se presenta en las simulaciones bajo condiciones no periódicas, y es esta particularidad lo que me llevó a presentar estas demostraciones.
Como se ve en la figura \ref{time-vs-cut-NOperiodic}, el tiempo de ejecución aumenta con el valor de \textit{cutoff} hasta cierto punto (aprox. hasta la mitad del tamaño inicial del sistema), y luego tiende a disminuir.
Este último efecto, si bien no se analizó en mayor detalle, puede ser explicado teniendo en cuenta que las partículas que luego de cierto tiempo de simulación quedan fuera del rango de \textit{cutoff}
hacen que se pierda la coalescencia en los accesos a memoria, aumentando así el tiempo de ejecución.
Por otro lado, al aumentar el rango de cobertura(mayor \textit{cutoff}, el accceso coalescente se mantiene durante mayor cantidad de iteraciones.
% una evaluación del efecto del cutoff en el tiempo de ejecución
% GRAFICO SCATTER DE LAS 3 IMPLEMENTACIONES vs AUMENTO EN EL CUTOFF
% En la figura \ref{time-vs-cut} se ve el efecto del cutoff sobre el tiempo de ejecución del cálculo de fuerzas de interacción.
% \begin{figure}[htbp]
% \centering
% \includegraphics[width=\plotwidth]{plots/timeVsCut/timeComparison.png}
% \caption{Comparaci\'on de las distintas implementaciones sobre un sistema de 8000 átomos}
% \label{time-vs-cut}
% \end{figure}
% MOSTRAR LO MISMO PARA LOS 3 SISTEMAS **** TANTO PARA PERIODIC COMO NO PERIODIC****, ASI TAMBIEN SE VE EL EFECTO DEL CUTOFF EN EL TIEMPO PARA LOS CASOS PERIOD Y NO
\begin{figure}[htbp]
\centering
\begin{subfigure}[b]{\plotwidthtres}
\includegraphics[width=\textwidth]{plots/timeVsCut/timeComparison-periodic.png}
\caption{Condiciones de periodicidad}
\label{time-vs-cut-periodic}
\end{subfigure}
\begin{subfigure}[b]{\plotwidthtres}
\includegraphics[width=\textwidth]{plots/timeVsCut/timeComparison-NOperiodic.png}
\caption{Condiciones NO periódicas}
\label{time-vs-cut-NOperiodic}
\end{subfigure}
\caption{Comparaci\'on de tiempos de ejecuci\'on bajo condiciones de periodicidad y NO-periódicas. 1000 iteraciones}
\label{time-vs-cut}
\end{figure}
\subsection{Efectos del tamaño de bloque}
En la figura \ref{blockSize} se ve el efecto de la variación en el tamaño de los bloques para las distintas implementaciones.
La evaluación es similar a la realizada en la sección anterior para medir el efecto del \textit{cutoff}, pero en su lugar se evaluaron tres esquemas de bloques distintos:
un primera prueba con bloques de 512x1 threads, una prueba con bloques de 1x512, y una última con bloques de 1x1 threads.
El patrón resultante de los tiempos de ejecución puede ser explicado si se tiene en cuenta la forma de acceder a la memoria implementada en las distintas variantes del algoritmo.
En las implementaciones realizadas, los threads se identifican segun la posición dentro de la matriz de bloques, primero según su índice en el eje \textit{x} y luego de acuerdo a su índice en el eje \textit{y}.
Además, los threads con identificadores contiguos acceden a posiciones contiguas de memoria.
Por otro lado, se debe tener en cuenta la forma en que se construyen los warps. Estos se construyen agrupando threads de un mismo bloque por columnas y luego por filas, y los accesos a memoria se organizan buscando coalescencia a nivel de warps.
% Esto se debe a las propiedades que tienen los accesos a memoria global en GPU. Los warps
De acuerdo a estas propiedades, si los bloques se forman agrupando threads en filas de 1 sola columna(bloques de 1x512), el orden de identificación global de los threads no coincide con el de agrupación de estos en warps.
Por lo tanto, los accesos serán desordenados y no se logrará coalescencia en los accesos a memoria.
Esto marca la diferencia que se ve entre los esquemas de 512x1 y 1x512.
% pero acceden de acuerdo a su posición en $y$, no se mantendrá la coalescencia en los accesos a memoria.
En el caso de bloques de 1x1, su baja performance probablemente se deba a que excede la capacidad de manejo de bloques que tienen las unidades de ejecución.
% En nuestro caso, utilizamos como standar bloques de 1024x1 y al tener columnas con 1 solo elemento, los warps se van formando con elementos consecutivos de una fila. es decir, los warps se forman
\begin{figure}[htbp]
\centering
\begin{subfigure}[b]{\plotwidthtres}
\includegraphics[width=\textwidth]{plots/blockSize/timeComparison-Analitic.png}
\caption{Implementación base}
\label{fig:cpu-scalability-caroteno}
\end{subfigure}
\begin{subfigure}[b]{\plotwidthtres}
\includegraphics[width=\textwidth]{plots/blockSize/timeComparison-Potential.png}
\caption{implementación Tabla de potencial}
\label{fig:cpu-scalability-fullereno}
\end{subfigure}
\begin{subfigure}[b]{\plotwidthtres}
\includegraphics[width=\textwidth]{plots/blockSize/timeComparison-Derivative.png}
\caption{Implementación Tabla de derivadas}
\label{fig:cpu-scalability-hemo}
\end{subfigure}
\caption{Efectos de la variación en los tamaños de bloque para las distintas implementaciones.}
\label{blockSize}
\end{figure}
\section{Calidad numérica}
\subsection{Tamaños y límites de las tablas}
% GRAFICO DE ERROR ABSOLUTO vs NUMERO TOTAL DE ELEMENTOS DE LA TABLA
En la figura \ref{errorAbsElemTabla} se ven los errores asociados a un número muy chico de elementos en la tabla.
Se ve como, para el caso de una tabla de potenciales, el error es mayor que la implementacion con tabla de derivadas
para un mismo numero de elementos.
\begin{figure}[htbp]
\centering
\includegraphics[width=\plotwidth]{plots/erroresTabla/errorAbsolutoElemTabla.png}
\caption{Comparaci\'on de las distintas implementaciones que utilizan tablas sobre un sistema de 8000 átomos }
\label{errorAbsElemTabla}
\end{figure}
En la tabla \ref{tabla-errorRelativo-fuerzas} se muestran los errores relativos en el cálculo de fuerzas de las distintas implementaciones.
% EL ERROR ES EL PROMEDIO?? EL MAXIMO???
% QUE TAMAÑO DE TABLA SE USÓ???
En la tabla \ref{tabla-errorRelativo-potencial} se muestran los errores relativos en el cálculo de fuerzas de las distintas implementaciones.
% EL ERROR ES EL PROMEDIO?? EL MAXIMO???
% QUE TAMAÑO DE TABLA SE USÓ???
% **************************************************
% ACA DEBERIA PONER LAS TABLAS CON ERRORES RELATIVOS
% *************************************************
\begin{table}[h]
\begin{minipage}{\linewidth}
\centering
\begin{tabular}{@{}llll@{}}
Error relativo(Fuerza) & 200 átomos & 8000 átomos & 20000 átomos \\ \bottomrule
% Error relativo(Fuerza) & & & \\ \hline
Implementación 1 & 1.00E-09 & 1.00E-09 & ----- \\ \hline
Implementación 2 & 0.0003 & 0.0003 & ----- \\ \hline
Implementación 3 & 8.00E-06 & 8.00E-06 &
\end{tabular}
\caption{Errores relativos en el cálculo de fuerzas para las distintas implementaciones y distintos tamaños de sistemas}
\label{tabla-errorRelativo-fuerzas}
\end{minipage}
\begin{minipage}{\linewidth}
\centering
\begin{tabular}{@{}llll@{}}
\\
\\
% Error relativo(E. Potencial) & & & \\ \bottomrule
Error relativo(E. Potencial) & 200 átomos & 8000 átomos & 20000 átomos \\ \bottomrule
Implementación 1 & 1.00E-09 & 1.00E-09 & \\ \hline
Implementación 2 & 3.00E-05 & 3.00E-04 & \\ \hline
Implementación 3 & 3.00E-05 & 3.00E-04 & \\ \bottomrule
\end{tabular}
\end{minipage}
\caption{Errores relativos en el cálculo de fuerzas para las distintas implementaciones y distintos tamaños de sistemas}
\label{tabla-errorRelativo-potencial}
\end{table}
%
% \begin{minipage}{\linewidth}
% \centering
% \begin{tabular}{@{}llll@{}}
% \toprule
% % Error relativo & 200 átomos & 8000 átomos & 20000 átomos \\ \midrule
% Implementación 1 & 1.00E-09 & 1.00E-09 & \\ \hline
% Implementación 2 & 3.00E-05 & 3.00E-04 & \\ \hline
% Implementación 3 & 3.00E-05 & 3.00E-04 & \\ \bottomrule
% \end{tabular}
% \end{minipage}
%
%
%
% \begin{table}[h]
% \centering
% \begin{tabular}{@{}llll@{}}
% \toprule
% Error relativo & 200 átomos & 8000 átomos & 20000 átomos \\ \midrule
% Implementación 1 & 1.00E-09 & 1.00E-09 & \\ \hline
% Implementación 2 & 3.00E-05 & 3.00E-04 & \\ \hline
% Implementación 3 & 3.00E-05 & 3.00E-04 & \\ \bottomrule
% \end{tabular}
% \caption{Errores relativos en el cálculo de la energía potencial total para las distintas implementaciones y distintos tamaños de sistemas}
% \label{tabla-errorRelativo-energia}
% \end{table}
%
\subsubsection{Efectos del limite superior de la tabla}
En la figura \ref{time-vs-cut-error-superior} se ven los errores al aumentar el valor absoluto en el indice superior de la tabla, manteniendo fijo el número total de elementos de la tabla
\begin{figure}[htbp]
\centering
\begin{subfigure}[b]{\plotwidthtres}
\includegraphics[width=\textwidth]{plots/erroresTabla/errorAbsolutoLimite200.png}
\caption{Condiciones de periodicidad}
\label{compar-1iter}
\end{subfigure}
\begin{subfigure}[b]{\plotwidthtres}
\includegraphics[width=\textwidth]{plots/erroresTabla/errorAbsolutoLimite8k.png}
\caption{Condiciones NO periódicas}
\label{compar-niter}
\end{subfigure}
\caption{Comparacion de efectos en el error del calculo de fuerzas para sistemas de distinto tamaño}
\label{time-vs-cut-error-superior}
\end{figure}
% \subsection{Estabilidad de la simulación}
% GRAFICO
% Acá debería mostrar como la energia se mantiene constante cuando hago una simulacion larga (distintos valores de tamano de tabla )