Desviacón estándar alta en ejercicio 1

Desviacón estándar alta en ejercicio 1

de Camilo Montes De Oca Azevedo -
Número de respuestas: 1

Hola, estamos midiendo el tiempo de ejecución del ejercicio 1 y nos esta dando los siguientes resultados:

 Time (%)  Total Time (ns)  Instances  Avg (ns)   Med (ns)  Min (ns)  Max (ns)  StdDev (ns)   Style        Range
 --------  ---------------  ---------  ---------  --------  --------  --------  -----------  -------  ---------------
    100.0        1,593,963         10  159,396.3  40,606.5    37,422   703,754    248,914.1  PushPop  :Scan exclusivo

Nos preocupa la desviacion estándar tan alta y la diferencia con los tiempos de ejecucion de cada uno de los kernels:

 Time (%)  Total Time (ns)  Instances  Avg (ns)  Med (ns)  Min (ns)  Max (ns)  StdDev (ns)                     Name
 --------  ---------------  ---------  --------  --------  --------  --------  -----------  ------------------------------------------
     44.3           35,137         10   3,513.7   3,072.0     3,072     7,360      1,352.0  block_scan(const int *, int *, int *, int)
     32.1           25,473         10   2,547.3   2,496.0     2,464     2,976        155.4  scan_sums(const int *, int *)
     23.6           18,720         10   1,872.0   1,536.0     1,440     3,680        732.4  add_offsets(int *, const int *, int)

Cuando ejecutamos nuestro programa en la maquina asignada a nuestro grupo nos da muchos mejores resultados en la medida conjunta pero no cuando medimos cada kernel por separado:

 Time (%)  Total Time (ns)  Instances  Avg (ns)  Med (ns)  Min (ns)  Max (ns)  StdDev (ns)   Style        Range
 --------  ---------------  ---------  --------  --------  --------  --------  -----------  -------  ---------------
    100.0          490,696         10  49,069.6  25,081.5    24,778   258,070     73,447.9  PushPop  :Scan exclusivo
 Time (%)  Total Time (ns)  Instances  Avg (ns)  Med (ns)  Min (ns)  Max (ns)  StdDev (ns)                     Name
 --------  ---------------  ---------  --------  --------  --------  --------  -----------  ------------------------------------------
     42.8           37,888         10   3,788.8   3,712.0     3,680     4,416        225.4  block_scan(const int *, int *, int *, int)
     36.6           32,449         10   3,244.9   3,168.0     3,167     3,745        182.7  scan_sums(const int *, int *)
     20.6           18,210         10   1,821.0   1,792.5     1,760     2,048         83.1  add_offsets(int *, const int *, int)

Para medir el tiempo estamos utilizando nvtxRangePush:

nvtxRangePush("Scan exclusivo");
    // llamada kernel1
    CUDA_CHK(cudaDeviceSynchronize());

    // llamada kernel2
    CUDA_CHK(cudaDeviceSynchronize());

    // llamada kernel3
    CUDA_CHK(cudaDeviceSynchronize());
nvtxRangePop();

¿Puede deberse esto a que hay mas carga sobre nuestras GPUs?

Saludos,

Camilo

En respuesta a Camilo Montes De Oca Azevedo

Re: Desviacón estándar alta en ejercicio 1

de Manuel Freire -
Hola,

Varios apuntes. Primero que nada les recomiendo reportar los resultados que obtienen en el servidor (no los de la máquina local que tengan ustedes). En general los primeros van a ser más fiables ya que solamente están siendo usadas por ustedes. Con respecto a la desviación estándar no parecen ser números tan grandes en valor absoluto ¿con qué tamaños de vector están probando? Si el tamaño es muy chico puede ser que la propia varianza del HW tenga un peso importante en la ejecución pero con valores más grandes debería perder peso relativo.

Saludos!
Manuel