Preguntas más frecuentes
PREGUNTA:
¿Cuál es el número máximo de operaciones que se puede realizar sobre cada elemento de la matriz dispersa?
RESPUESTA:
Hemos considerado razonable colocar un tope de 1024 operaciones. A partir de ahí, el rendimiento de la máquina suele estar ya saturado siempre que el código se optimice mínimamente por otras vias. No obstante, pueden realizarse experimentos por encima de ese valor con objeto de completar la gráfica del modelo roofline (aunque los GFLOPS así obtenidos no sean válidos para el concurso).
PREGUNTA:
¿Puedo cambiar la expresión numérica de la línea de código que realiza las operaciones de cada elemento de la matriz consigo mismo?
RESPUESTA:
Se puede cambiar el operador en la línea que se indica en el código (suma, resta, producto, división, ...), pero NO se puede alterar la expresión por otra algebráicamente equivalente, ya que las operaciones numéricas que realiza mytoy se contabilizan "manualmente" en la fórmula que utilizamos para computar los GFLOPS. Pongamos un ejemplo para ilustrarlo. En el bucle de cómputo, partimos de:
for (int j=0; j<numOperations; ++j)
dvalues[vi] += dvalues[vi];
y siempre que numOperations fuese múltiplo de 4, podríamos hacer:
for (int j=0; j<numOperations/4; ++j)
dvalues[vi] += dvalues[vi]*4;
que produce el mismo resultado, pero la trampa está en que este nuevo programa realiza 4 veces menos operaciones aritméticas, y eso no lo descontamos en la fórmula que calcula los GFLOPS obtenidos. Es uno de los casos en los que el programa mytoy puede informar de una cota de GFLOPS superior al límite teórico de la GPU sobre la que se ejecuta, porque en realidad estamos haciendo muchas menos operaciones que las que se contabilizan en la métrica medida "manualmente" desde el programa. Otros supuestos que también llevarían a sobrepasar dicho límite serían las optimizaciones dirigidas por directivas #pragma que habilitan al compilador para efectuar reestructuraciones numéricas, que también reducen el número de operaciones realizadas sin haber descontado las mismas en la correspondiente fórmula que contabiliza los GFLOPS.