From 7cc36a5689750ee7d77b959362edc65948a79427 Mon Sep 17 00:00:00 2001 From: Gilles Perrot Date: Wed, 22 Jun 2011 08:06:05 +0200 Subject: [PATCH 1/1] version operationnelle avec chemins parametrables --- .gitignore | 2 + Makefile | 4 +- image_out16.pgm | Bin 0 -> 262159 bytes levelines_common.h | 153 ++++++ levelines_kernels.cu | 524 +++++++++++++++------ lniv.cvp | 148 ++++++ lniv_Session19_Context_0.csv | 72 +++ lniv_Session21_Context_0.csv | 72 +++ lniv_Session22_Context_0.csv | 72 +++ lniv_nosmem_tex_Context_0.csv | 72 +++ lniv_smem2DnoCFI_Context_0.csv | 72 +++ lniv_smemCFI_1linearArray_Context_0.csv | 72 +++ lniv_smem_3staticArrays_Context_0.csv | 72 +++ lniv_smem_3staticArrays_Context_0.trc | Bin 0 -> 284 bytes lniv_smem_3staticArrays_Context_1.trc | Bin 0 -> 284 bytes lniv_smem_3staticArrays_Context_2.trc | Bin 0 -> 284 bytes lniv_smem_zc_CFI_linearArray_Context_0.csv | 72 +++ main.cu | 271 +++++++---- profile.cvp | 22 + profile_Session1_Context_0.csv | 72 +++ profile_Session1_Context_0.trc | Bin 0 -> 284 bytes profilerapitrace_0.trc | Bin 0 -> 284 bytes 22 files changed, 1511 insertions(+), 261 deletions(-) create mode 100644 image_out16.pgm create mode 100644 lniv.cvp create mode 100644 lniv_Session19_Context_0.csv create mode 100644 lniv_Session21_Context_0.csv create mode 100644 lniv_Session22_Context_0.csv create mode 100644 lniv_nosmem_tex_Context_0.csv create mode 100644 lniv_smem2DnoCFI_Context_0.csv create mode 100644 lniv_smemCFI_1linearArray_Context_0.csv create mode 100644 lniv_smem_3staticArrays_Context_0.csv create mode 100644 lniv_smem_3staticArrays_Context_0.trc create mode 100644 lniv_smem_3staticArrays_Context_1.trc create mode 100644 lniv_smem_3staticArrays_Context_2.trc create mode 100644 lniv_smem_zc_CFI_linearArray_Context_0.csv create mode 100644 profile.cvp create mode 100644 profile_Session1_Context_0.csv create mode 100644 profile_Session1_Context_0.trc create mode 100644 profilerapitrace_0.trc diff --git a/.gitignore b/.gitignore index e69de29..c39d6c5 100644 --- a/.gitignore +++ b/.gitignore @@ -0,0 +1,2 @@ +# ne pas surveiller les fichiers objet +*.o \ No newline at end of file diff --git a/Makefile b/Makefile index 2801dda..20361ca 100644 --- a/Makefile +++ b/Makefile @@ -34,9 +34,9 @@ ################################################################################ # Add source files here -EXECUTABLE := levelines +EXECUTABLE := lniv # CUDA source files (compiled with cudacc) -CUFILES := main_gmem.cu +CUFILES := main.cu # CUDA dependency files CU_DEPS := levelines_common.h # C/C++ source files (compiled with gcc / c++) diff --git a/image_out16.pgm b/image_out16.pgm new file mode 100644 index 0000000000000000000000000000000000000000..2cbfd03ebf66f20d36432e03834e159c1c7a19f1 GIT binary patch literal 262159 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

R{EDZP{-L0# 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

;Rnwd5LJvi95DyY9Gg1< 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 literal 0 HcmV?d00001 diff --git a/levelines_common.h b/levelines_common.h index ddb0ea2..b96bc6b 100644 --- a/levelines_common.h +++ b/levelines_common.h @@ -14,6 +14,159 @@ // Reference CPU functions //////////////////////////////////////////////////////////////////////////////// //extern "C" void fonc(...); +/** + * + * \brief determine la valeur de NG de la ligne de niveau demarrant de i,j + * \author NB - PhyTI + * + * \param[in] image image d'entree + * \param[in] i coord i du point de depart + * \param[in] j coord j du point de depart + * + * \return la valeur de la ligne + * + * la ligne de niveau ne va que d'un cote + * on cherche le segment de r pixels ou les valeurs + * de l'image ont une variance minimale + * il y a 24 segments possibles (4 par quadrants) + * la direction 0 va vers le haut, les directions tournent + * dans le sens horaire, dans l'ordre croissant + * + * pas de test de bord : pas d'utilisation a moins de r pixels du bords + * + * + * EN TEST + */ +int lniv4_value(unsigned int *image, int2 *path, int i, int j, int idim, int jdim, int *dout, unsigned int r ) +{ + int value_c ; + int value2_c ; + int d, v, p, d_min, eq_min, eq, sum, sum2 ; + int sum_eq_min ; + int it, jt ; + + + /* mem */ + value_c = image[i*jdim + j] ; + value2_c = value_c*value_c ; + + // direction d=0 + sum = value_c ; + sum2 = value2_c ; + it = i ; + jt = j ; + for (p=0; p à faire disparaître + * longueur = 4 pixels + * une ligne = un chemin + ************************************************************************/ __constant__ int pathDi[PSIZE_I][PSIZE_J-1] = { // Q1 - { -1, -1, -1}, // - { -1, -1, -1}, // - { -1, -1, -1}, // - { -1, -1, -1}, // - { -1, 0, 1}, // - { 0, -1, 0}, + { -1, -1, -1}, // 90 + { -1, -1, -1}, // 75 + { -1, -1, -1}, // 60 + { -1, -1, -1}, // 45 + { -1, 0, -1}, // 30 + { 0, -1, 0}, // 15 // Q4 - { 0, 0, 0}, // - { 0, 1, 1}, // - { 1, 0, 1}, // - { 1, 1, 1}, // - { 1, 1, 1}, // - { 1, 1, 1}, + { 0, 0, 0}, // 0 + { 0, 1, 0}, // 345 + { 1, 0, 1}, // 330 + { 1, 1, 1}, // 315 + { 1, 1, 1}, // 300 + { 1, 1, 1}, // 285 // Q3 - { 1, 1, 1}, // - { 1, 1, 1}, // - { 1, 1, 1}, // - { 1, 1, 1}, // - { 1, 0, -1}, // - { 0, 1, 0}, + { 1, 1, 1}, // 270 + { 1, 1, 1}, // 255 + { 1, 1, 1}, // 240 + { 1, 1, 1}, // 225 + { 1, 0, 1}, // 210 + { 0, 1, 0}, // 195 // Q2 - { 0, 0, 0}, // - { 0, -1, 0}, // - { -1, 0, -1}, // - { -1, -1, -1}, // - { -1, -1, -1}, // - { -1, -1, -1} + { 0, 0, 0}, // 180 + { 0, -1, 0}, // 165 + { -1, 0, -1}, // 150 + { -1, -1, -1}, // 135 + { -1, -1, -1}, // 120 + { -1, -1, -1} // 105 } ; // __constant__ int pathDj[PSIZE_I][PSIZE_J-1] = { // Q1 - { 0, 0, 0}, // - { 0, 1, 0}, - { 1, 0, 1}, - { 1, 1, 1}, - { 1, 1, 1}, - { 1, 1, 1}, + { 0, 0, 0}, // 90 + { 0, 1, 0}, // 75 + { 1, 0, 1}, // 60 + { 1, 1, 1}, // 45 + { 1, 1, 1}, // 30 + { 1, 1, 1}, // 15 // Q4 - { 1, 1, 1}, // - { 1, 1, 1}, - { 1, 1, 1}, - { 1, 1, 1}, - { 1, 0, -1}, - { 0, 1, 0}, - // Q3 - { 0, 0, 0}, // - { 0, -1, 0}, - { -1, 0, -1}, - { -1, -1, -1}, - { -1, -1, -1}, - { -1, -1, -1}, + { 1, 1, 1}, // 0 + { 1, 1, 1}, // 345 + { 1, 1, 1}, // 330 + { 1, 1, 1}, // 315 + { 1, 0, 1}, // 300 + { 0, 1, 0}, // 285 + // Q3 + { 0, 0, 0}, // 270 + { 0, -1, 0}, // 255 + { -1, 0, -1}, // 240 + { -1, -1, -1}, // 225 + { -1, -1, -1}, // 210 + { -1, -1, -1}, // 195 // Q2 - { -1, -1, -1}, // - { -1, -1, -1}, - { -1, -1, -1}, - { -1, -1, -1}, - { -1, 0, 1}, - { 0, -1, 0} + { -1, -1, -1}, // 180 + { -1, -1, -1}, // 165 + { -1, -1, -1}, // 150 + { -1, -1, -1}, // 135 + { -1, 0, -1}, // 120 + { 0, -1, 0} // 105 } ; + + +// valeurs des tangentes des angles de base pour la génération initiale des chemins +// pour la version à chemins de longueur paramétrable +__constant__ float tangente[] = {0.000, 0.268, 0.577, 1.000} ; -// declare texture reference for 2D int texture +// declarations des textures texture tex_img_in ; texture tex_img_estim ; texture tex_img_lniv ; +texture tex_paths ; + + + +/** + * + * \brief calcule les chemins + * \author NB - PhyTI, modifié by zulu pour adaptater aux chemins paramétrables + * + * \param[in] r longueur des chemins + * + * \param[out] d_paths matrice des déplacements relatifs (chemins) + * + * Cette fonction utilise le tableau constant des tangentes des angles + * considérés pour le calcul de chemins (float tangente[]). + * + */ +__global__ void kernel_calcul_paths( int2 * d_paths, unsigned int r){ + + unsigned int idpath = 0 ; + int ic, jc, iprec, jprec ; + float offset = 0.5 ; + unsigned int basepath = 0 ; + + // Q1 inf + for (int a=0 ; a< 4 ; a++){ // les 4 angles 0,15,30 et 45 + for (int p=0 ; p< r ; p++){ // les r points + ic = r-1 - floor(tangente[a]*p + offset) ; + if ( p > 0 ){ + d_paths[idpath*(r-1)+p-1].x = ic - iprec ; + d_paths[idpath*(r-1)+p-1].y = 1 ; + } + iprec = ic ; + } + idpath++ ; + } + // Q1 sup + for (int a=2 ; a>0 ; a--){ // les 2 angles 60 et 75 + for (int p=0 ; p< r ; p++){ // les r points + jc = floor(tangente[a]*p + offset) ; + if ( p > 0 ){ + d_paths[idpath*(r-1)+p-1].x = -1 ; + d_paths[idpath*(r-1)+p-1].y = jc - jprec ; + } + jprec = jc ; + } + idpath++ ; + } + + // Q2 + basepath += 6 ; + for (int a=0 ; a< 6 ; a++){ // les 6 angles 90,105,120,135,150,165 + for (int p=0 ; plpath)&&(ilpath)&&(jlpath)&&(ilpath)&&(j=lpath)&&(i<=H-lpath)&&(j>=lpath)&&(j<=L-lpath)){ + z = tex2D(tex_img_estim, j, i) ; for( idpath=0; idpath < PSIZE_I ; idpath++) { ic = i ; jc = j ; - zc = tex2D(tex_img_estim, j, i) ; - mse.x = zc ; - mse.y = zc*zc ; + mse.x = z ; + mse.y = z*z ; for( idpix=0; idpix < lpath-1 ; idpix++ ) { - ic += pathDi[idpath][idpix] ; - jc += pathDj[idpath][idpix] ; + ic += tex2D(tex_paths, idpix, idpath).x ; + jc += tex2D(tex_paths, idpix, idpath).y ; zc = tex2D(tex_img_estim, jc, ic) ; mse.x += zc ; mse.y += zc*zc ; } // critere de selection du chemin ( SUM_(X2) - SUM_(X)2 / lpath ) - // a ameliorer pour vitesse + // TODO cherchera ameliorer pour vitesse mse_cur = ( mse.y - ( mse.x / lpath ) * mse.x ) ; - if (idpath == 0) { + if ( (idpath == 0) || (mse_cur < mse_min) ) { mse_min = mse_cur ; - val = mse.x ; - } else { - if ( mse_cur < mse_min ) { - mse_min = mse_cur ; - val = mse.x ; - } + val = mse.x ; } } img_out[ i*L + j ] = val / lpath ; @@ -241,60 +412,101 @@ __global__ void kernel_levelines_texture(unsigned int * img_out, unsigned int L, } +/** + * + * \brief determine les lniv en chaque point de l'image + * \author zulu - AND + * + * \param[in] L Largeur de l'image + * \param[in] H Hauteur de l'image + * \param[in] r longueur des segments + * + * \param[out] img_out image des lniv + * + * Execution sur des blocs de threads 2D et une grille 2D + * selon les dimensions de l'image. + * L'image d'entrée doit être au préalable en mémoire texture pointée par "tex_img_estim". + * Les matrices des chemins sont, elles, pointées par "tex_paths" + * Cette version ne fournit pas les indices des chemins pour les tracé éventuel des lniv. + * Cette version tente d'utiliser la shared memory pour compenser la baisse de perf due aux chemins + * paramétrables non constants. + */ - -__global__ void kernel_levelines_only_texture(unsigned int * img_out, unsigned int L, unsigned int H) +__global__ void kernel_levelines_texture_smem(unsigned int * img_out, unsigned int L, unsigned int H, unsigned int r) { + // coordonnées du point dans le bloc + unsigned int iib = threadIdx.x ; + unsigned int jib = threadIdx.y ; // coordonnes du point dans l'image - unsigned int i = blockIdx.x*blockDim.x + threadIdx.x; - unsigned int j = blockIdx.y*blockDim.y + threadIdx.y;; - //unsigned int spos = threadIdx.x * blockDim.y + threadIdx.y ; - + unsigned int i = blockIdx.x*blockDim.x + iib ; + unsigned int j = blockIdx.y*blockDim.y + jib ; + // nb de points par chemin - int lpath = PSIZE_J ; - unsigned int ic, jc ; + int lpath = r ; + int ic, jc ; int idpath, idpix ; - unsigned int mse_min, mse_cur ; - - //extern __shared__ uint2 mse[] ; - uint2 mse ; + unsigned int val, mse_cur, mse_min, z, zc ; + uint2 mse_data ; + + //__shared__ unsigned int val_img[16*16] ; + + //val_img[jib*16+iib] = tex2D(tex_img_estim, j, i) ; - if((i>lpath)&&(ilpath)&&(j=lpath)&&(i<=H-lpath)&&(j>=lpath)&&(j<=L-lpath)){ + z = tex2D(tex_img_estim, j, i) ; for( idpath=0; idpath < PSIZE_I ; idpath++) { ic = i ; jc = j ; - mse.x = tex2D(tex_img_in, i, j) ; - mse.y = tex2D(tex_img_in, i, j)*tex2D(tex_img_in, i, j) ; + mse_data.x = z ; + mse_data.y = z*z ; + mse_min = mse_data.y - mse_data.x/lpath*mse_data.y ; for( idpix=0; idpix < lpath-1 ; idpix++ ) { - ic += pathDi[idpath][idpix] ; - jc += pathDj[idpath][idpix] ; - mse.x += tex2D( tex_img_in, ic, jc ) ; - mse.y += tex2D( tex_img_in, ic, jc ) * tex2D( tex_img_in, ic, jc ) ; + ic += tex2D(tex_paths, idpix, idpath).x ; + jc += tex2D(tex_paths, idpix, idpath).y ; + zc = tex2D(tex_img_estim, jc, ic) ; + mse_data.x += zc ; + mse_data.y += zc*zc ; } // critere de selection du chemin ( SUM_(X2) - SUM_(X)2 / lpath ) - // a ameliorer pour vitesse - mse_cur = ( mse.y - ( mse.x / lpath ) * mse.x ) ; - if (idpath > 0) { - if ( mse_cur < mse_min ) { - mse_min = mse_cur ; - } - } else { + // TODO cherchera ameliorer pour vitesse + mse_cur = ( mse_data.y - ( mse_data.x / lpath ) * mse_data.x ) ; + if ( mse_cur < mse_min ){ mse_min = mse_cur ; - } + val = mse_data.x ; + } } - img_out[ i*L + j ] = mse_min / lpath ; + img_out[ i*L + j ] = val / lpath ; } } - +/** + * + * \brief trace les segments sur un maillage carré + * \author zulu - AND + * + * \param[in] img_in image d'entree + * \param[in] dir tableaux des directions + * \param[in] L Largeur de l'image + * \param[in] H Hauteur de l'image + * \param[in] pas coté du maillage + * \param[in] ng niveau de gris des segments + * \param[in] r longueur des segments + * + * \param[out] img_out image + les segments superposés + * + * Kernel trivial. Ne trace rien sur les bords. + * execution sur des blocs de threads 2D et une grille 2D + * selon les dimensions de l'image + */ __global__ void kernel_trace_levelines(unsigned int * img_in, unsigned int * dir, unsigned int * img_out, - unsigned int L, unsigned int H, unsigned int pas, unsigned int ng){ + unsigned int L, unsigned int H, unsigned int pas, unsigned int ng, + unsigned int r ){ // coordonnes du point dans l'image unsigned int i = blockIdx.x*blockDim.x + threadIdx.x; unsigned int j = blockIdx.y*blockDim.y + threadIdx.y;; // nb de points par chemin - int lpath = PSIZE_J ; + int lpath = r ; unsigned int ic, jc, idpix ; unsigned int idpath ; @@ -306,8 +518,8 @@ __global__ void kernel_trace_levelines(unsigned int * img_in, unsigned int * dir idpath = dir[ic*L+jc] ; img_out[ ic*L+jc ] = ng ; for ( idpix=0 ; idpix < lpath-1 ; idpix++ ){ - ic += pathDi[idpath][idpix] ; - jc += pathDj[idpath][idpix] ; + ic += tex2D(tex_paths, idpix, idpath).x ; // pathDi[idpath][idpix] ; + jc += tex2D(tex_paths, idpix, idpath).y ; // pathDj[idpath][idpix] ; img_out[ ic*L + jc ] = ng ; } } diff --git a/lniv.cvp b/lniv.cvp new file mode 100644 index 0000000..741b8ce --- /dev/null +++ b/lniv.cvp @@ -0,0 +1,148 @@ + + + + smem_3staticArrays + "/home/perrot/NVIDIA_GPU_Computing_SDK/C/bin/linux/release/lniv" + 4 0 15 /home/perrot/Images/cochons/cochon_512b.pgm + /home/perrot/NVIDIA_GPU_Computing_SDK/C/src/lniv_gpu + 21 Jun 2011 10:47:10 + false + + + branch,divergent_branch,instructions,warp_serialize + cta_launched,local_load,local_store,gld_32b + gld_64b,gld_128b,gst_32b,gst_64b + gst_128b + gld_request,gst_request + tex_cache_hit,tex_cache_miss + + + + + nosmem_tex + "/home/perrot/NVIDIA_GPU_Computing_SDK/C/bin/linux/release/lniv" + 4 0 15 /home/perrot/Images/cochons/cochon_512b.pgm + /home/perrot/NVIDIA_GPU_Computing_SDK/C/src/lniv_gpu + 21 Jun 2011 10:50:54 + false + + + branch,divergent_branch,instructions,warp_serialize + cta_launched,local_load,local_store,gld_32b + gld_64b,gld_128b,gst_32b,gst_64b + gst_128b + gld_request,gst_request + tex_cache_hit,tex_cache_miss + + + + + smem2DnoCFI + "/home/perrot/NVIDIA_GPU_Computing_SDK/C/bin/linux/release/lniv" + 4 0 15 /home/perrot/Images/cochons/cochon_512b.pgm + /home/perrot/NVIDIA_GPU_Computing_SDK/C/src/lniv_gpu + 21 Jun 2011 11:10:33 + false + + + branch,divergent_branch,instructions,warp_serialize + cta_launched,local_load,local_store,gld_32b + gld_64b,gld_128b,gst_32b,gst_64b + gst_128b + gld_request,gst_request + tex_cache_hit,tex_cache_miss + + + + + smemCFI_1linearArray + "/home/perrot/NVIDIA_GPU_Computing_SDK/C/bin/linux/release/lniv" + 4 0 15 /home/perrot/Images/cochons/cochon_512b.pgm + /home/perrot/NVIDIA_GPU_Computing_SDK/C/src/lniv_gpu + 21 Jun 2011 11:16:24 + false + + + branch,divergent_branch,instructions,warp_serialize + cta_launched,local_load,local_store,gld_32b + gld_64b,gld_128b,gst_32b,gst_64b + gst_128b + gld_request,gst_request + tex_cache_hit,tex_cache_miss + + + + + smem_zc_CFI_linearArray + "/home/perrot/NVIDIA_GPU_Computing_SDK/C/bin/linux/release/lniv" + 4 0 15 /home/perrot/Images/cochons/cochon_512b.pgm + /home/perrot/NVIDIA_GPU_Computing_SDK/C/src/lniv_gpu + 21 Jun 2011 11:30:11 + false + + + branch,divergent_branch,instructions,warp_serialize + cta_launched,local_load,local_store,gld_32b + gld_64b,gld_128b,gst_32b,gst_64b + gst_128b + gld_request,gst_request + tex_cache_hit,tex_cache_miss + + + + + Session19 + "/home/perrot/NVIDIA_GPU_Computing_SDK/C/bin/linux/release/lniv" + 4 0 15 /home/perrot/Images/cochons/cochon_512b.pgm + /home/perrot/NVIDIA_GPU_Computing_SDK/C/src/lniv_gpu + 21 Jun 2011 14:10:47 + false + + + branch,divergent_branch,instructions,warp_serialize + cta_launched,local_load,local_store,gld_32b + gld_64b,gld_128b,gst_32b,gst_64b + gst_128b + gld_request,gst_request + tex_cache_hit,tex_cache_miss + + + + + Session21 + "/home/perrot/NVIDIA_GPU_Computing_SDK/C/bin/linux/release/lniv" + 4 0 15 /home/perrot/Images/cochons/cochon_512b.pgm + /home/perrot/NVIDIA_GPU_Computing_SDK/C/src/lniv_gpu + 21 Jun 2011 14:27:50 + false + + + branch,divergent_branch,instructions,warp_serialize + cta_launched,local_load,local_store,gld_32b + gld_64b,gld_128b,gst_32b,gst_64b + gst_128b + gld_request,gst_request + tex_cache_hit,tex_cache_miss + + + + + Session22 + "/home/perrot/NVIDIA_GPU_Computing_SDK/C/bin/linux/release/lniv" + 4 0 15 /home/perrot/Images/cochons/cochon_512b.pgm + /home/perrot/NVIDIA_GPU_Computing_SDK/C/src/lniv_gpu + 21 Jun 2011 14:34:00 + false + + + branch,divergent_branch,instructions,warp_serialize + cta_launched,local_load,local_store,gld_32b + gld_64b,gld_128b,gst_32b,gst_64b + gst_128b + gld_request,gst_request + tex_cache_hit,tex_cache_miss + + + + + diff --git a/lniv_Session19_Context_0.csv b/lniv_Session19_Context_0.csv new file mode 100644 index 0000000..dedd7fe --- /dev/null +++ b/lniv_Session19_Context_0.csv @@ -0,0 +1,72 @@ +# CUDA_PROFILE_LOG_VERSION 2.0 +# CUDA_PROFILE_CSV 1 +# TIMESTAMPFACTOR fffff6ef914083a0 +# CUDA_DEVICE 0 Tesla C1060 +gpustarttimestamp,method,gputime,cputime,occupancy,gridSizeX,gridSizeY,gridSizeZ,blockSizeX,blockSizeY,blockSizeZ,dynSmemPerBlock,staSmemPerBlock,registerPerThread,streamID,localblocksize,memTransferSize,memtransferhostmemtype,branch,divergent_branch,instructions,warp_serialize,cta_launched,local_load,local_store,gld_32b,gld_64b,gld_128b,gst_32b,gst_64b,gst_128b,gld_request,gst_request,tex_cache_hit,tex_cache_miss +122940adae6a6780,memcpyHtoA,177.856,331,,,,,,,,,,,0,0,1048576,0 +122940adae70e2c0,_Z19kernel_calcul_pathsP4int2j,43.296,12,0.031,1,1,13908848,1,1,1,0,28,11,0,-1,,0,168,0,1587,0,1,0,0,54,0,0,72,0,0,54,72,0,0 +122940adae719640,memcpyDtoA,4.288,6,,,,,,,,,,,0,0,576,0 +122940adae71e360,_Z23kernel_neutre_img2estimPjjj,450.88,8,0.5,64,64,0,8,8,1,0,32,5,0,-1,,0,0,0,5448,0,409,0,0,0,0,0,13088,0,0,0,272,2454,818 +122940adae7969a0,memcpyAtoD,50.592,6,,,,,,,,,,,0,0,1048576,0 +122940adae7a3980,memcpyDtoA,47.392,4,,,,,,,,,,,0,0,1048576,0 +122940adae7b4960,_Z29kernel_levelines_texture_smemPjjjj,2129.12,9,0.5,64,64,6881395,8,8,1,0,308,18,0,-1,,0,47606,11,731991,67080,410,0,0,0,0,0,12802,0,0,0,272,1173117,4335 +122940adae9bd0a0,memcpyDtoA,47.712,4,,,,,,,,,,,0,0,1048576,0 +122940adae9cc6c0,_Z30kernel_estim_next_step_texturePjjjj,472.384,5,0.5,64,64,7536757,8,8,1,0,36,9,0,-1,,0,816,0,15510,0,409,0,0,0,0,0,13088,0,0,0,272,4908,1636 +122940adaea40640,memcpyDtoA,47.68,3,,,,,,,,,,,0,0,1048576,0 +122940adaea4dca0,_Z29kernel_levelines_texture_smemPjjjj,2109.98,4,0.5,64,64,6357104,8,8,1,0,308,18,0,-1,,0,47606,12,731991,66886,410,0,0,0,0,0,12804,0,0,0,272,1164819,2655 +122940adaec51900,memcpyDtoA,47.552,3,,,,,,,,,,,0,0,1048576,0 +122940adaec5eee0,_Z30kernel_estim_next_step_texturePjjjj,472.96,4,0.5,64,64,6488175,8,8,1,0,36,9,0,-1,,0,816,0,15513,0,410,0,0,0,0,0,13120,0,0,0,272,4920,1640 +122940adaecd30a0,memcpyDtoA,47.744,3,,,,,,,,,,,0,0,1048576,0 +122940adaece0740,_Z29kernel_levelines_texture_smemPjjjj,2126.05,4,0.5,64,64,6619245,8,8,1,0,308,18,0,-1,,0,47606,10,731993,66947,409,0,0,0,0,0,12800,0,0,0,272,1163430,2600 +122940adaeee8260,memcpyDtoA,47.68,3,,,,,,,,,,,0,0,1048576,0 +122940adaeef58a0,_Z30kernel_estim_next_step_texturePjjjj,457.856,4,0.5,64,64,7602208,8,8,1,0,36,9,0,-1,,0,816,0,15510,0,410,0,0,0,0,0,13120,0,0,0,272,4920,1640 +122940adaef65fe0,memcpyDtoA,47.648,3,,,,,,,,,,,0,0,1048576,0 +122940adaef73620,_Z29kernel_levelines_texture_smemPjjjj,2112.03,3,0.5,64,64,6357108,8,8,1,0,308,18,0,-1,,0,47606,12,731993,66824,409,0,0,0,0,0,12788,0,0,0,272,1163358,2672 +122940adaf177b20,memcpyDtoA,47.648,3,,,,,,,,,,,0,0,1048576,0 +122940adaf185160,_Z30kernel_estim_next_step_texturePjjjj,474.08,4,0.5,64,64,6750313,8,8,1,0,36,9,0,-1,,0,816,0,15511,0,410,0,0,0,0,0,13120,0,0,0,272,4920,1640 +122940adaf1f97a0,memcpyDtoA,47.584,3,,,,,,,,,,,0,0,1048576,0 +122940adaf206da0,_Z29kernel_levelines_texture_smemPjjjj,2102.98,4,0.5,64,64,6357090,8,8,1,0,308,18,0,-1,,0,47606,10,731993,66846,410,0,0,0,0,0,12815,0,0,0,272,1165192,2643 +122940adaf408ec0,memcpyDtoA,47.808,4,,,,,,,,,,,0,0,1048576,0 +122940adaf4165a0,_Z30kernel_estim_next_step_texturePjjjj,479.456,4,0.5,64,64,7602276,8,8,1,0,36,9,0,-1,,0,816,0,15511,0,409,0,0,0,0,0,13088,0,0,0,272,4908,1636 +122940adaf48c0e0,memcpyDtoA,47.648,4,,,,,,,,,,,0,0,1048576,0 +122940adaf499720,_Z29kernel_levelines_texture_smemPjjjj,2106.5,3,0.5,64,64,7798900,8,8,1,0,308,18,0,-1,,0,47434,12,729319,66968,410,0,0,0,0,0,12802,0,0,0,271,1163817,2749 +122940adaf69c5e0,memcpyDtoA,47.648,4,,,,,,,,,,,0,0,1048576,0 +122940adaf6a9c20,_Z30kernel_estim_next_step_texturePjjjj,484.128,4,0.5,64,64,7274600,8,8,1,0,36,9,0,-1,,0,816,0,15511,0,409,0,0,0,0,0,13088,0,0,0,272,4908,1636 +122940adaf720980,memcpyDtoA,47.584,3,,,,,,,,,,,0,0,1048576,0 +122940adaf72df80,_Z29kernel_levelines_texture_smemPjjjj,2115.81,3,0.5,64,64,6553710,8,8,1,0,308,18,0,-1,,0,47434,10,729328,66761,410,0,0,0,0,0,12804,0,0,0,271,1164886,2588 +122940adaf9332c0,memcpyDtoA,47.552,3,,,,,,,,,,,0,0,1048576,0 +122940adaf9408c0,_Z30kernel_estim_next_step_texturePjjjj,481.312,4,0.5,64,64,6488169,8,8,1,0,36,9,0,-1,,0,822,0,15624,0,410,0,0,0,0,0,13120,0,0,0,274,4920,1640 +122940adaf9b6b40,memcpyDtoA,47.648,4,,,,,,,,,,,0,0,1048576,0 +122940adaf9c41a0,_Z29kernel_levelines_texture_smemPjjjj,2109.15,4,0.5,64,64,7274605,8,8,1,0,308,18,0,-1,,0,47256,10,726617,66445,409,0,0,0,0,0,12800,0,0,0,270,1163404,2626 +122940adafbc7ac0,memcpyDtoA,47.68,3,,,,,,,,,,,0,0,1048576,0 +122940adafbd5120,_Z30kernel_estim_next_step_texturePjjjj,477.376,4,0.5,64,64,7733327,8,8,1,0,36,9,0,-1,,0,822,0,15624,0,410,0,0,0,0,0,13120,0,0,0,274,4920,1640 +122940adafc4a420,memcpyDtoA,47.584,4,,,,,,,,,,,0,0,1048576,0 +122940adafc57a20,_Z29kernel_levelines_texture_smemPjjjj,2113.09,4,0.5,64,64,2097253,8,8,1,0,308,18,0,-1,,0,47256,10,726618,66738,409,0,0,0,0,0,12788,0,0,0,270,1163359,2671 +122940adafe5c2e0,memcpyDtoA,47.552,4,,,,,,,,,,,0,0,1048576,0 +122940adafe698c0,_Z30kernel_estim_next_step_texturePjjjj,476.672,3,0.5,64,64,7209065,8,8,1,0,36,9,0,-1,,0,822,0,15624,0,410,0,0,0,0,0,13120,0,0,0,274,4920,1640 +122940adafede940,memcpyDtoA,47.616,4,,,,,,,,,,,0,0,1048576,0 +122940adafeebf60,_Z29kernel_levelines_texture_smemPjjjj,2110.3,4,0.5,64,64,6619245,8,8,1,0,308,18,0,-1,,0,47256,10,726610,66368,410,0,0,0,0,0,12815,0,0,0,270,1165183,2652 +122940adb00efd00,memcpyDtoA,47.552,3,,,,,,,,,,,0,0,1048576,0 +122940adb00fd300,_Z30kernel_estim_next_step_texturePjjjj,468.864,4,0.5,64,64,7536672,8,8,1,0,36,9,0,-1,,0,822,0,15624,0,409,0,0,0,0,0,13088,0,0,0,274,4908,1636 +122940adb01704c0,memcpyDtoA,47.552,3,,,,,,,,,,,0,0,1048576,0 +122940adb017dae0,_Z29kernel_levelines_texture_smemPjjjj,2115.36,4,0.5,64,64,2097252,8,8,1,0,308,18,0,-1,,0,47256,10,726611,66084,410,0,0,0,0,0,12802,0,0,0,270,1163872,2694 +122940adb0382c40,memcpyDtoA,47.584,3,,,,,,,,,,,0,0,1048576,0 +122940adb0390220,_Z30kernel_estim_next_step_texturePjjjj,473.44,4,0.5,64,64,7274614,8,8,1,0,36,9,0,-1,,0,822,0,15626,0,409,0,0,0,0,0,13088,0,0,0,274,4908,1636 +122940adb04045c0,memcpyDtoA,47.584,3,,,,,,,,,,,0,0,1048576,0 +122940adb0411bc0,_Z29kernel_levelines_texture_smemPjjjj,2116.22,4,0.5,64,64,6357024,8,8,1,0,308,18,0,-1,,0,47256,10,726610,66314,410,0,0,0,0,0,12804,0,0,0,270,1164898,2576 +122940adb0617080,memcpyDtoA,47.552,4,,,,,,,,,,,0,0,1048576,0 +122940adb0624680,_Z30kernel_estim_next_step_texturePjjjj,466.592,4,0.5,64,64,7143456,8,8,1,0,36,9,0,-1,,0,822,0,15626,0,410,0,0,0,0,0,13120,0,0,0,274,4920,1640 +122940adb0696f60,memcpyDtoA,47.648,3,,,,,,,,,,,0,0,1048576,0 +122940adb06a45a0,_Z29kernel_levelines_texture_smemPjjjj,2121.09,4,0.5,64,64,6553701,8,8,1,0,308,18,0,-1,,0,47256,10,726613,66552,409,0,0,0,0,0,12800,0,0,0,270,1163359,2671 +122940adb08aad80,memcpyDtoA,47.616,4,,,,,,,,,,,0,0,1048576,0 +122940adb08b83a0,_Z30kernel_estim_next_step_texturePjjjj,465.152,4,0.5,64,64,7733359,8,8,1,0,36,9,0,-1,,0,822,0,15627,0,410,0,0,0,0,0,13120,0,0,0,274,4920,1640 +122940adb092a700,memcpyDtoA,47.552,4,,,,,,,,,,,0,0,1048576,0 +122940adb0937d40,_Z29kernel_levelines_texture_smemPjjjj,2106.34,4,0.5,64,64,2097260,8,8,1,0,308,18,0,-1,,0,47256,10,726614,66553,409,0,0,0,0,0,12788,0,0,0,270,1163415,2615 +122940adb0b3ab60,memcpyDtoA,47.552,4,,,,,,,,,,,0,0,1048576,0 +122940adb0b48140,_Z30kernel_estim_next_step_texturePjjjj,476.896,4,0.5,64,64,7143525,8,8,1,0,36,9,0,-1,,0,822,0,15626,0,410,0,0,0,0,0,13120,0,0,0,274,4920,1640 +122940adb0bbd2a0,memcpyDtoA,47.552,4,,,,,,,,,,,0,0,1048576,0 +122940adb0bca8a0,_Z29kernel_levelines_texture_smemPjjjj,2109.22,4,0.5,64,64,7274598,8,8,1,0,308,18,0,-1,,0,47606,13,731993,67183,410,0,0,0,0,0,12815,0,0,0,272,1165195,2640 +122940adb0dce280,memcpyDtoA,47.552,4,,,,,,,,,,,0,0,1048576,0 +122940adb0ddb880,_Z30kernel_estim_next_step_texturePjjjj,483.456,3,0.5,64,64,6619235,8,8,1,0,36,9,0,-1,,0,816,0,15511,0,409,0,0,0,0,0,13088,0,0,0,272,4908,1636 +122940adb0e8f400,memcpyAtoH,11.52,29,,,,,,,,,,,0,0,576,0 +122940adb0e98720,memcpyDtoH,191.68,736,,,,,,,,,,,0,0,1048576,0 diff --git a/lniv_Session21_Context_0.csv b/lniv_Session21_Context_0.csv new file mode 100644 index 0000000..5f60f58 --- /dev/null +++ b/lniv_Session21_Context_0.csv @@ -0,0 +1,72 @@ +# CUDA_PROFILE_LOG_VERSION 2.0 +# CUDA_PROFILE_CSV 1 +# TIMESTAMPFACTOR fffff6ef91ef4898 +# CUDA_DEVICE 0 Tesla C1060 +gpustarttimestamp,method,gputime,cputime,occupancy,gridSizeX,gridSizeY,gridSizeZ,blockSizeX,blockSizeY,blockSizeZ,dynSmemPerBlock,staSmemPerBlock,registerPerThread,streamID,localblocksize,memTransferSize,memtransferhostmemtype,branch,divergent_branch,instructions,warp_serialize,cta_launched,local_load,local_store,gld_32b,gld_64b,gld_128b,gst_32b,gst_64b,gst_128b,gld_request,gst_request,tex_cache_hit,tex_cache_miss +1229419bcf456a00,memcpyHtoA,177.728,334,,,,,,,,,,,0,0,1048576,0 +1229419bcf4bf660,_Z19kernel_calcul_pathsP4int2j,43.392,12,0.031,1,1,12973520,1,1,1,0,28,11,0,-1,,0,168,0,1587,0,1,0,0,54,0,0,72,0,0,54,72,0,0 +1229419bcf4caa20,memcpyDtoA,4.32,6,,,,,,,,,,,0,0,576,0 +1229419bcf4cf760,_Z23kernel_neutre_img2estimPjjj,440.768,9,0.5,64,64,-2147483648,8,8,1,0,32,5,0,-1,,0,0,0,5448,0,409,0,0,0,0,0,13088,0,0,0,272,2454,818 +1229419bcf544f00,memcpyAtoD,50.4,6,,,,,,,,,,,0,0,1048576,0 +1229419bcf551e20,memcpyDtoA,47.52,3,,,,,,,,,,,0,0,1048576,0 +1229419bcf562e80,_Z29kernel_levelines_texture_smemPjjjj,2074.66,9,0.5,64,64,8916960,8,8,1,0,36,18,0,-1,,0,47606,11,703977,0,410,0,0,0,0,0,12802,0,0,0,272,1173148,4304 +1229419bcf75e0e0,memcpyDtoA,47.744,4,,,,,,,,,,,0,0,1048576,0 +1229419bcf76d700,_Z30kernel_estim_next_step_texturePjjjj,475.36,6,0.5,64,64,0,8,8,1,0,36,9,0,-1,,0,816,0,15511,0,409,0,0,0,0,0,13088,0,0,0,272,4908,1636 +1229419bcf7e2220,memcpyDtoA,47.68,4,,,,,,,,,,,0,0,1048576,0 +1229419bcf7ef860,_Z29kernel_levelines_texture_smemPjjjj,2052.22,4,0.5,64,64,0,8,8,1,0,36,18,0,-1,,0,47606,12,703981,0,410,0,0,0,0,0,12804,0,0,0,272,1164805,2669 +1229419bcf9e5320,memcpyDtoA,47.552,3,,,,,,,,,,,0,0,1048576,0 +1229419bcf9f2900,_Z30kernel_estim_next_step_texturePjjjj,457.632,4,0.5,64,64,0,8,8,1,0,36,9,0,-1,,0,816,0,15513,0,410,0,0,0,0,0,13120,0,0,0,272,4920,1640 +1229419bcfa62f40,memcpyDtoA,47.584,3,,,,,,,,,,,0,0,1048576,0 +1229419bcfa705a0,_Z29kernel_levelines_texture_smemPjjjj,2059.81,4,0.5,64,64,8466560,8,8,1,0,36,18,0,-1,,0,47606,10,703983,0,409,0,0,0,0,0,12800,0,0,0,272,1163425,2605 +1229419bcfc67e00,memcpyDtoA,47.584,3,,,,,,,,,,,0,0,1048576,0 +1229419bcfc753e0,_Z30kernel_estim_next_step_texturePjjjj,484.128,3,0.5,64,64,10922,8,8,1,0,36,9,0,-1,,0,816,0,15511,0,410,0,0,0,0,0,13120,0,0,0,272,4920,1640 +1229419bcfcec140,memcpyDtoA,47.584,3,,,,,,,,,,,0,0,1048576,0 +1229419bcfcf9720,_Z29kernel_levelines_texture_smemPjjjj,2054.18,4,0.5,64,64,0,8,8,1,0,36,18,0,-1,,0,47606,12,703989,0,409,0,0,0,0,0,12788,0,0,0,272,1163336,2694 +1229419bcfeef9a0,memcpyDtoA,47.616,4,,,,,,,,,,,0,0,1048576,0 +1229419bcfefcfe0,_Z30kernel_estim_next_step_texturePjjjj,469.376,4,0.5,64,64,0,8,8,1,0,36,9,0,-1,,0,816,0,15511,0,410,0,0,0,0,0,13120,0,0,0,272,4920,1640 +1229419bcff703a0,memcpyDtoA,47.584,3,,,,,,,,,,,0,0,1048576,0 +1229419bcff7d9a0,_Z29kernel_levelines_texture_smemPjjjj,2055.1,4,0.5,64,64,0,8,8,1,0,36,18,0,-1,,0,47606,10,703984,0,410,0,0,0,0,0,12815,0,0,0,272,1165156,2679 +1229419bd0173fa0,memcpyDtoA,47.584,3,,,,,,,,,,,0,0,1048576,0 +1229419bd0181600,_Z30kernel_estim_next_step_texturePjjjj,477.216,9,0.5,64,64,0,8,8,1,0,36,9,0,-1,,0,816,0,15510,0,409,0,0,0,0,0,13088,0,0,0,272,4908,1636 +1229419bd01f6840,memcpyDtoA,47.712,4,,,,,,,,,,,0,0,1048576,0 +1229419bd0203ec0,_Z29kernel_levelines_texture_smemPjjjj,2056.77,4,0.5,64,64,0,8,8,1,0,36,18,0,-1,,0,47434,12,701415,0,410,0,0,0,0,0,12802,0,0,0,271,1163891,2675 +1229419bd03fab40,memcpyDtoA,47.552,4,,,,,,,,,,,0,0,1048576,0 +1229419bd04081a0,_Z30kernel_estim_next_step_texturePjjjj,484.992,4,0.5,64,64,0,8,8,1,0,36,9,0,-1,,0,816,0,15512,0,409,0,0,0,0,0,13088,0,0,0,272,4908,1636 +1229419bd047f280,memcpyDtoA,47.648,3,,,,,,,,,,,0,0,1048576,0 +1229419bd048c8e0,_Z29kernel_levelines_texture_smemPjjjj,2049.92,4,0.5,64,64,0,8,8,1,0,36,18,0,-1,,0,47434,10,701416,0,410,0,0,0,0,0,12804,0,0,0,271,1164883,2591 +1229419bd0681ac0,memcpyDtoA,47.584,3,,,,,,,,,,,0,0,1048576,0 +1229419bd068f0e0,_Z30kernel_estim_next_step_texturePjjjj,486.752,4,0.5,64,64,1072693248,8,8,1,0,36,9,0,-1,,0,822,0,15624,0,410,0,0,0,0,0,13120,0,0,0,274,4920,1640 +1229419bd07068a0,memcpyDtoA,47.584,4,,,,,,,,,,,0,0,1048576,0 +1229419bd0713e80,_Z29kernel_levelines_texture_smemPjjjj,2068.54,4,0.5,64,64,7143535,8,8,1,0,36,18,0,-1,,0,47256,10,698805,0,409,0,0,0,0,0,12800,0,0,0,270,1163428,2602 +1229419bd090d900,memcpyDtoA,47.68,4,,,,,,,,,,,0,0,1048576,0 +1229419bd091af60,_Z30kernel_estim_next_step_texturePjjjj,489.152,3,0.5,64,64,1072693248,8,8,1,0,36,9,0,-1,,0,822,0,15625,0,410,0,0,0,0,0,13120,0,0,0,274,4920,1640 +1229419bd09930c0,memcpyDtoA,47.648,4,,,,,,,,,,,0,0,1048576,0 +1229419bd09a0700,_Z29kernel_levelines_texture_smemPjjjj,2058.94,3,0.5,64,64,0,8,8,1,0,36,18,0,-1,,0,47256,10,698807,0,409,0,0,0,0,0,12788,0,0,0,270,1163396,2634 +1229419bd0b97c40,memcpyDtoA,47.52,3,,,,,,,,,,,0,0,1048576,0 +1229419bd0ba5220,_Z30kernel_estim_next_step_texturePjjjj,479.776,4,0.5,64,64,1072693248,8,8,1,0,36,9,0,-1,,0,822,0,15624,0,410,0,0,0,0,0,13120,0,0,0,274,4920,1640 +1229419bd0c1aea0,memcpyDtoA,47.584,3,,,,,,,,,,,0,0,1048576,0 +1229419bd0c284a0,_Z29kernel_levelines_texture_smemPjjjj,2055.78,4,0.5,64,64,0,8,8,1,0,36,18,0,-1,,0,47256,10,698809,0,410,0,0,0,0,0,12815,0,0,0,270,1165209,2626 +1229419bd0e1ed60,memcpyDtoA,47.712,3,,,,,,,,,,,0,0,1048576,0 +1229419bd0e2c3e0,_Z30kernel_estim_next_step_texturePjjjj,471.392,4,0.5,64,64,0,8,8,1,0,36,9,0,-1,,0,822,0,15624,0,409,0,0,0,0,0,13088,0,0,0,274,4908,1636 +1229419bd0e9ff80,memcpyDtoA,47.808,3,,,,,,,,,,,0,0,1048576,0 +1229419bd0ead6a0,_Z29kernel_levelines_texture_smemPjjjj,2047.3,4,0.5,64,64,0,8,8,1,0,36,18,0,-1,,0,47256,10,698801,0,410,0,0,0,0,0,12802,0,0,0,270,1163935,2631 +1229419bd10a1e20,memcpyDtoA,47.552,4,,,,,,,,,,,0,0,1048576,0 +1229419bd10af420,_Z30kernel_estim_next_step_texturePjjjj,476.864,3,0.5,64,64,0,8,8,1,0,36,9,0,-1,,0,822,0,15627,0,409,0,0,0,0,0,13088,0,0,0,274,4908,1636 +1229419bd1124540,memcpyDtoA,47.648,4,,,,,,,,,,,0,0,1048576,0 +1229419bd1131ba0,_Z29kernel_levelines_texture_smemPjjjj,2057.82,4,0.5,64,64,-1631,8,8,1,0,36,18,0,-1,,0,47256,10,698807,0,410,0,0,0,0,0,12804,0,0,0,270,1164939,2535 +1229419bd1328c60,memcpyDtoA,47.552,3,,,,,,,,,,,0,0,1048576,0 +1229419bd1336240,_Z30kernel_estim_next_step_texturePjjjj,475.936,4,0.5,64,64,0,8,8,1,0,36,9,0,-1,,0,822,0,15626,0,410,0,0,0,0,0,13120,0,0,0,274,4920,1640 +1229419bd13aafa0,memcpyDtoA,47.584,3,,,,,,,,,,,0,0,1048576,0 +1229419bd13b85a0,_Z29kernel_levelines_texture_smemPjjjj,2057.95,4,0.5,64,64,0,8,8,1,0,36,18,0,-1,,0,47256,10,698806,0,409,0,0,0,0,0,12800,0,0,0,270,1163422,2608 +1229419bd15af6e0,memcpyDtoA,47.616,3,,,,,,,,,,,0,0,1048576,0 +1229419bd15bcd60,_Z30kernel_estim_next_step_texturePjjjj,493.888,4,0.5,64,64,856,8,8,1,0,36,9,0,-1,,0,822,0,15626,0,410,0,0,0,0,0,13120,0,0,0,274,4920,1640 +1229419bd16360e0,memcpyDtoA,47.712,3,,,,,,,,,,,0,0,1048576,0 +1229419bd1643760,_Z29kernel_levelines_texture_smemPjjjj,2053.98,3,0.5,64,64,12758580,8,8,1,0,36,18,0,-1,,0,47256,10,698810,0,409,0,0,0,0,0,12788,0,0,0,270,1163489,2541 +1229419bd1839940,memcpyDtoA,47.584,4,,,,,,,,,,,0,0,1048576,0 +1229419bd1846f40,_Z30kernel_estim_next_step_texturePjjjj,474.208,3,0.5,64,64,32767,8,8,1,0,36,9,0,-1,,0,822,0,15628,0,410,0,0,0,0,0,13120,0,0,0,274,4920,1640 +1229419bd18bb600,memcpyDtoA,47.648,4,,,,,,,,,,,0,0,1048576,0 +1229419bd18c8c40,_Z29kernel_levelines_texture_smemPjjjj,2065.76,4,0.5,64,64,2,8,8,1,0,36,18,0,-1,,0,47606,13,703985,0,410,0,0,0,0,0,12815,0,0,0,272,1165162,2673 +1229419bd1ac1be0,memcpyDtoA,47.552,3,,,,,,,,,,,0,0,1048576,0 +1229419bd1acf1e0,_Z30kernel_estim_next_step_texturePjjjj,465.952,3,0.5,64,64,0,8,8,1,0,36,9,0,-1,,0,816,0,15510,0,409,0,0,0,0,0,13088,0,0,0,272,4908,1636 +1229419bd1b7e360,memcpyAtoH,11.52,30,,,,,,,,,,,0,0,576,0 +1229419bd1b87d00,memcpyDtoH,191.232,736,,,,,,,,,,,0,0,1048576,0 diff --git a/lniv_Session22_Context_0.csv b/lniv_Session22_Context_0.csv new file mode 100644 index 0000000..fe8eba7 --- /dev/null +++ b/lniv_Session22_Context_0.csv @@ -0,0 +1,72 @@ +# CUDA_PROFILE_LOG_VERSION 2.0 +# CUDA_PROFILE_CSV 1 +# TIMESTAMPFACTOR fffff6ef92065818 +# CUDA_DEVICE 0 Tesla C1060 +gpustarttimestamp,method,gputime,cputime,occupancy,gridSizeX,gridSizeY,gridSizeZ,blockSizeX,blockSizeY,blockSizeZ,dynSmemPerBlock,staSmemPerBlock,registerPerThread,streamID,localblocksize,memTransferSize,memtransferhostmemtype,branch,divergent_branch,instructions,warp_serialize,cta_launched,local_load,local_store,gld_32b,gld_64b,gld_128b,gst_32b,gst_64b,gst_128b,gld_request,gst_request,tex_cache_hit,tex_cache_miss +122941f213dd9800,memcpyHtoA,177.792,336,,,,,,,,,,,0,0,1048576,0 +122941f213e40de0,_Z19kernel_calcul_pathsP4int2j,43.2,12,0.031,1,1,-1386402264,1,1,1,0,28,11,0,-1,,0,168,0,1587,0,1,0,0,54,0,0,72,0,0,54,72,0,0 +122941f213e4c140,memcpyDtoA,4.32,6,,,,,,,,,,,0,0,576,0 +122941f213e50ea0,_Z23kernel_neutre_img2estimPjjj,446.944,9,0.5,64,64,0,8,8,1,0,32,5,0,-1,,0,0,0,5448,0,409,0,0,0,0,0,13088,0,0,0,272,2454,818 +122941f213ec8740,memcpyAtoD,50.496,6,,,,,,,,,,,0,0,1048576,0 +122941f213ed56c0,memcpyDtoA,47.456,4,,,,,,,,,,,0,0,1048576,0 +122941f213ee6700,_Z29kernel_levelines_texture_smemPjjjj,2749.79,9,0.5,64,64,0,8,8,1,0,292,20,0,-1,,0,47606,11,743152,187680,410,0,0,0,0,0,12802,0,0,0,272,1571115,7958 +122941f2141866a0,memcpyDtoA,47.84,4,,,,,,,,,,,0,0,1048576,0 +122941f214195d60,_Z30kernel_estim_next_step_texturePjjjj,472.736,6,0.5,64,64,0,8,8,1,0,36,9,0,-1,,0,816,0,15511,0,409,0,0,0,0,0,13088,0,0,0,272,4908,1636 +122941f214209e60,memcpyDtoA,47.584,3,,,,,,,,,,,0,0,1048576,0 +122941f214217440,_Z29kernel_levelines_texture_smemPjjjj,2289.44,4,0.5,64,64,0,8,8,1,0,292,20,0,-1,,0,47606,12,743153,152442,410,0,0,0,0,0,12804,0,0,0,272,1256596,17308 +122941f214446dc0,memcpyDtoA,47.552,4,,,,,,,,,,,0,0,1048576,0 +122941f214454400,_Z30kernel_estim_next_step_texturePjjjj,480.32,4,0.5,64,64,0,8,8,1,0,36,9,0,-1,,0,816,0,15511,0,410,0,0,0,0,0,13120,0,0,0,272,4920,1640 +122941f2144ca2a0,memcpyDtoA,47.616,4,,,,,,,,,,,0,0,1048576,0 +122941f2144d78c0,_Z29kernel_levelines_texture_smemPjjjj,2174.62,4,0.5,64,64,0,8,8,1,0,292,20,0,-1,,0,47606,10,743148,144198,409,0,0,0,0,0,12800,0,0,0,272,1174004,1661 +122941f2146eb1a0,memcpyDtoA,47.584,3,,,,,,,,,,,0,0,1048576,0 +122941f2146f8780,_Z30kernel_estim_next_step_texturePjjjj,478.304,4,0.5,64,64,0,8,8,1,0,36,9,0,-1,,0,816,0,15511,0,410,0,0,0,0,0,13120,0,0,0,272,4920,1640 +122941f21476de20,memcpyDtoA,47.584,3,,,,,,,,,,,0,0,1048576,0 +122941f21477b420,_Z29kernel_levelines_texture_smemPjjjj,2169.34,4,0.5,64,64,0,8,8,1,0,292,20,0,-1,,0,47606,12,743151,144449,409,0,0,0,0,0,12788,0,0,0,272,1172650,1348 +122941f21498d8c0,memcpyDtoA,47.52,3,,,,,,,,,,,0,0,1048576,0 +122941f21499ae80,_Z30kernel_estim_next_step_texturePjjjj,482.432,3,0.5,64,64,0,8,8,1,0,36,9,0,-1,,0,816,0,15512,0,410,0,0,0,0,0,13120,0,0,0,272,4920,1640 +122941f214a11560,memcpyDtoA,47.488,3,,,,,,,,,,,0,0,1048576,0 +122941f214a1eb00,_Z29kernel_levelines_texture_smemPjjjj,2166.24,4,0.5,64,64,0,8,8,1,0,292,20,0,-1,,0,47606,10,743150,144061,410,0,0,0,0,0,12815,0,0,0,272,1171928,1205 +122941f214c30340,memcpyDtoA,47.552,3,,,,,,,,,,,0,0,1048576,0 +122941f214c3d900,_Z30kernel_estim_next_step_texturePjjjj,484.064,4,0.5,64,64,0,8,8,1,0,36,9,0,-1,,0,816,0,15510,0,409,0,0,0,0,0,13088,0,0,0,272,4908,1636 +122941f214cb4640,memcpyDtoA,47.648,3,,,,,,,,,,,0,0,1048576,0 +122941f214cc1ca0,_Z29kernel_levelines_texture_smemPjjjj,2165.44,4,0.5,64,64,0,8,8,1,0,292,20,0,-1,,0,47434,12,740447,143891,410,0,0,0,0,0,12802,0,0,0,271,1169458,1131 +122941f214ed31c0,memcpyDtoA,47.616,3,,,,,,,,,,,0,0,1048576,0 +122941f214ee0840,_Z30kernel_estim_next_step_texturePjjjj,475.104,3,0.5,64,64,0,8,8,1,0,36,9,0,-1,,0,816,0,15510,0,409,0,0,0,0,0,13088,0,0,0,272,4908,1636 +122941f214f55260,memcpyDtoA,47.584,3,,,,,,,,,,,0,0,1048576,0 +122941f214f62840,_Z29kernel_levelines_texture_smemPjjjj,2169.92,3,0.5,64,64,19,8,8,1,0,292,20,0,-1,,0,47434,10,740437,144692,410,0,0,0,0,0,12804,0,0,0,271,1171196,1166 +122941f215174f40,memcpyDtoA,47.552,3,,,,,,,,,,,0,0,1048576,0 +122941f215182520,_Z30kernel_estim_next_step_texturePjjjj,481.824,4,0.5,64,64,0,8,8,1,0,36,9,0,-1,,0,822,0,15624,0,410,0,0,0,0,0,13120,0,0,0,274,4920,1640 +122941f2151f8980,memcpyDtoA,47.744,3,,,,,,,,,,,0,0,1048576,0 +122941f215206020,_Z29kernel_levelines_texture_smemPjjjj,2174.78,3,0.5,64,64,0,8,8,1,0,292,20,0,-1,,0,47256,10,737697,142626,409,0,0,0,0,0,12800,0,0,0,270,1171005,1147 +122941f2154199c0,memcpyDtoA,47.584,4,,,,,,,,,,,0,0,1048576,0 +122941f215427060,_Z30kernel_estim_next_step_texturePjjjj,473.44,3,0.5,64,64,0,8,8,1,0,36,9,0,-1,,0,822,0,15624,0,410,0,0,0,0,0,13120,0,0,0,274,4920,1640 +122941f21549b400,memcpyDtoA,47.584,3,,,,,,,,,,,0,0,1048576,0 +122941f2154a89e0,_Z29kernel_levelines_texture_smemPjjjj,2172.13,4,0.5,64,64,0,8,8,1,0,292,20,0,-1,,0,47256,10,737693,142582,409,0,0,0,0,0,12788,0,0,0,270,1170316,1122 +122941f2156bb900,memcpyDtoA,47.584,3,,,,,,,,,,,0,0,1048576,0 +122941f2156c8f00,_Z30kernel_estim_next_step_texturePjjjj,478.72,4,0.5,64,64,512,8,8,1,0,36,9,0,-1,,0,822,0,15624,0,410,0,0,0,0,0,13120,0,0,0,274,4920,1640 +122941f21573e740,memcpyDtoA,47.584,3,,,,,,,,,,,0,0,1048576,0 +122941f21574bda0,_Z29kernel_levelines_texture_smemPjjjj,2175.81,4,0.5,64,64,0,8,8,1,0,292,20,0,-1,,0,47256,10,737683,142961,410,0,0,0,0,0,12815,0,0,0,270,1172017,1158 +122941f21595fb20,memcpyDtoA,47.584,4,,,,,,,,,,,0,0,1048576,0 +122941f21596d120,_Z30kernel_estim_next_step_texturePjjjj,484.352,4,0.5,64,64,0,8,8,1,0,36,9,0,-1,,0,822,0,15624,0,409,0,0,0,0,0,13088,0,0,0,274,4908,1636 +122941f2159e3f80,memcpyDtoA,47.552,3,,,,,,,,,,,0,0,1048576,0 +122941f2159f1580,_Z29kernel_levelines_texture_smemPjjjj,2171.97,4,0.5,64,64,0,8,8,1,0,292,20,0,-1,,0,47256,10,737684,143028,410,0,0,0,0,0,12802,0,0,0,270,1170115,1118 +122941f215c04400,memcpyDtoA,47.584,4,,,,,,,,,,,0,0,1048576,0 +122941f215c11a40,_Z30kernel_estim_next_step_texturePjjjj,473.408,3,0.5,64,64,0,8,8,1,0,36,9,0,-1,,0,822,0,15627,0,409,0,0,0,0,0,13088,0,0,0,274,4908,1636 +122941f215c85dc0,memcpyDtoA,47.648,4,,,,,,,,,,,0,0,1048576,0 +122941f215c93420,_Z29kernel_levelines_texture_smemPjjjj,2178.5,4,0.5,64,64,0,8,8,1,0,292,20,0,-1,,0,47256,10,737687,143703,410,0,0,0,0,0,12804,0,0,0,270,1171501,1189 +122941f215ea7c20,memcpyDtoA,47.552,3,,,,,,,,,,,0,0,1048576,0 +122941f215eb5200,_Z30kernel_estim_next_step_texturePjjjj,475.584,4,0.5,64,64,0,8,8,1,0,36,9,0,-1,,0,822,0,15626,0,410,0,0,0,0,0,13120,0,0,0,274,4920,1640 +122941f215f29e00,memcpyDtoA,47.68,3,,,,,,,,,,,0,0,1048576,0 +122941f215f37460,_Z29kernel_levelines_texture_smemPjjjj,2162.05,3,0.5,64,64,0,8,8,1,0,292,20,0,-1,,0,47256,10,737680,142311,409,0,0,0,0,0,12800,0,0,0,270,1170773,1141 +122941f216147c20,memcpyDtoA,47.584,4,,,,,,,,,,,0,0,1048576,0 +122941f216155220,_Z30kernel_estim_next_step_texturePjjjj,473.152,3,0.5,64,64,0,8,8,1,0,36,9,0,-1,,0,822,0,15626,0,410,0,0,0,0,0,13120,0,0,0,274,4920,1640 +122941f2161c94a0,memcpyDtoA,47.552,4,,,,,,,,,,,0,0,1048576,0 +122941f2161d6a80,_Z29kernel_levelines_texture_smemPjjjj,2169.7,4,0.5,64,64,0,8,8,1,0,292,20,0,-1,,0,47256,10,737687,142117,409,0,0,0,0,0,12788,0,0,0,270,1169968,1132 +122941f2163e9020,memcpyDtoA,47.616,3,,,,,,,,,,,0,0,1048576,0 +122941f2163f66c0,_Z30kernel_estim_next_step_texturePjjjj,491.52,4,0.5,64,64,0,8,8,1,0,36,9,0,-1,,0,822,0,15626,0,410,0,0,0,0,0,13120,0,0,0,274,4920,1640 +122941f21646f140,memcpyDtoA,47.552,3,,,,,,,,,,,0,0,1048576,0 +122941f21647c740,_Z29kernel_levelines_texture_smemPjjjj,2164.67,4,0.5,64,64,0,8,8,1,0,292,20,0,-1,,0,47606,13,743152,142819,410,0,0,0,0,0,12815,0,0,0,272,1171022,1143 +122941f21668d940,memcpyDtoA,47.648,4,,,,,,,,,,,0,0,1048576,0 +122941f21669af80,_Z30kernel_estim_next_step_texturePjjjj,486.816,4,0.5,64,64,0,8,8,1,0,36,9,0,-1,,0,816,0,15511,0,409,0,0,0,0,0,13088,0,0,0,272,4908,1636 +122941f21674db40,memcpyAtoH,11.552,30,,,,,,,,,,,0,0,576,0 +122941f216756cc0,memcpyDtoH,191.712,745,,,,,,,,,,,0,0,1048576,0 diff --git a/lniv_nosmem_tex_Context_0.csv b/lniv_nosmem_tex_Context_0.csv new file mode 100644 index 0000000..733b9a7 --- /dev/null +++ b/lniv_nosmem_tex_Context_0.csv @@ -0,0 +1,72 @@ +# CUDA_PROFILE_LOG_VERSION 2.0 +# CUDA_PROFILE_CSV 1 +# TIMESTAMPFACTOR fffff6ef88fd8ba8 +# CUDA_DEVICE 0 Tesla C1060 +gpustarttimestamp,method,gputime,cputime,occupancy,gridSizeX,gridSizeY,gridSizeZ,blockSizeX,blockSizeY,blockSizeZ,dynSmemPerBlock,staSmemPerBlock,registerPerThread,streamID,localblocksize,memTransferSize,memtransferhostmemtype,branch,divergent_branch,instructions,warp_serialize,cta_launched,local_load,local_store,gld_32b,gld_64b,gld_128b,gst_32b,gst_64b,gst_128b,gld_request,gst_request,tex_cache_hit,tex_cache_miss +122935c55701cc60,memcpyHtoA,177.568,331,,,,,,,,,,,0,0,1048576,0 +122935c557085020,_Z19kernel_calcul_pathsP4int2j,43.168,13,0.031,1,1,11485616,1,1,1,0,28,11,0,-1,,0,168,0,1587,0,1,0,0,54,0,0,72,0,0,54,72,0,0 +122935c557090340,memcpyDtoA,4.32,5,,,,,,,,,,,0,0,576,0 +122935c5570950c0,_Z23kernel_neutre_img2estimPjjj,441.44,9,0.5,64,64,1,8,8,1,0,32,5,0,-1,,0,0,0,5448,0,409,0,0,0,0,0,13088,0,0,0,272,2454,818 +122935c55710b3a0,memcpyAtoD,50.464,6,,,,,,,,,,,0,0,1048576,0 +122935c557118300,memcpyDtoA,47.392,4,,,,,,,,,,,0,0,1048576,0 +122935c557129320,_Z24kernel_levelines_texturePjjjj,2217.66,10,0.5,64,64,0,8,8,1,0,36,18,0,-1,,0,47606,11,748312,0,410,0,0,0,0,0,12802,0,0,0,272,1198877,41827 +122935c557347440,memcpyDtoA,47.616,4,,,,,,,,,,,0,0,1048576,0 +122935c557356a00,_Z30kernel_estim_next_step_texturePjjjj,463.072,6,0.5,64,64,13,8,8,1,0,36,9,0,-1,,0,816,0,15511,0,409,0,0,0,0,0,13088,0,0,0,272,4908,1636 +122935c5573c8540,memcpyDtoA,47.52,3,,,,,,,,,,,0,0,1048576,0 +122935c5573d5b20,_Z24kernel_levelines_texturePjjjj,2217.76,4,0.5,64,64,11833200,8,8,1,0,36,18,0,-1,,0,47606,12,748315,0,410,0,0,0,0,0,12804,0,0,0,272,1198392,43464 +122935c5575f3ca0,memcpyDtoA,47.552,3,,,,,,,,,,,0,0,1048576,0 +122935c557601280,_Z30kernel_estim_next_step_texturePjjjj,471.84,4,0.5,64,64,0,8,8,1,0,36,9,0,-1,,0,816,0,15511,0,410,0,0,0,0,0,13120,0,0,0,272,4920,1640 +122935c557674fe0,memcpyDtoA,47.584,3,,,,,,,,,,,0,0,1048576,0 +122935c5576825e0,_Z24kernel_levelines_texturePjjjj,2230.08,4,0.5,64,64,0,8,8,1,0,36,18,0,-1,,0,47606,10,748312,0,409,0,0,0,0,0,12800,0,0,0,272,1195784,44536 +122935c5578a37e0,memcpyDtoA,47.584,3,,,,,,,,,,,0,0,1048576,0 +122935c5578b0de0,_Z30kernel_estim_next_step_texturePjjjj,466.176,4,0.5,64,64,0,8,8,1,0,36,9,0,-1,,0,816,0,15511,0,410,0,0,0,0,0,13120,0,0,0,272,4920,1640 +122935c557923540,memcpyDtoA,47.712,4,,,,,,,,,,,0,0,1048576,0 +122935c557930bc0,_Z24kernel_levelines_texturePjjjj,2213.15,4,0.5,64,64,0,8,8,1,0,36,18,0,-1,,0,47606,12,748313,0,409,0,0,0,0,0,12788,0,0,0,272,1198714,41606 +122935c557b4dba0,memcpyDtoA,47.616,3,,,,,,,,,,,0,0,1048576,0 +122935c557b5b1c0,_Z30kernel_estim_next_step_texturePjjjj,471.072,4,0.5,64,64,0,8,8,1,0,36,9,0,-1,,0,816,0,15511,0,410,0,0,0,0,0,13120,0,0,0,272,4920,1640 +122935c557bcec20,memcpyDtoA,47.584,3,,,,,,,,,,,0,0,1048576,0 +122935c557bdc260,_Z24kernel_levelines_texturePjjjj,2206.82,4,0.5,64,64,11460208,8,8,1,0,36,18,0,-1,,0,47606,10,748330,0,410,0,0,0,0,0,12815,0,0,0,272,1198656,43584 +122935c557df7980,memcpyDtoA,47.616,4,,,,,,,,,,,0,0,1048576,0 +122935c557e04fc0,_Z30kernel_estim_next_step_texturePjjjj,478.304,3,0.5,64,64,10922,8,8,1,0,36,9,0,-1,,0,816,0,15511,0,409,0,0,0,0,0,13088,0,0,0,272,4908,1636 +122935c557e7a6c0,memcpyDtoA,47.68,4,,,,,,,,,,,0,0,1048576,0 +122935c557e87d40,_Z24kernel_levelines_texturePjjjj,2228.32,4,0.5,64,64,32,8,8,1,0,36,18,0,-1,,0,47434,12,745579,0,410,0,0,0,0,0,12802,0,0,0,271,1198277,42427 +122935c5580a87e0,memcpyDtoA,47.552,4,,,,,,,,,,,0,0,1048576,0 +122935c5580b5de0,_Z30kernel_estim_next_step_texturePjjjj,467.04,4,0.5,64,64,0,8,8,1,0,36,9,0,-1,,0,816,0,15511,0,409,0,0,0,0,0,13088,0,0,0,272,4908,1636 +122935c5581288e0,memcpyDtoA,47.552,4,,,,,,,,,,,0,0,1048576,0 +122935c558135ea0,_Z24kernel_levelines_texturePjjjj,2214.69,4,0.5,64,64,-1053464,8,8,1,0,36,18,0,-1,,0,47434,10,745588,0,410,0,0,0,0,0,12804,0,0,0,271,1199501,42355 +122935c558353400,memcpyDtoA,47.648,3,,,,,,,,,,,0,0,1048576,0 +122935c558360a40,_Z30kernel_estim_next_step_texturePjjjj,491.712,3,0.5,64,64,0,8,8,1,0,36,9,0,-1,,0,822,0,15624,0,410,0,0,0,0,0,13120,0,0,0,274,4920,1640 +122935c5583d9560,memcpyDtoA,47.552,3,,,,,,,,,,,0,0,1048576,0 +122935c5583e6b60,_Z24kernel_levelines_texturePjjjj,2220.61,4,0.5,64,64,11831600,8,8,1,0,36,18,0,-1,,0,47256,10,742810,0,409,0,0,0,0,0,12800,0,0,0,270,1195661,44659 +122935c558605840,memcpyDtoA,47.648,3,,,,,,,,,,,0,0,1048576,0 +122935c558612e80,_Z30kernel_estim_next_step_texturePjjjj,472.992,3,0.5,64,64,256,8,8,1,0,36,9,0,-1,,0,822,0,15625,0,410,0,0,0,0,0,13120,0,0,0,274,4920,1640 +122935c558687060,memcpyDtoA,47.584,3,,,,,,,,,,,0,0,1048576,0 +122935c558694680,_Z24kernel_levelines_texturePjjjj,2218.37,4,0.5,64,64,8373664,8,8,1,0,36,18,0,-1,,0,47256,10,742813,0,409,0,0,0,0,0,12788,0,0,0,270,1197654,42666 +122935c5588b2a60,memcpyDtoA,47.584,3,,,,,,,,,,,0,0,1048576,0 +122935c5588c0060,_Z30kernel_estim_next_step_texturePjjjj,478.496,4,0.5,64,64,0,8,8,1,0,36,9,0,-1,,0,822,0,15625,0,410,0,0,0,0,0,13120,0,0,0,274,4920,1640 +122935c5589357c0,memcpyDtoA,47.52,4,,,,,,,,,,,0,0,1048576,0 +122935c558942d80,_Z24kernel_levelines_texturePjjjj,2210.37,3,0.5,64,64,144,8,8,1,0,36,18,0,-1,,0,47256,10,742811,0,410,0,0,0,0,0,12815,0,0,0,270,1198542,43698 +122935c558b5f200,memcpyDtoA,47.552,3,,,,,,,,,,,0,0,1048576,0 +122935c558b6c800,_Z30kernel_estim_next_step_texturePjjjj,467.968,4,0.5,64,64,48,8,8,1,0,36,9,0,-1,,0,822,0,15624,0,409,0,0,0,0,0,13088,0,0,0,274,4908,1636 +122935c558bdf660,memcpyDtoA,47.712,3,,,,,,,,,,,0,0,1048576,0 +122935c558beccc0,_Z24kernel_levelines_texturePjjjj,2221.98,4,0.5,64,64,11565802,8,8,1,0,36,18,0,-1,,0,47256,10,742809,0,410,0,0,0,0,0,12802,0,0,0,270,1198356,42348 +122935c558e0bea0,memcpyDtoA,47.584,3,,,,,,,,,,,0,0,1048576,0 +122935c558e194a0,_Z30kernel_estim_next_step_texturePjjjj,468.512,4,0.5,64,64,7602289,8,8,1,0,36,9,0,-1,,0,822,0,15626,0,409,0,0,0,0,0,13088,0,0,0,274,4908,1636 +122935c558e8c500,memcpyDtoA,47.616,3,,,,,,,,,,,0,0,1048576,0 +122935c558e99b80,_Z24kernel_levelines_texturePjjjj,2216.1,4,0.5,64,64,6226030,8,8,1,0,36,18,0,-1,,0,47256,10,742809,0,410,0,0,0,0,0,12804,0,0,0,270,1199237,42619 +122935c5590b76e0,memcpyDtoA,47.552,3,,,,,,,,,,,0,0,1048576,0 +122935c5590c4cc0,_Z30kernel_estim_next_step_texturePjjjj,477.856,4,0.5,64,64,3211314,8,8,1,0,36,9,0,-1,,0,822,0,15626,0,410,0,0,0,0,0,13120,0,0,0,274,4920,1640 +122935c55913a1c0,memcpyDtoA,47.584,4,,,,,,,,,,,0,0,1048576,0 +122935c5591477a0,_Z24kernel_levelines_texturePjjjj,2213.6,4,0.5,64,64,3670069,8,8,1,0,36,18,0,-1,,0,47256,10,742809,0,409,0,0,0,0,0,12800,0,0,0,270,1196806,43514 +122935c5593648e0,memcpyDtoA,47.648,3,,,,,,,,,,,0,0,1048576,0 +122935c559371f40,_Z30kernel_estim_next_step_texturePjjjj,484.352,4,0.5,64,64,3145780,8,8,1,0,36,9,0,-1,,0,822,0,15626,0,410,0,0,0,0,0,13120,0,0,0,274,4920,1640 +122935c5593e8d80,memcpyDtoA,47.68,4,,,,,,,,,,,0,0,1048576,0 +122935c5593f6400,_Z24kernel_levelines_texturePjjjj,2214.46,4,0.5,64,64,6225971,8,8,1,0,36,18,0,-1,,0,47256,10,742810,0,409,0,0,0,0,0,12788,0,0,0,270,1197263,43057 +122935c5596138a0,memcpyDtoA,47.584,4,,,,,,,,,,,0,0,1048576,0 +122935c559620f20,_Z30kernel_estim_next_step_texturePjjjj,485.952,4,0.5,64,64,3145773,8,8,1,0,36,9,0,-1,,0,822,0,15626,0,410,0,0,0,0,0,13120,0,0,0,274,4920,1640 +122935c5596983a0,memcpyDtoA,47.712,3,,,,,,,,,,,0,0,1048576,0 +122935c5596a5a40,_Z24kernel_levelines_texturePjjjj,2219.36,4,0.5,64,64,-767361184,8,8,1,0,36,18,0,-1,,0,47606,13,748312,0,410,0,0,0,0,0,12815,0,0,0,272,1199612,42628 +122935c5598c41e0,memcpyDtoA,47.616,3,,,,,,,,,,,0,0,1048576,0 +122935c5598d1860,_Z30kernel_estim_next_step_texturePjjjj,469.504,4,0.5,64,64,48,8,8,1,0,36,9,0,-1,,0,816,0,15510,0,409,0,0,0,0,0,13088,0,0,0,272,4908,1636 +122935c559988ea0,memcpyAtoH,11.584,33,,,,,,,,,,,0,0,576,0 +122935c5599936c0,memcpyDtoH,191.04,741,,,,,,,,,,,0,0,1048576,0 diff --git a/lniv_smem2DnoCFI_Context_0.csv b/lniv_smem2DnoCFI_Context_0.csv new file mode 100644 index 0000000..764af7e --- /dev/null +++ b/lniv_smem2DnoCFI_Context_0.csv @@ -0,0 +1,72 @@ +# CUDA_PROFILE_LOG_VERSION 2.0 +# CUDA_PROFILE_CSV 1 +# TIMESTAMPFACTOR fffff6ef899f0960 +# CUDA_DEVICE 0 Tesla C1060 +gpustarttimestamp,method,gputime,cputime,occupancy,gridSizeX,gridSizeY,gridSizeZ,blockSizeX,blockSizeY,blockSizeZ,dynSmemPerBlock,staSmemPerBlock,registerPerThread,streamID,localblocksize,memTransferSize,memtransferhostmemtype,branch,divergent_branch,instructions,warp_serialize,cta_launched,local_load,local_store,gld_32b,gld_64b,gld_128b,gst_32b,gst_64b,gst_128b,gld_request,gst_request,tex_cache_hit,tex_cache_miss +122936d7f2be0c20,memcpyHtoA,177.248,331,,,,,,,,,,,0,0,1048576,0 +122936d7f2c48180,_Z19kernel_calcul_pathsP4int2j,43.2,12,0.031,1,1,12468336,1,1,1,0,28,11,0,-1,,0,168,0,1588,0,1,0,0,54,0,0,72,0,0,54,72,0,0 +122936d7f2c53480,memcpyDtoA,4.256,6,,,,,,,,,,,0,0,576,0 +122936d7f2c581a0,_Z23kernel_neutre_img2estimPjjj,432.8,8,0.5,64,64,256,8,8,1,0,32,5,0,-1,,0,0,0,5448,0,409,0,0,0,0,0,13088,0,0,0,272,2454,818 +122936d7f2ccc5a0,memcpyAtoD,50.4,6,,,,,,,,,,,0,0,1048576,0 +122936d7f2cd94c0,memcpyDtoA,47.488,4,,,,,,,,,,,0,0,1048576,0 +122936d7f2cea560,_Z29kernel_levelines_texture_smemPjjjj,3264.77,9,0.5,64,64,11454096,8,8,1,0,552,18,0,-1,,0,47606,11,788295,862664,410,0,0,0,0,0,12802,0,0,0,272,1224934,31164 +122936d7f30080a0,memcpyDtoA,47.616,3,,,,,,,,,,,0,0,1048576,0 +122936d7f30176c0,_Z30kernel_estim_next_step_texturePjjjj,483.904,6,0.5,64,64,0,8,8,1,0,36,9,0,-1,,0,816,0,15510,0,409,0,0,0,0,0,13088,0,0,0,272,4908,1636 +122936d7f308e340,memcpyDtoA,47.616,4,,,,,,,,,,,0,0,1048576,0 +122936d7f309b960,_Z29kernel_levelines_texture_smemPjjjj,3259.26,4,0.5,64,64,64,8,8,1,0,552,18,0,-1,,0,47606,12,788295,858288,410,0,0,0,0,0,12804,0,0,0,272,1220536,26811 +122936d7f33b7f20,memcpyDtoA,47.552,4,,,,,,,,,,,0,0,1048576,0 +122936d7f33c5500,_Z30kernel_estim_next_step_texturePjjjj,485.856,5,0.5,64,64,0,8,8,1,0,36,9,0,-1,,0,816,0,15511,0,410,0,0,0,0,0,13120,0,0,0,272,4920,1640 +122936d7f343c940,memcpyDtoA,47.776,4,,,,,,,,,,,0,0,1048576,0 +122936d7f344a000,_Z29kernel_levelines_texture_smemPjjjj,3269.73,3,0.5,64,64,0,8,8,1,0,552,18,0,-1,,0,47606,10,788295,857612,409,0,0,0,0,0,12800,0,0,0,272,1214814,27588 +122936d7f3768ea0,memcpyDtoA,47.616,4,,,,,,,,,,,0,0,1048576,0 +122936d7f37764c0,_Z30kernel_estim_next_step_texturePjjjj,481.024,4,0.5,64,64,31,8,8,1,0,36,9,0,-1,,0,816,0,15513,0,410,0,0,0,0,0,13120,0,0,0,272,4920,1640 +122936d7f37ec680,memcpyDtoA,47.552,4,,,,,,,,,,,0,0,1048576,0 +122936d7f37f9c60,_Z29kernel_levelines_texture_smemPjjjj,3263.46,3,0.5,64,64,147,8,8,1,0,552,18,0,-1,,0,47606,12,788302,855382,409,0,0,0,0,0,12788,0,0,0,272,1215865,24785 +122936d7f3b172a0,memcpyDtoA,47.584,4,,,,,,,,,,,0,0,1048576,0 +122936d7f3b248e0,_Z30kernel_estim_next_step_texturePjjjj,470.016,4,0.5,64,64,0,8,8,1,0,36,9,0,-1,,0,816,0,15512,0,410,0,0,0,0,0,13120,0,0,0,272,4920,1640 +122936d7f3b97f60,memcpyDtoA,47.552,3,,,,,,,,,,,0,0,1048576,0 +122936d7f3ba55a0,_Z29kernel_levelines_texture_smemPjjjj,3258.18,4,0.5,64,64,12305584,8,8,1,0,552,18,0,-1,,0,47606,10,788297,859076,410,0,0,0,0,0,12815,0,0,0,272,1215402,27600 +122936d7f3ec1740,memcpyDtoA,47.648,4,,,,,,,,,,,0,0,1048576,0 +122936d7f3eced80,_Z30kernel_estim_next_step_texturePjjjj,465.536,4,0.5,64,64,0,8,8,1,0,36,9,0,-1,,0,816,0,15511,0,409,0,0,0,0,0,13088,0,0,0,272,4908,1636 +122936d7f3f41260,memcpyDtoA,47.552,4,,,,,,,,,,,0,0,1048576,0 +122936d7f3f4e860,_Z29kernel_levelines_texture_smemPjjjj,3266.59,4,0.5,64,64,117,8,8,1,0,552,18,0,-1,,0,47434,12,785416,855772,410,0,0,0,0,0,12802,0,0,0,271,1216005,25733 +122936d7f426cb40,memcpyDtoA,47.552,4,,,,,,,,,,,0,0,1048576,0 +122936d7f427a120,_Z30kernel_estim_next_step_texturePjjjj,478.304,4,0.5,64,64,0,8,8,1,0,36,9,0,-1,,0,816,0,15511,0,409,0,0,0,0,0,13088,0,0,0,272,4908,1636 +122936d7f42ef7c0,memcpyDtoA,47.648,3,,,,,,,,,,,0,0,1048576,0 +122936d7f42fce60,_Z29kernel_levelines_texture_smemPjjjj,3274.46,3,0.5,64,64,192,8,8,1,0,552,18,0,-1,,0,47434,10,785418,856700,410,0,0,0,0,0,12804,0,0,0,271,1218747,24325 +122936d7f461cfa0,memcpyDtoA,47.584,3,,,,,,,,,,,0,0,1048576,0 +122936d7f462a600,_Z30kernel_estim_next_step_texturePjjjj,476.576,4,0.5,64,64,0,8,8,1,0,36,9,0,-1,,0,822,0,15624,0,410,0,0,0,0,0,13120,0,0,0,274,4920,1640 +122936d7f469f600,memcpyDtoA,47.584,3,,,,,,,,,,,0,0,1048576,0 +122936d7f46acc20,_Z29kernel_levelines_texture_smemPjjjj,3270.85,3,0.5,64,64,-1404411488,8,8,1,0,552,18,0,-1,,0,47256,10,782499,851609,409,0,0,0,0,0,12800,0,0,0,270,1215219,26327 +122936d7f49cbfa0,memcpyDtoA,47.584,4,,,,,,,,,,,0,0,1048576,0 +122936d7f49d95a0,_Z30kernel_estim_next_step_texturePjjjj,478.88,3,0.5,64,64,0,8,8,1,0,36,9,0,-1,,0,822,0,15624,0,410,0,0,0,0,0,13120,0,0,0,274,4920,1640 +122936d7f4a4eea0,memcpyDtoA,47.648,3,,,,,,,,,,,0,0,1048576,0 +122936d7f4a5c500,_Z29kernel_levelines_texture_smemPjjjj,3272.86,3,0.5,64,64,0,8,8,1,0,552,18,0,-1,,0,47256,10,782499,851674,409,0,0,0,0,0,12788,0,0,0,270,1215877,25735 +122936d7f4d7c000,memcpyDtoA,47.584,3,,,,,,,,,,,0,0,1048576,0 +122936d7f4d89640,_Z30kernel_estim_next_step_texturePjjjj,479.904,4,0.5,64,64,35,8,8,1,0,36,9,0,-1,,0,822,0,15624,0,410,0,0,0,0,0,13120,0,0,0,274,4920,1640 +122936d7f4dff320,memcpyDtoA,47.584,4,,,,,,,,,,,0,0,1048576,0 +122936d7f4e0c920,_Z29kernel_levelines_texture_smemPjjjj,3263.14,4,0.5,64,64,145,8,8,1,0,552,18,0,-1,,0,47256,10,782501,852832,410,0,0,0,0,0,12815,0,0,0,270,1216391,27119 +122936d7f5129e00,memcpyDtoA,47.648,4,,,,,,,,,,,0,0,1048576,0 +122936d7f5137460,_Z30kernel_estim_next_step_texturePjjjj,474.112,4,0.5,64,64,0,8,8,1,0,36,9,0,-1,,0,822,0,15624,0,409,0,0,0,0,0,13088,0,0,0,274,4908,1636 +122936d7f51abaa0,memcpyDtoA,47.584,4,,,,,,,,,,,0,0,1048576,0 +122936d7f51b90c0,_Z29kernel_levelines_texture_smemPjjjj,3255.3,3,0.5,64,64,0,8,8,1,0,552,18,0,-1,,0,47256,10,782499,851161,410,0,0,0,0,0,12802,0,0,0,270,1216487,25419 +122936d7f54d4700,memcpyDtoA,47.552,4,,,,,,,,,,,0,0,1048576,0 +122936d7f54e1ce0,_Z30kernel_estim_next_step_texturePjjjj,478.432,3,0.5,64,64,37,8,8,1,0,36,9,0,-1,,0,822,0,15625,0,409,0,0,0,0,0,13088,0,0,0,274,4908,1636 +122936d7f5557420,memcpyDtoA,47.648,4,,,,,,,,,,,0,0,1048576,0 +122936d7f5564a60,_Z29kernel_levelines_texture_smemPjjjj,3263.68,4,0.5,64,64,1102,8,8,1,0,552,18,0,-1,,0,47256,10,782499,851691,410,0,0,0,0,0,12804,0,0,0,270,1215992,27116 +122936d7f5882180,memcpyDtoA,47.552,4,,,,,,,,,,,0,0,1048576,0 +122936d7f588f760,_Z30kernel_estim_next_step_texturePjjjj,470.944,3,0.5,64,64,0,8,8,1,0,36,9,0,-1,,0,822,0,15626,0,410,0,0,0,0,0,13120,0,0,0,274,4920,1640 +122936d7f5903140,memcpyDtoA,47.616,4,,,,,,,,,,,0,0,1048576,0 +122936d7f5910760,_Z29kernel_levelines_texture_smemPjjjj,3257.12,3,0.5,64,64,9661136,8,8,1,0,552,18,0,-1,,0,47256,10,782499,851971,409,0,0,0,0,0,12800,0,0,0,270,1216412,25128 +122936d7f5c2c4c0,memcpyDtoA,47.584,3,,,,,,,,,,,0,0,1048576,0 +122936d7f5c39ac0,_Z30kernel_estim_next_step_texturePjjjj,483.392,3,0.5,64,64,0,8,8,1,0,36,9,0,-1,,0,822,0,15627,0,410,0,0,0,0,0,13120,0,0,0,274,4920,1640 +122936d7f5cb0560,memcpyDtoA,47.584,3,,,,,,,,,,,0,0,1048576,0 +122936d7f5cbdb60,_Z29kernel_levelines_texture_smemPjjjj,3269.76,4,0.5,64,64,12157856,8,8,1,0,552,18,0,-1,,0,47256,10,782500,855086,409,0,0,0,0,0,12788,0,0,0,270,1217387,24205 +122936d7f5fdca40,memcpyDtoA,47.584,3,,,,,,,,,,,0,0,1048576,0 +122936d7f5fea060,_Z30kernel_estim_next_step_texturePjjjj,466.784,3,0.5,64,64,32767,8,8,1,0,36,9,0,-1,,0,822,0,15626,0,410,0,0,0,0,0,13120,0,0,0,274,4920,1640 +122936d7f605ca20,memcpyDtoA,47.552,3,,,,,,,,,,,0,0,1048576,0 +122936d7f606a020,_Z29kernel_levelines_texture_smemPjjjj,3273.89,5,0.5,64,64,9749904,8,8,1,0,552,18,0,-1,,0,47606,13,788296,857119,410,0,0,0,0,0,12815,0,0,0,272,1216502,27016 +122936d7f6389f20,memcpyDtoA,47.648,4,,,,,,,,,,,0,0,1048576,0 +122936d7f6397580,_Z30kernel_estim_next_step_texturePjjjj,478.08,4,0.5,64,64,0,8,8,1,0,36,9,0,-1,,0,816,0,15510,0,409,0,0,0,0,0,13088,0,0,0,272,4908,1636 +122936d7f6447fa0,memcpyAtoH,11.616,29,,,,,,,,,,,0,0,576,0 +122936d7f6451160,memcpyDtoH,191.392,744,,,,,,,,,,,0,0,1048576,0 diff --git a/lniv_smemCFI_1linearArray_Context_0.csv b/lniv_smemCFI_1linearArray_Context_0.csv new file mode 100644 index 0000000..23169a9 --- /dev/null +++ b/lniv_smemCFI_1linearArray_Context_0.csv @@ -0,0 +1,72 @@ +# CUDA_PROFILE_LOG_VERSION 2.0 +# CUDA_PROFILE_CSV 1 +# TIMESTAMPFACTOR fffff6ef89bda598 +# CUDA_DEVICE 0 Tesla C1060 +gpustarttimestamp,method,gputime,cputime,occupancy,gridSizeX,gridSizeY,gridSizeZ,blockSizeX,blockSizeY,blockSizeZ,dynSmemPerBlock,staSmemPerBlock,registerPerThread,streamID,localblocksize,memTransferSize,memtransferhostmemtype,branch,divergent_branch,instructions,warp_serialize,cta_launched,local_load,local_store,gld_32b,gld_64b,gld_128b,gst_32b,gst_64b,gst_128b,gld_request,gst_request,tex_cache_hit,tex_cache_miss +122937299dd13280,memcpyHtoA,177.568,333,,,,,,,,,,,0,0,1048576,0 +122937299dd7b040,_Z19kernel_calcul_pathsP4int2j,42.976,12,0.031,1,1,12201664,1,1,1,0,28,11,0,-1,,0,168,0,1587,0,1,0,0,54,0,0,72,0,0,54,72,0,0 +122937299dd86260,memcpyDtoA,4.288,6,,,,,,,,,,,0,0,576,0 +122937299dd8afa0,_Z23kernel_neutre_img2estimPjjj,444.608,8,0.5,64,64,1074266112,8,8,1,0,32,5,0,-1,,0,0,0,5448,0,409,0,0,0,0,0,13088,0,0,0,272,2454,818 +122937299de016c0,memcpyAtoD,50.592,6,,,,,,,,,,,0,0,1048576,0 +122937299de0e6e0,memcpyDtoA,47.424,4,,,,,,,,,,,0,0,1048576,0 +122937299de1f760,_Z29kernel_levelines_texture_smemPjjjj,2694.56,10,0.5,64,64,0,8,8,1,0,584,18,0,-1,,0,47606,11,789386,391913,410,0,0,0,0,0,12802,0,0,0,272,1223244,32854 +122937299e0b1f60,memcpyDtoA,47.68,4,,,,,,,,,,,0,0,1048576,0 +122937299e0c1560,_Z30kernel_estim_next_step_texturePjjjj,471.616,6,0.5,64,64,1075052544,8,8,1,0,36,9,0,-1,,0,816,0,15511,0,409,0,0,0,0,0,13088,0,0,0,272,4908,1636 +122937299e135200,memcpyDtoA,47.616,4,,,,,,,,,,,0,0,1048576,0 +122937299e142860,_Z29kernel_levelines_texture_smemPjjjj,2685.31,4,0.5,64,64,1,8,8,1,0,584,18,0,-1,,0,47606,12,789386,390037,410,0,0,0,0,0,12804,0,0,0,272,1219847,27708 +122937299e3d2c20,memcpyDtoA,47.648,4,,,,,,,,,,,0,0,1048576,0 +122937299e3e0260,_Z30kernel_estim_next_step_texturePjjjj,486.784,4,0.5,64,64,1075052544,8,8,1,0,36,9,0,-1,,0,816,0,15511,0,410,0,0,0,0,0,13120,0,0,0,272,4920,1640 +122937299e457a40,memcpyDtoA,47.584,3,,,,,,,,,,,0,0,1048576,0 +122937299e465040,_Z29kernel_levelines_texture_smemPjjjj,2667.74,4,0.5,64,64,1,8,8,1,0,584,18,0,-1,,0,47606,10,789383,389311,409,0,0,0,0,0,12800,0,0,0,272,1213376,27080 +122937299e6f0fa0,memcpyDtoA,47.584,3,,,,,,,,,,,0,0,1048576,0 +122937299e6fe600,_Z30kernel_estim_next_step_texturePjjjj,470.112,4,0.5,64,64,1074266112,8,8,1,0,36,9,0,-1,,0,816,0,15511,0,410,0,0,0,0,0,13120,0,0,0,272,4920,1640 +122937299e771cc0,memcpyDtoA,47.552,4,,,,,,,,,,,0,0,1048576,0 +122937299e77f2a0,_Z29kernel_levelines_texture_smemPjjjj,2670.72,3,0.5,64,64,1,8,8,1,0,584,18,0,-1,,0,47606,12,789386,388524,409,0,0,0,0,0,12788,0,0,0,272,1215272,26206 +122937299ea0bd60,memcpyDtoA,47.552,3,,,,,,,,,,,0,0,1048576,0 +122937299ea19340,_Z30kernel_estim_next_step_texturePjjjj,480.096,4,0.5,64,64,1074266112,8,8,1,0,36,9,0,-1,,0,816,0,15511,0,410,0,0,0,0,0,13120,0,0,0,272,4920,1640 +122937299ea8f0e0,memcpyDtoA,47.648,4,,,,,,,,,,,0,0,1048576,0 +122937299ea9c740,_Z29kernel_levelines_texture_smemPjjjj,2671.14,4,0.5,64,64,1,8,8,1,0,584,18,0,-1,,0,47606,10,789388,389600,410,0,0,0,0,0,12815,0,0,0,272,1218236,25318 +122937299ed293c0,memcpyDtoA,47.648,3,,,,,,,,,,,0,0,1048576,0 +122937299ed36a20,_Z30kernel_estim_next_step_texturePjjjj,476.704,4,0.5,64,64,0,8,8,1,0,36,9,0,-1,,0,816,0,15512,0,409,0,0,0,0,0,13088,0,0,0,272,4908,1636 +122937299edabac0,memcpyDtoA,47.552,4,,,,,,,,,,,0,0,1048576,0 +122937299edb90a0,_Z29kernel_levelines_texture_smemPjjjj,2671.3,4,0.5,64,64,0,8,8,1,0,584,18,0,-1,,0,47434,12,786502,388436,410,0,0,0,0,0,12802,0,0,0,271,1213625,28427 +122937299f045da0,memcpyDtoA,47.616,4,,,,,,,,,,,0,0,1048576,0 +122937299f0533c0,_Z30kernel_estim_next_step_texturePjjjj,472.064,4,0.5,64,64,0,8,8,1,0,36,9,0,-1,,0,816,0,15512,0,409,0,0,0,0,0,13088,0,0,0,272,4908,1636 +122937299f0c7200,memcpyDtoA,47.68,4,,,,,,,,,,,0,0,1048576,0 +122937299f0d4860,_Z29kernel_levelines_texture_smemPjjjj,2677.92,4,0.5,64,64,0,8,8,1,0,584,18,0,-1,,0,47434,10,786502,388243,410,0,0,0,0,0,12804,0,0,0,271,1216963,26153 +122937299f362f40,memcpyDtoA,47.552,4,,,,,,,,,,,0,0,1048576,0 +122937299f370540,_Z30kernel_estim_next_step_texturePjjjj,467.456,3,0.5,64,64,1072693248,8,8,1,0,36,9,0,-1,,0,822,0,15625,0,410,0,0,0,0,0,13120,0,0,0,274,4920,1640 +122937299f3e3180,memcpyDtoA,47.68,4,,,,,,,,,,,0,0,1048576,0 +122937299f3f07e0,_Z29kernel_levelines_texture_smemPjjjj,2675.04,4,0.5,64,64,11741088,8,8,1,0,584,18,0,-1,,0,47256,10,783580,385314,409,0,0,0,0,0,12800,0,0,0,270,1216083,25553 +122937299f67e3a0,memcpyDtoA,47.616,4,,,,,,,,,,,0,0,1048576,0 +122937299f68ba00,_Z30kernel_estim_next_step_texturePjjjj,475.392,3,0.5,64,64,1072693248,8,8,1,0,36,9,0,-1,,0,822,0,15624,0,410,0,0,0,0,0,13120,0,0,0,274,4920,1640 +122937299f700560,memcpyDtoA,47.616,4,,,,,,,,,,,0,0,1048576,0 +122937299f70dba0,_Z29kernel_levelines_texture_smemPjjjj,2662.05,4,0.5,64,64,0,8,8,1,0,584,18,0,-1,,0,47256,10,783580,384899,409,0,0,0,0,0,12788,0,0,0,270,1214437,27265 +122937299f998480,memcpyDtoA,47.616,3,,,,,,,,,,,0,0,1048576,0 +122937299f9a5aa0,_Z30kernel_estim_next_step_texturePjjjj,477.12,4,0.5,64,64,1072693248,8,8,1,0,36,9,0,-1,,0,822,0,15625,0,410,0,0,0,0,0,13120,0,0,0,274,4920,1640 +122937299fa1acc0,memcpyDtoA,47.584,3,,,,,,,,,,,0,0,1048576,0 +122937299fa282c0,_Z29kernel_levelines_texture_smemPjjjj,2673.63,4,0.5,64,64,0,8,8,1,0,584,18,0,-1,,0,47256,10,783582,384740,410,0,0,0,0,0,12815,0,0,0,270,1216791,26747 +122937299fcb58e0,memcpyDtoA,47.584,4,,,,,,,,,,,0,0,1048576,0 +122937299fcc2ee0,_Z30kernel_estim_next_step_texturePjjjj,481.792,4,0.5,64,64,0,8,8,1,0,36,9,0,-1,,0,822,0,15624,0,409,0,0,0,0,0,13088,0,0,0,274,4908,1636 +122937299fd39340,memcpyDtoA,47.584,4,,,,,,,,,,,0,0,1048576,0 +122937299fd46940,_Z29kernel_levelines_texture_smemPjjjj,2675.68,3,0.5,64,64,0,8,8,1,0,584,18,0,-1,,0,47256,10,783579,383647,410,0,0,0,0,0,12802,0,0,0,270,1215897,26147 +122937299ffd47c0,memcpyDtoA,47.584,3,,,,,,,,,,,0,0,1048576,0 +122937299ffe1dc0,_Z30kernel_estim_next_step_texturePjjjj,486.4,3,0.5,64,64,10922,8,8,1,0,36,9,0,-1,,0,822,0,15627,0,409,0,0,0,0,0,13088,0,0,0,274,4908,1636 +12293729a0059400,memcpyDtoA,47.552,4,,,,,,,,,,,0,0,1048576,0 +12293729a00669e0,_Z29kernel_levelines_texture_smemPjjjj,2668.42,4,0.5,64,64,0,8,8,1,0,584,18,0,-1,,0,47256,10,783580,384611,410,0,0,0,0,0,12804,0,0,0,270,1216801,26315 +12293729a02f2ba0,memcpyDtoA,47.68,4,,,,,,,,,,,0,0,1048576,0 +12293729a0300220,_Z30kernel_estim_next_step_texturePjjjj,465.92,4,0.5,64,64,0,8,8,1,0,36,9,0,-1,,0,822,0,15626,0,410,0,0,0,0,0,13120,0,0,0,274,4920,1640 +12293729a0372860,memcpyDtoA,47.648,3,,,,,,,,,,,0,0,1048576,0 +12293729a037fea0,_Z29kernel_levelines_texture_smemPjjjj,2667.1,3,0.5,64,64,0,8,8,1,0,584,18,0,-1,,0,47256,10,783579,385331,409,0,0,0,0,0,12800,0,0,0,270,1215586,26050 +12293729a060bb80,memcpyDtoA,47.616,4,,,,,,,,,,,0,0,1048576,0 +12293729a06191e0,_Z30kernel_estim_next_step_texturePjjjj,480.32,4,0.5,64,64,856,8,8,1,0,36,9,0,-1,,0,822,0,15626,0,410,0,0,0,0,0,13120,0,0,0,274,4920,1640 +12293729a068f060,memcpyDtoA,47.616,4,,,,,,,,,,,0,0,1048576,0 +12293729a069c6a0,_Z29kernel_levelines_texture_smemPjjjj,2676.93,3,0.5,64,64,2621500,8,8,1,0,584,18,0,-1,,0,47256,10,783580,386407,409,0,0,0,0,0,12788,0,0,0,270,1214898,26804 +12293729a092a9c0,memcpyDtoA,47.584,3,,,,,,,,,,,0,0,1048576,0 +12293729a0938000,_Z30kernel_estim_next_step_texturePjjjj,475.328,3,0.5,64,64,32767,8,8,1,0,36,9,0,-1,,0,822,0,15626,0,410,0,0,0,0,0,13120,0,0,0,274,4920,1640 +12293729a09acb00,memcpyDtoA,47.68,3,,,,,,,,,,,0,0,1048576,0 +12293729a09ba140,_Z29kernel_levelines_texture_smemPjjjj,2666.72,4,0.5,64,64,0,8,8,1,0,584,18,0,-1,,0,47606,13,789385,389081,410,0,0,0,0,0,12815,0,0,0,272,1215491,28047 +12293729a0c45c60,memcpyDtoA,47.552,4,,,,,,,,,,,0,0,1048576,0 +12293729a0c53260,_Z30kernel_estim_next_step_texturePjjjj,479.136,4,0.5,64,64,0,8,8,1,0,36,9,0,-1,,0,816,0,15510,0,409,0,0,0,0,0,13088,0,0,0,272,4908,1636 +12293729a0d07640,memcpyAtoH,11.712,30,,,,,,,,,,,0,0,576,0 +12293729a0d10ae0,memcpyDtoH,191.936,733,,,,,,,,,,,0,0,1048576,0 diff --git a/lniv_smem_3staticArrays_Context_0.csv b/lniv_smem_3staticArrays_Context_0.csv new file mode 100644 index 0000000..a1b06dd --- /dev/null +++ b/lniv_smem_3staticArrays_Context_0.csv @@ -0,0 +1,72 @@ +# CUDA_PROFILE_LOG_VERSION 2.0 +# CUDA_PROFILE_CSV 1 +# TIMESTAMPFACTOR fffff6ef8902a258 +# CUDA_DEVICE 0 Tesla C1060 +gpustarttimestamp,method,gputime,cputime,occupancy,gridSizeX,gridSizeY,gridSizeZ,blockSizeX,blockSizeY,blockSizeZ,dynSmemPerBlock,staSmemPerBlock,registerPerThread,streamID,localblocksize,memTransferSize,memtransferhostmemtype,branch,divergent_branch,instructions,warp_serialize,cta_launched,local_load,local_store,gld_32b,gld_64b,gld_128b,gst_32b,gst_64b,gst_128b,gld_request,gst_request,tex_cache_hit,tex_cache_miss +122935912c8a99a0,memcpyHtoA,177.376,332,,,,,,,,,,,0,0,1048576,0 +122935912c911b40,_Z19kernel_calcul_pathsP4int2j,42.752,12,0.031,1,1,11338272,1,1,1,0,28,11,0,-1,,0,168,0,1587,0,1,0,0,54,0,0,72,0,0,54,72,0,0 +122935912c91cca0,memcpyDtoA,4.32,5,,,,,,,,,,,0,0,576,0 +122935912c921a40,_Z23kernel_neutre_img2estimPjjj,440.864,9,0.5,64,64,1074266112,8,8,1,0,32,5,0,-1,,0,0,0,5448,0,409,0,0,0,0,0,13088,0,0,0,272,2454,818 +122935912c9973a0,memcpyAtoD,50.688,6,,,,,,,,,,,0,0,1048576,0 +122935912c9a4400,memcpyDtoA,47.392,3,,,,,,,,,,,0,0,1048576,0 +122935912c9b5440,_Z29kernel_levelines_texture_smemPjjjj,3593.66,9,0.5,64,64,0,8,8,1,0,1064,17,0,-1,,0,72362,4638,841352,995747,410,0,0,0,0,0,12802,0,0,0,272,1199518,41186 +122935912cd23460,memcpyDtoA,47.616,4,,,,,,,,,,,0,0,1048576,0 +122935912cd32a20,_Z30kernel_estim_next_step_texturePjjjj,478.112,6,0.5,64,64,1075052544,8,8,1,0,36,9,0,-1,,0,816,0,15510,0,409,0,0,0,0,0,13088,0,0,0,272,4908,1636 +122935912cda8020,memcpyDtoA,47.552,3,,,,,,,,,,,0,0,1048576,0 +122935912cdb5600,_Z29kernel_levelines_texture_smemPjjjj,3592.77,4,0.5,64,64,1,8,8,1,0,1064,17,0,-1,,0,72795,5071,843086,996169,410,0,0,0,0,0,12804,0,0,0,272,1199848,42008 +122935912d1232c0,memcpyDtoA,47.584,3,,,,,,,,,,,0,0,1048576,0 +122935912d130960,_Z30kernel_estim_next_step_texturePjjjj,463.392,4,0.5,64,64,1075052544,8,8,1,0,36,9,0,-1,,0,816,0,15513,0,410,0,0,0,0,0,13120,0,0,0,272,4920,1640 +122935912d1a25e0,memcpyDtoA,47.648,4,,,,,,,,,,,0,0,1048576,0 +122935912d1afc40,_Z29kernel_levelines_texture_smemPjjjj,3594.72,3,0.5,64,64,1,8,8,1,0,1064,17,0,-1,,0,72875,5149,843404,1000954,409,0,0,0,0,0,12800,0,0,0,272,1195816,44504 +122935912d51e060,memcpyDtoA,47.584,3,,,,,,,,,,,0,0,1048576,0 +122935912d52b660,_Z30kernel_estim_next_step_texturePjjjj,475.52,4,0.5,64,64,1074266112,8,8,1,0,36,9,0,-1,,0,816,0,15512,0,410,0,0,0,0,0,13120,0,0,0,272,4920,1640 +122935912d5a0220,memcpyDtoA,47.552,11,,,,,,,,,,,0,0,1048576,0 +122935912d5ad800,_Z29kernel_levelines_texture_smemPjjjj,3590.11,4,0.5,64,64,1,8,8,1,0,1064,17,0,-1,,0,72741,5017,842871,999358,409,0,0,0,0,0,12788,0,0,0,272,1197057,43263 +122935912d91aa40,memcpyDtoA,47.584,3,,,,,,,,,,,0,0,1048576,0 +122935912d928060,_Z30kernel_estim_next_step_texturePjjjj,489.248,4,0.5,64,64,1074266112,8,8,1,0,36,9,0,-1,,0,816,0,15511,0,410,0,0,0,0,0,13120,0,0,0,272,4920,1640 +122935912d9a01c0,memcpyDtoA,47.584,3,,,,,,,,,,,0,0,1048576,0 +122935912d9ad840,_Z29kernel_levelines_texture_smemPjjjj,3597.86,4,0.5,64,64,1,8,8,1,0,1064,17,0,-1,,0,72787,5061,843057,1001133,410,0,0,0,0,0,12815,0,0,0,272,1198644,43596 +122935912dd1c8a0,memcpyDtoA,47.616,3,,,,,,,,,,,0,0,1048576,0 +122935912dd29f00,_Z30kernel_estim_next_step_texturePjjjj,481.728,4,0.5,64,64,0,8,8,1,0,36,9,0,-1,,0,816,0,15511,0,409,0,0,0,0,0,13088,0,0,0,272,4908,1636 +122935912dda0320,memcpyDtoA,47.68,3,,,,,,,,,,,0,0,1048576,0 +122935912ddad980,_Z29kernel_levelines_texture_smemPjjjj,3595.36,4,0.5,64,64,0,8,8,1,0,1064,17,0,-1,,0,72422,4944,839570,998486,410,0,0,0,0,0,12802,0,0,0,271,1198607,42097 +122935912e11c040,memcpyDtoA,47.648,4,,,,,,,,,,,0,0,1048576,0 +122935912e129680,_Z30kernel_estim_next_step_texturePjjjj,477.28,3,0.5,64,64,18,8,8,1,0,36,9,0,-1,,0,816,0,15510,0,409,0,0,0,0,0,13088,0,0,0,272,4908,1636 +122935912e19e940,memcpyDtoA,47.552,3,,,,,,,,,,,0,0,1048576,0 +122935912e1abf20,_Z29kernel_levelines_texture_smemPjjjj,3600.32,3,0.5,64,64,10083328,8,8,1,0,1064,17,0,-1,,0,72371,4891,839366,996160,410,0,0,0,0,0,12804,0,0,0,271,1199727,42129 +122935912e51b920,memcpyDtoA,47.648,3,,,,,,,,,,,0,0,1048576,0 +122935912e528f80,_Z30kernel_estim_next_step_texturePjjjj,474.72,4,0.5,64,64,0,8,8,1,0,36,9,0,-1,,0,822,0,15624,0,410,0,0,0,0,0,13120,0,0,0,274,4920,1640 +122935912e59d840,memcpyDtoA,47.616,3,,,,,,,,,,,0,0,1048576,0 +122935912e5aae60,_Z29kernel_levelines_texture_smemPjjjj,3596.1,3,0.5,64,64,1,8,8,1,0,1064,17,0,-1,,0,72068,4840,836118,990542,409,0,0,0,0,0,12800,0,0,0,270,1197654,42666 +122935912e919820,memcpyDtoA,47.584,4,,,,,,,,,,,0,0,1048576,0 +122935912e926e80,_Z30kernel_estim_next_step_texturePjjjj,476.032,4,0.5,64,64,1072693248,8,8,1,0,36,9,0,-1,,0,822,0,15626,0,410,0,0,0,0,0,13120,0,0,0,274,4920,1640 +122935912e99bc60,memcpyDtoA,47.552,3,,,,,,,,,,,0,0,1048576,0 +122935912e9a9280,_Z29kernel_levelines_texture_smemPjjjj,3600.45,4,0.5,64,64,0,8,8,1,0,1064,17,0,-1,,0,72013,4785,835903,990163,409,0,0,0,0,0,12788,0,0,0,270,1199082,41238 +122935912ed18d20,memcpyDtoA,47.552,4,,,,,,,,,,,0,0,1048576,0 +122935912ed26360,_Z30kernel_estim_next_step_texturePjjjj,479.328,4,0.5,64,64,0,8,8,1,0,36,9,0,-1,,0,822,0,15625,0,410,0,0,0,0,0,13120,0,0,0,274,4920,1640 +122935912ed9be20,memcpyDtoA,47.648,4,,,,,,,,,,,0,0,1048576,0 +122935912eda9440,_Z29kernel_levelines_texture_smemPjjjj,3593.73,4,0.5,64,64,0,8,8,1,0,1064,17,0,-1,,0,71997,4769,835835,989090,410,0,0,0,0,0,12815,0,0,0,270,1199031,43209 +122935912f117480,memcpyDtoA,47.552,4,,,,,,,,,,,0,0,1048576,0 +122935912f124a60,_Z30kernel_estim_next_step_texturePjjjj,474.816,4,0.5,64,64,1072693248,8,8,1,0,36,9,0,-1,,0,822,0,15624,0,409,0,0,0,0,0,13088,0,0,0,274,4908,1636 +122935912f1993a0,memcpyDtoA,47.68,4,,,,,,,,,,,0,0,1048576,0 +122935912f1a6a00,_Z29kernel_levelines_texture_smemPjjjj,3588.06,4,0.5,64,64,0,8,8,1,0,1064,17,0,-1,,0,71962,4734,835695,988526,410,0,0,0,0,0,12802,0,0,0,270,1197717,42987 +122935912f513440,memcpyDtoA,47.68,4,,,,,,,,,,,0,0,1048576,0 +122935912f520aa0,_Z30kernel_estim_next_step_texturePjjjj,492.384,4,0.5,64,64,0,8,8,1,0,36,9,0,-1,,0,822,0,15624,0,409,0,0,0,0,0,13088,0,0,0,274,4908,1636 +122935912f599860,memcpyDtoA,47.648,3,,,,,,,,,,,0,0,1048576,0 +122935912f5a6ea0,_Z29kernel_levelines_texture_smemPjjjj,3582.43,4,0.5,64,64,-1386403272,8,8,1,0,1064,17,0,-1,,0,71991,4763,835813,989348,410,0,0,0,0,0,12804,0,0,0,270,1198967,42889 +122935912f912300,memcpyDtoA,47.584,3,,,,,,,,,,,0,0,1048576,0 +122935912f91f940,_Z30kernel_estim_next_step_texturePjjjj,476.928,4,0.5,64,64,0,8,8,1,0,36,9,0,-1,,0,822,0,15626,0,410,0,0,0,0,0,13120,0,0,0,274,4920,1640 +122935912f994aa0,memcpyDtoA,47.584,3,,,,,,,,,,,0,0,1048576,0 +122935912f9a20a0,_Z29kernel_levelines_texture_smemPjjjj,3605.02,4,0.5,64,64,0,8,8,1,0,1064,17,0,-1,,0,71919,4691,835524,991687,409,0,0,0,0,0,12800,0,0,0,270,1195048,45272 +122935912fd12d20,memcpyDtoA,47.744,3,,,,,,,,,,,0,0,1048576,0 +122935912fd203c0,_Z30kernel_estim_next_step_texturePjjjj,475.52,4,0.5,64,64,32,8,8,1,0,36,9,0,-1,,0,822,0,15626,0,410,0,0,0,0,0,13120,0,0,0,274,4920,1640 +122935912fd94f80,memcpyDtoA,47.552,3,,,,,,,,,,,0,0,1048576,0 +122935912fda2580,_Z29kernel_levelines_texture_smemPjjjj,3586.85,4,0.5,64,64,32,8,8,1,0,1064,17,0,-1,,0,71947,4719,835634,989254,409,0,0,0,0,0,12788,0,0,0,270,1197194,43126 +122935913010eb00,memcpyDtoA,47.584,3,,,,,,,,,,,0,0,1048576,0 +122935913011c100,_Z30kernel_estim_next_step_texturePjjjj,477.696,3,0.5,64,64,0,8,8,1,0,36,9,0,-1,,0,822,0,15626,0,410,0,0,0,0,0,13120,0,0,0,274,4920,1640 +1229359130191560,memcpyDtoA,47.616,3,,,,,,,,,,,0,0,1048576,0 +122935913019eba0,_Z29kernel_levelines_texture_smemPjjjj,3588.93,4,0.5,64,64,65280,8,8,1,0,1064,17,0,-1,,0,72420,4696,841586,995223,410,0,0,0,0,0,12815,0,0,0,272,1199000,43240 +122935913050b940,memcpyDtoA,47.552,4,,,,,,,,,,,0,0,1048576,0 +1229359130518f60,_Z30kernel_estim_next_step_texturePjjjj,482.272,4,0.5,64,64,0,8,8,1,0,36,9,0,-1,,0,816,0,15511,0,409,0,0,0,0,0,13088,0,0,0,272,4908,1636 +12293591305cd240,memcpyAtoH,11.584,32,,,,,,,,,,,0,0,576,0 +12293591305d6be0,memcpyDtoH,191.232,734,,,,,,,,,,,0,0,1048576,0 diff --git a/lniv_smem_3staticArrays_Context_0.trc b/lniv_smem_3staticArrays_Context_0.trc new file mode 100644 index 0000000000000000000000000000000000000000..4589c3e3899188ea7c699980512f701a4ea791f1 GIT binary patch literal 284 zcmaKnO$x$5423^;t~`S~UD+S>08&AUAcE+&Rw=d6*3uvG3ZB-T+xpB_aE6ymGRe!! zX)=1g-hB@PT^I^e;d|27cU>xKZltm?1!EkpiVG6GD%slpTSZ%rgsg-m5o>lFb=lFrT4>L7%~oA&kM3!3BsN8R8k- z83GtWfwVJFHkYA*p%kbllOc~G9ViwIROJoS;S9vZK>f);ItM71$xsHAO$V#i2a+I@ z(}1Em45>hNB2Xj~XbOmx3>1lHP-QR%ViTZS9$Z@ib`yio957u9G);j)8LUEqK@SW; i5+2&IYgcJOl;S2o*u&%kp$vh|v%#zrT2TEt4GaJfb1oDB literal 0 HcmV?d00001 diff --git a/lniv_smem_zc_CFI_linearArray_Context_0.csv b/lniv_smem_zc_CFI_linearArray_Context_0.csv new file mode 100644 index 0000000..387d763 --- /dev/null +++ b/lniv_smem_zc_CFI_linearArray_Context_0.csv @@ -0,0 +1,72 @@ +# CUDA_PROFILE_LOG_VERSION 2.0 +# CUDA_PROFILE_CSV 1 +# TIMESTAMPFACTOR fffff6ef8a3fef18 +# CUDA_DEVICE 0 Tesla C1060 +gpustarttimestamp,method,gputime,cputime,occupancy,gridSizeX,gridSizeY,gridSizeZ,blockSizeX,blockSizeY,blockSizeZ,dynSmemPerBlock,staSmemPerBlock,registerPerThread,streamID,localblocksize,memTransferSize,memtransferhostmemtype,branch,divergent_branch,instructions,warp_serialize,cta_launched,local_load,local_store,gld_32b,gld_64b,gld_128b,gst_32b,gst_64b,gst_128b,gld_request,gst_request,tex_cache_hit,tex_cache_miss +122937ea2858cb60,memcpyHtoA,214.656,809,,,,,,,,,,,0,0,1048576,0 +122937ea28726900,_Z19kernel_calcul_pathsP4int2j,42.144,16,0.031,1,1,11690128,1,1,1,0,28,11,0,-1,,0,168,0,1588,0,1,0,0,54,0,0,72,0,0,54,72,0,0 +122937ea287317e0,memcpyDtoA,4.128,7,,,,,,,,,,,0,0,576,0 +122937ea28736640,_Z23kernel_neutre_img2estimPjjj,453.632,10,0.5,64,64,4,8,8,1,0,32,5,0,-1,,0,0,0,5496,0,410,0,0,0,0,0,13120,0,0,0,274,2460,820 +122937ea288f0a20,memcpyAtoD,51.296,7,,,,,,,,,,,0,0,1048576,0 +122937ea288fdce0,memcpyDtoA,47.456,4,,,,,,,,,,,0,0,1048576,0 +122937ea2890ef80,_Z29kernel_levelines_texture_smemPjjjj,2313.95,11,0.5,64,64,11454132,8,8,1,0,308,18,0,-1,,0,47434,12,760498,69890,410,0,0,0,0,0,12760,0,0,0,271,1211981,29748 +122937ea28b448e0,memcpyDtoA,47.584,4,,,,,,,,,,,0,0,1048576,0 +122937ea28b53ec0,_Z30kernel_estim_next_step_texturePjjjj,497.632,7,0.5,64,64,0,8,8,1,0,36,9,0,-1,,0,822,0,15636,0,410,0,0,0,0,0,13120,0,0,0,274,4920,1640 +122937ea28bce100,memcpyDtoA,47.712,4,,,,,,,,,,,0,0,1048576,0 +122937ea28bdb740,_Z29kernel_levelines_texture_smemPjjjj,2293.38,4,0.5,64,64,337,8,8,1,0,308,18,0,-1,,0,47434,12,760497,69704,410,0,0,0,0,0,12760,0,0,0,271,1216149,27759 +122937ea28e0c000,memcpyDtoA,47.616,3,,,,,,,,,,,0,0,1048576,0 +122937ea28e195c0,_Z30kernel_estim_next_step_texturePjjjj,478.784,4,0.5,64,64,0,8,8,1,0,36,9,0,-1,,0,822,0,15634,0,410,0,0,0,0,0,13120,0,0,0,274,4920,1640 +122937ea28e8ee40,memcpyDtoA,1401.6,4,,,,,,,,,,,0,0,1048576,0 +122937ea28fe6f20,_Z29kernel_levelines_texture_smemPjjjj,2285.98,3,0.5,64,64,40,8,8,1,0,308,18,0,-1,,0,47434,12,760495,69267,410,0,0,0,0,0,12760,0,0,0,271,1211639,27223 +122937ea29215b20,memcpyDtoA,47.616,3,,,,,,,,,,,0,0,1048576,0 +122937ea292230e0,_Z30kernel_estim_next_step_texturePjjjj,476.352,4,0.5,64,64,127,8,8,1,0,36,9,0,-1,,0,822,0,15634,0,410,0,0,0,0,0,13120,0,0,0,274,4920,1640 +122937ea29298000,memcpyDtoA,47.552,3,,,,,,,,,,,0,0,1048576,0 +122937ea292a5580,_Z29kernel_levelines_texture_smemPjjjj,2276.77,4,0.5,64,64,8415296,8,8,1,0,308,18,0,-1,,0,47434,12,760494,68848,410,0,0,0,0,0,12760,0,0,0,271,1202995,26669 +122937ea294d1d60,memcpyDtoA,47.584,3,,,,,,,,,,,0,0,1048576,0 +122937ea294df340,_Z30kernel_estim_next_step_texturePjjjj,480.416,4,0.5,64,64,1072693248,8,8,1,0,36,9,0,-1,,0,822,0,15633,0,410,0,0,0,0,0,13120,0,0,0,274,4920,1640 +122937ea29555240,memcpyDtoA,47.584,3,,,,,,,,,,,0,0,1048576,0 +122937ea296a25a0,_Z29kernel_levelines_texture_smemPjjjj,2269.89,4,0.5,64,64,1,8,8,1,0,308,18,0,-1,,0,47434,12,760496,68781,410,0,0,0,0,0,12760,0,0,0,271,1203474,26190 +122937ea298cd2a0,memcpyDtoA,47.744,3,,,,,,,,,,,0,0,1048576,0 +122937ea298da900,_Z30kernel_estim_next_step_texturePjjjj,486.432,3,0.5,64,64,16,8,8,1,0,36,9,0,-1,,0,822,0,15635,0,410,0,0,0,0,0,13120,0,0,0,274,4920,1640 +122937ea29951f60,memcpyDtoA,47.712,3,,,,,,,,,,,0,0,1048576,0 +122937ea2995f5a0,_Z29kernel_levelines_texture_smemPjjjj,2277.66,4,0.5,64,64,0,8,8,1,0,308,18,0,-1,,0,47434,12,760500,68764,410,0,0,0,0,0,12760,0,0,0,271,1205094,24836 +122937ea29b8c100,memcpyDtoA,47.616,3,,,,,,,,,,,0,0,1048576,0 +122937ea29b996e0,_Z30kernel_estim_next_step_texturePjjjj,491.712,4,0.5,64,64,8,8,8,1,0,36,9,0,-1,,0,822,0,15636,0,410,0,0,0,0,0,13120,0,0,0,274,4920,1640 +122937ea29c12200,memcpyDtoA,47.648,3,,,,,,,,,,,0,0,1048576,0 +122937ea29d1e8a0,_Z29kernel_levelines_texture_smemPjjjj,2273.31,4,0.5,64,64,8755104,8,8,1,0,308,18,0,-1,,0,47434,12,760499,68617,410,0,0,0,0,0,12760,0,0,0,271,1202684,27194 +122937ea29f4a300,memcpyDtoA,47.648,4,,,,,,,,,,,0,0,1048576,0 +122937ea29f578e0,_Z30kernel_estim_next_step_texturePjjjj,473.216,4,0.5,64,64,0,8,8,1,0,36,9,0,-1,,0,822,0,15634,0,410,0,0,0,0,0,13120,0,0,0,274,4920,1640 +122937ea29fcbbc0,memcpyDtoA,47.616,4,,,,,,,,,,,0,0,1048576,0 +122937ea29fd91a0,_Z29kernel_levelines_texture_smemPjjjj,2265.38,4,0.5,64,64,0,8,8,1,0,308,18,0,-1,,0,47434,12,760499,68678,410,0,0,0,0,0,12760,0,0,0,271,1205362,24302 +122937ea2a202d00,memcpyDtoA,47.68,4,,,,,,,,,,,0,0,1048576,0 +122937ea2a210320,_Z30kernel_estim_next_step_texturePjjjj,475.552,3,0.5,64,64,1076494336,8,8,1,0,36,9,0,-1,,0,822,0,15636,0,410,0,0,0,0,0,13120,0,0,0,274,4920,1640 +122937ea2a284f00,memcpyDtoA,47.616,3,,,,,,,,,,,0,0,1048576,0 +122937ea2a38c880,_Z29kernel_levelines_texture_smemPjjjj,2268.16,3,0.5,64,64,11096400,8,8,1,0,308,18,0,-1,,0,47434,12,760496,68770,410,0,0,0,0,0,12760,0,0,0,271,1205150,24514 +122937ea2a5b6ec0,memcpyDtoA,47.648,3,,,,,,,,,,,0,0,1048576,0 +122937ea2a5c44c0,_Z30kernel_estim_next_step_texturePjjjj,474.496,4,0.5,64,64,0,8,8,1,0,36,9,0,-1,,0,822,0,15634,0,410,0,0,0,0,0,13120,0,0,0,274,4920,1640 +122937ea2a638ca0,memcpyDtoA,47.648,3,,,,,,,,,,,0,0,1048576,0 +122937ea2a6462e0,_Z29kernel_levelines_texture_smemPjjjj,2277.92,4,0.5,64,64,144,8,8,1,0,308,18,0,-1,,0,47434,12,760500,68681,410,0,0,0,0,0,12760,0,0,0,271,1204010,25654 +122937ea2a872f80,memcpyDtoA,47.616,4,,,,,,,,,,,0,0,1048576,0 +122937ea2a880540,_Z30kernel_estim_next_step_texturePjjjj,472.32,3,0.5,64,64,48,8,8,1,0,36,9,0,-1,,0,822,0,15636,0,410,0,0,0,0,0,13120,0,0,0,274,4920,1640 +122937ea2a8f4480,memcpyDtoA,47.68,4,,,,,,,,,,,0,0,1048576,0 +122937ea2aa00920,_Z29kernel_levelines_texture_smemPjjjj,2275.33,4,0.5,64,64,11937498,8,8,1,0,308,18,0,-1,,0,47606,11,763277,68860,410,0,0,0,0,0,12760,0,0,0,272,1203314,25998 +122937ea2ac2cb80,memcpyDtoA,47.776,3,,,,,,,,,,,0,0,1048576,0 +122937ea2ac3a1e0,_Z30kernel_estim_next_step_texturePjjjj,479.136,4,0.5,64,64,6357093,8,8,1,0,36,9,0,-1,,0,822,0,15634,0,410,0,0,0,0,0,13120,0,0,0,274,4920,1640 +122937ea2acafbc0,memcpyDtoA,47.648,3,,,,,,,,,,,0,0,1048576,0 +122937ea2acbd1a0,_Z29kernel_levelines_texture_smemPjjjj,2268.19,5,0.5,64,64,6488165,8,8,1,0,308,18,0,-1,,0,47434,12,760497,68864,410,0,0,0,0,0,12760,0,0,0,271,1204950,24714 +122937ea2aee7800,memcpyDtoA,47.584,4,,,,,,,,,,,0,0,1048576,0 +122937ea2aef4da0,_Z30kernel_estim_next_step_texturePjjjj,468.896,3,0.5,64,64,3211309,8,8,1,0,36,9,0,-1,,0,822,0,15634,0,410,0,0,0,0,0,13120,0,0,0,274,4920,1640 +122937ea2af67fc0,memcpyDtoA,47.552,4,,,,,,,,,,,0,0,1048576,0 +122937ea2b06fe40,_Z29kernel_levelines_texture_smemPjjjj,2280.93,4,0.5,64,64,3670061,8,8,1,0,308,18,0,-1,,0,47434,12,760497,68707,410,0,0,0,0,0,12760,0,0,0,271,1203092,26572 +122937ea2b29d660,memcpyDtoA,47.616,4,,,,,,,,,,,0,0,1048576,0 +122937ea2b2aad60,_Z30kernel_estim_next_step_texturePjjjj,486.016,4,0.5,64,64,3407923,8,8,1,0,36,9,0,-1,,0,822,0,15634,0,410,0,0,0,0,0,13120,0,0,0,274,4920,1640 +122937ea2b322220,memcpyDtoA,47.616,3,,,,,,,,,,,0,0,1048576,0 +122937ea2b32f800,_Z29kernel_levelines_texture_smemPjjjj,2272.99,4,0.5,64,64,3211314,8,8,1,0,308,18,0,-1,,0,47434,12,760500,69017,410,0,0,0,0,0,12760,0,0,0,271,1205428,24236 +122937ea2b55b120,memcpyDtoA,47.584,3,,,,,,,,,,,0,0,1048576,0 +122937ea2b5686c0,_Z30kernel_estim_next_step_texturePjjjj,490.4,4,0.5,64,64,3145773,8,8,1,0,36,9,0,-1,,0,822,0,15634,0,410,0,0,0,0,0,13120,0,0,0,274,4920,1640 +122937ea2b5e0ce0,memcpyDtoA,47.584,4,,,,,,,,,,,0,0,1048576,0 +122937ea2b6e5e20,_Z29kernel_levelines_texture_smemPjjjj,2271.9,3,0.5,64,64,11665408,8,8,1,0,308,18,0,-1,,0,47434,12,760503,68833,410,0,0,0,0,0,12760,0,0,0,271,1203294,26370 +122937ea2b911340,memcpyDtoA,47.712,4,,,,,,,,,,,0,0,1048576,0 +122937ea2b91e980,_Z30kernel_estim_next_step_texturePjjjj,479.776,3,0.5,64,64,10922,8,8,1,0,36,9,0,-1,,0,822,0,15634,0,410,0,0,0,0,0,13120,0,0,0,274,4920,1640 +122937ea2ba8b1a0,memcpyAtoH,11.936,782,,,,,,,,,,,0,0,576,0 +122937ea2beeee40,memcpyDtoH,192.032,1729,,,,,,,,,,,0,0,1048576,0 diff --git a/main.cu b/main.cu index d9db4f8..0bb7c3d 100644 --- a/main.cu +++ b/main.cu @@ -13,127 +13,76 @@ // lib spec #include "defines.h" #include "levelines_common.h" - #include "levelines_kernels.cu" -__global__ void kernel_debil(unsigned int * ptr1, unsigned int * ptr2, unsigned int L, int val){ - - unsigned int i = blockIdx.x*blockDim.x + threadIdx.x; - unsigned int j = blockIdx.y*blockDim.y + threadIdx.y; - unsigned int pos = i*L +j ; +int main(int argc, char **argv){ - ptr2[pos] = val - ptr1[pos] ; + // use device with highest Gflops/s + cudaSetDevice( 0 ); -} - -int main(int argc, char **argv){ + unsigned int timer ; + cutilCheckError( cutCreateTimer(&timer) ); + cutilCheckError( cutResetTimer(timer) ); + cutilCheckError( cutStartTimer(timer) ); + + //alloc bidon pour anticiper l'initialisation du GPU + short * d_bidon ; + cutilSafeCall( cudaMalloc( (void**) &d_bidon, sizeof(short))) ; //float coef_regul = atof( argv[1] ) ; - unsigned int timer ; - cutilCheckError( cutCreateTimer(&timer) ); - cutilCheckError( cutResetTimer(timer) ); /***************************** * CHARGEMENT IMAGE *****************************/ char* image_path = argv[argc-1]; - char* image_out = "./image_out.pgm" ; + unsigned int r = atoi(argv[1]) ; + bool seq_out = atoi(argv[2]) ; + unsigned int iter , nb_iter = atoi(argv[3]) ; + unsigned int poids = 15 ; + char * image_out_base = "./image_out" ; + char * pgm_ext = ".pgm" ; + char image_out[80] ; unsigned int * h_data = NULL ; unsigned int * h_data_out = NULL ; - unsigned int H, L, size; - - cutilCheckError( cutStartTimer(timer) ); - cutilCheckError( cutLoadPGMi(image_path, &h_data, &L, &H)); - cutilCheckError( cutStopTimer(timer) ); + unsigned int H, L, size, psize ; - size = H * L * sizeof( unsigned int ); - printf("Loaded %d x %d = %d pixels from '%s' en %f ms,\n", L, H, size, image_path, cutGetTimerValue(timer)); - - - //essai alloc mapped - /* - cutilCheckError( cutResetTimer(timer) ); - cutilCheckError( cutStartTimer(timer) ); - unsigned int * h_ptr1, * d_ptr1 ; - unsigned int * h_ptr2, * d_ptr2 ; - int h = ; - int l = h ; - int mem = h*l*sizeof(unsigned int) ; - cutilSafeCall(cudaSetDeviceFlags(cudaDeviceMapHost)); - cutilCheckError( cutStopTimer(timer) ); - printf("Temps set flag Mapped : %f ms\n", cutGetTimerValue(timer)) ; - - cutilCheckError( cutStartTimer(timer) ); - cutilSafeCall(cudaHostAlloc((void **)&h_ptr1, mem, cudaHostAllocMapped)); - cutilSafeCall(cudaHostAlloc((void **)&h_ptr2, mem, cudaHostAllocMapped)); + // chargt image + cutilCheckError( cutLoadPGMi(image_path, &h_data, &L, &H)); cutilCheckError( cutStopTimer(timer) ); - printf("Temps cumul alloc Mapped : %f ms\n", cutGetTimerValue(timer)) ; - for (int i = 0; i>>(d_ptr1, d_ptr2, l, 255) ; + printf("Longueur des chemins = %d pixels\n", r); + printf("Init GPU + Image %s %d x %d = %d pixels en %f ms,\n", image_path, L, H, size, cutGetTimerValue(timer)); - cutilCheckError( cutStopTimer(timer) ); - printf("Temps total Mapped : %f ms\n", cutGetTimerValue(timer)) ; - - char * image_1 = "./image_1.pgm" ; - char * image_2 = "./image_2.pgm" ; - - cutilCheckError( cutSavePGMi(image_1, h_ptr1, l, h) ) ; - cutilCheckError( cutSavePGMi(image_2, h_ptr2, l, h) ) ; - */ /***************************** * FIN CHARGEMENT IMAGE *****************************/ - - - - // use device with highest Gflops/s - cudaSetDevice( cutGetMaxGflopsDeviceId() ); - - - /* - cutilSafeCall( cudaMallocArray(&a_Src, &floatTex, imageW, imageH) ); - cutilSafeCall( cudaMalloc((void **)&d_Output, imageW * imageH * sizeof(float)) ); - cutilSafeCall( cudaThreadSynchronize() ); - cutilCheckError( cutResetTimer(hTimer) ); - cutilCheckError( cutStartTimer(hTimer) ); - - cutilSafeCall( cudaThreadSynchronize() ); - cutilCheckError( cutStopTimer(hTimer) ); - gpuTime = cutGetTimerValue(hTimer) / (float)iterations; - */ cutilCheckError( cutResetTimer(timer) ); cutilCheckError( cutStartTimer(timer) ); // allocation mem GPU unsigned int * d_directions =NULL ; unsigned int * d_lniv, * d_estim = NULL ; + int2 * d_paths ; cutilSafeCall( cudaMalloc( (void**) &d_directions, size)) ; cutilSafeCall( cudaMalloc( (void**) &d_lniv, size ) ); cutilSafeCall( cudaMalloc( (void**) &d_estim, size ) ); + cutilSafeCall( cudaMalloc( (void**) &d_paths, psize ) ); // allocate array and copy image data cudaChannelFormatDesc channelDesc = cudaCreateChannelDesc(32, 0, 0, 0, cudaChannelFormatKindUnsigned); - cudaArray * array_img_in, *array_img_estim, *array_img_lniv; + cudaChannelFormatDesc channelDescP = cudaCreateChannelDesc(32, 32, 0, 0, cudaChannelFormatKindSigned); + + cudaArray * array_img_in, *array_img_estim, *array_img_lniv, *array_paths; cutilSafeCall( cudaMallocArray( &array_img_in, &channelDesc, L, H )); cutilSafeCall( cudaMemcpyToArray( array_img_in, 0, 0, h_data, size, cudaMemcpyHostToDevice)) ; cutilSafeCall( cudaBindTextureToArray( tex_img_in, array_img_in, channelDesc)); - cutilCheckError( cutStopTimer(timer) ); cutilSafeCall( cudaMallocArray( &array_img_estim, &channelDesc, L, H )); cutilSafeCall( cudaBindTextureToArray( tex_img_estim, array_img_estim, channelDesc)); @@ -141,28 +90,75 @@ int main(int argc, char **argv){ cutilSafeCall( cudaMallocArray( &array_img_lniv, &channelDesc, L, H )); cutilSafeCall( cudaBindTextureToArray( tex_img_lniv, array_img_lniv, channelDesc)); + cutilSafeCall( cudaMallocArray( &array_paths, &channelDescP, (r-1), PSIZE_I )); + cutilSafeCall( cudaBindTextureToArray( tex_paths, array_paths, channelDescP)); + + cutilCheckError( cutStopTimer(timer) ); printf("Temps alloc + transferts en Textures : %f ms\n", cutGetTimerValue(timer)) ; + /***************************** - * APPELS KERNELS et chronos + * GENERATION des CHEMINS *****************************/ cutilCheckError( cutResetTimer(timer) ); cutilCheckError( cutStartTimer(timer) ); - unsigned int iter , nb_iter = 15 ; - unsigned int poids = 15 ; - dim3 dimBlock(8,8,1) ; - dim3 dimGrid( H / dimBlock.x, L / dimBlock.y, 1 ) ; - unsigned int smem_size = dimBlock.x * dimBlock.y * sizeof(unsigned int) ; - // init image estimee avec image_in + dim3 dimBlock(1,1,1) ; + dim3 dimGrid(1,1,1) ; + // calcul des chemins + kernel_calcul_paths<<< dimGrid, dimBlock, 0 >>>(d_paths, r); + + // copie du tableau en texture + cutilSafeCall( cudaMemcpyToArray( array_paths, 0, 0, d_paths, psize, cudaMemcpyDeviceToDevice)) ; + + cutilCheckError( cutStopTimer(timer) ); + printf("Temps generation chemin + transfert en texture : %f ms\n", cutGetTimerValue(timer)) ; + + /***************************** + * APPELS KERNELS et chronos + *****************************/ + dimBlock = dim3(16,16,1) ; + dimGrid = dim3( H / dimBlock.x,L / dimBlock.y, 1 ) ; + + // pour enregistrement image lniv GPU + free(h_data_out) ; + h_data_out = new unsigned int[H*L] ; + + //init image estimee avec image_in + cutilCheckError( cutResetTimer(timer) ); + cutilCheckError( cutStartTimer(timer) ); kernel_init_estim_from_img_in<<< dimGrid, dimBlock, 0 >>>(d_estim, L, H, 7); - printf("Grille : %d x %d de Blocs : %d x %d - Shared mem : %d octets\n", dimGrid.x, dimGrid.y, dimBlock.x, dimBlock.y, smem_size) ; + // kernel de copie + /* + kernel_neutre_img2estim<<< dimGrid, dimBlock, 0>>>(d_estim, L, H); + */ + cudaThreadSynchronize() ; + cutilCheckError( cutStopTimer(timer) ); + printf("Temps kernel init : %f ms\n", cutGetTimerValue(timer)) ; + // a remplacer par + /* + cutilCheckError( cutResetTimer(timer) ); + cutilCheckError( cutStartTimer(timer) ); + cutilSafeCall( cudaMemcpyFromArray( d_estim, array_img_in, 0, 0, size, cudaMemcpyDeviceToDevice)) ; + cutilCheckError( cutStopTimer(timer) ); + printf("Temps memcpyFromArray : %f ms\n", cutGetTimerValue(timer)) ; + */ + printf("Grille : %d x %d de Blocs : %d x %d \n", dimGrid.x, dimGrid.y, dimBlock.x, dimBlock.y) ; + + cutilCheckError( cutResetTimer(timer) ); + cutilCheckError( cutStartTimer(timer) ); for ( iter =0 ; iter < nb_iter ; iter++ ) { cutilSafeCall( cudaMemcpyToArray( array_img_estim, 0, 0, d_estim, size, cudaMemcpyDeviceToDevice)) ; - kernel_levelines_texture<<< dimGrid, dimBlock, 0 >>>( d_lniv, L, H ); + kernel_levelines_texture_smem<<< dimGrid, dimBlock, 0 >>>( d_lniv, L, H, r ); cutilSafeCall( cudaMemcpyToArray( array_img_lniv, 0, 0, d_lniv, size, cudaMemcpyDeviceToDevice)) ; + if (seq_out){ + sprintf(image_out, "%s%d%s", image_out_base, iter+1, pgm_ext) ; + printf("chaine : %s\n", image_out); + cutilSafeCall( cudaMemcpy(h_data_out , d_estim, size, cudaMemcpyDeviceToHost) ); + cutilCheckError( cutSavePGMi(image_out, h_data_out, L, H) ) ; + } kernel_estim_next_step_texture<<< dimGrid, dimBlock, 0 >>>(d_estim, L, H, poids) ; } @@ -171,26 +167,95 @@ int main(int argc, char **argv){ cutilCheckError( cutStopTimer(timer) ); printf("Execution moy par kernel : %f ms\n", cutGetTimerValue(timer)/(float)nb_iter) ; printf("Total pour %d kernels : %f ms\n", nb_iter, cutGetTimerValue(timer)) ; - + /************************** * VERIFS **************************/ - //trace des lniv sur grille de 'pas x pas' - //kernel_trace_levelines<<< dimGrid, dimBlock, 0 >>>(d_data, d_directions, d_data2, L, H, 16, 255) ; - //cudaThreadSynchronize(); - - // enregistrement image lniv GPU - h_data_out = new unsigned int[H*L] ; - if ( h_data_out != NULL) - cutilSafeCall( cudaMemcpy(h_data_out , d_estim, size, cudaMemcpyDeviceToHost) ); - else - printf("Echec allocation mem CPU\n"); - cutilCheckError( cutSavePGMi(image_out, h_data_out, L, H) ) ; + /************************************************** + * recuperation matrice des chemins pour affichage + **************************************************/ + + int2 * h_paths = new int2[(r-1)*PSIZE_I] ; + cutilSafeCall( cudaMemcpyFromArray(h_paths , array_paths, 0, 0, psize, cudaMemcpyDeviceToHost) ); + /* + //verif Di + printf("matrice Di"); + for(int idpath=0; idpath< PSIZE_I; idpath++){b + + printf("\n"); + for(int idpix=0; idpix< r-1; idpix++){ + printf(" % d ", h_paths[idpath*(r-1) + idpix].x ); + } + printf("\t// %d°", idpath*15) ; + } + //verif Dj + printf("\nmatrice Dj"); + for(int idpath=0; idpath< PSIZE_I; idpath++){ + printf("\n"); + for(int idpix=0; idpix< r-1; idpix++){ + printf(" % d ", h_paths[idpath*(r-1) + idpix].y); + } + printf("\t// %d°", idpath*15) ; + } + printf("\n"); + */ + /*************************************************** + * fin verif visuelle matrices des chemins + ***************************************************/ - // calcul lniv CPU + /*************************************************** + * execution sequentielle pour comparaison + * la comparaison n'est pertinente que + * si d_lniv contient les lniv de l'image se départ + **************************************************/ + /* + // calcul sequentiel + cutilCheckError( cutResetTimer(timer) ); + cutilCheckError( cutStartTimer(timer) ); + h_data_out = new unsigned int[H*L] ; + int * dout = new int[H*L] ; + for ( iter =0 ; iter < nb_iter ; iter++ ){ + for (int i=r; i<= H-r; i++){ + for (int j=r; j<= L-r; j++){ + h_data_out[i*L+j] = lniv4_value(h_data, h_paths, i, j, H, L, &dout[i*L+j], r) ; + } + } + } + cutilCheckError( cutStopTimer(timer) ); + printf("Execution sequentielle CPU : %f ms\n", cutGetTimerValue(timer)) ; + // comparaison + unsigned int * h_lniv = new unsigned int[H*L] ; + int pos, cpt_err=0, cpt_pix=0 ; + cutilSafeCall( cudaMemcpy(h_lniv , d_lniv, size, cudaMemcpyDeviceToHost) ); + for ( iter =0 ; iter < nb_iter ; iter++ ){ + for (int i=r; i<= H-r; i++){ + for (int j=r; j<= L-r; j++){ + pos = i*L + j ; + if ( h_data_out[ pos ] != h_lniv[ pos ] ) { + cpt_err++ ; + printf(" pixel ( %d , %d ) -> GPU= %d CPU= %d \n", i, j, h_lniv[pos], h_data_out[pos]); + } + cpt_pix++ ; + } + } + } + printf("TAUX ERREUR GPU/CPU : %d / %d \n", cpt_err, cpt_pix ); + */ + //trace des lniv sur grille de 'pas x pas' + //kernel_trace_levelines<<< dimGrid, dimBlock, 0 >>>(d_data, d_directions, d_data2, L, H, 16, 255, r) ; + + if (!seq_out){ + if ( h_data_out != NULL) + cutilSafeCall( cudaMemcpy(h_data_out , d_estim, size, cudaMemcpyDeviceToHost) ); + else + printf("Echec allocation mem CPU\n"); + sprintf(image_out, "%s%d%s", image_out_base, iter+1, pgm_ext) ; + cutilCheckError( cutSavePGMi(image_out, h_data_out, L, H) ) ; + } + // TODO verifier pourquoi les deux lignes suivantes produisent une erreur //cutilExit(argc, argv); //cudaThreadExit(); diff --git a/profile.cvp b/profile.cvp new file mode 100644 index 0000000..f5adf09 --- /dev/null +++ b/profile.cvp @@ -0,0 +1,22 @@ + + + + Session1 + "/home/perrot/NVIDIA_GPU_Computing_SDK/C/bin/linux/release/lniv" + 4 0 15 /home/perrot/Images/cochons/cochon_512b.pgm + /home/perrot/NVIDIA_GPU_Computing_SDK/C/src/lniv_gpu + 21 Jun 2011 10:18:11 + false + + + branch,divergent_branch,instructions,warp_serialize + cta_launched,local_load,local_store,gld_32b + gld_64b,gld_128b,gst_32b,gst_64b + gst_128b + gld_request,gst_request + tex_cache_hit,tex_cache_miss + + + + + diff --git a/profile_Session1_Context_0.csv b/profile_Session1_Context_0.csv new file mode 100644 index 0000000..8f4a1d0 --- /dev/null +++ b/profile_Session1_Context_0.csv @@ -0,0 +1,72 @@ +# CUDA_PROFILE_LOG_VERSION 2.0 +# CUDA_PROFILE_CSV 1 +# TIMESTAMPFACTOR fffff6ef886fccd8 +# CUDA_DEVICE 0 Tesla C1060 +gpustarttimestamp,method,gputime,cputime,occupancy,gridSizeX,gridSizeY,gridSizeZ,blockSizeX,blockSizeY,blockSizeZ,dynSmemPerBlock,staSmemPerBlock,registerPerThread,streamID,localblocksize,memTransferSize,memtransferhostmemtype,branch,divergent_branch,instructions,warp_serialize,cta_launched,local_load,local_store,gld_32b,gld_64b,gld_128b,gst_32b,gst_64b,gst_128b,gld_request,gst_request,tex_cache_hit,tex_cache_miss +122933fc4123b400,memcpyHtoA,177.376,329,,,,,,,,,,,0,0,1048576,0 +122933fc412a2780,_Z19kernel_calcul_pathsP4int2j,43.296,12,0.031,1,1,-1386402296,1,1,1,0,28,11,0,-1,,0,168,0,1587,0,1,0,0,54,0,0,72,0,0,54,72,0,0 +122933fc412adae0,memcpyDtoA,4.256,5,,,,,,,,,,,0,0,576,0 +122933fc412b2800,_Z23kernel_neutre_img2estimPjjj,446.912,9,0.5,64,64,1074266112,8,8,1,0,32,5,0,-1,,0,0,0,5448,0,409,0,0,0,0,0,13088,0,0,0,272,2454,818 +122933fc4132a1e0,memcpyAtoD,50.528,6,,,,,,,,,,,0,0,1048576,0 +122933fc41337180,memcpyDtoA,47.424,4,,,,,,,,,,,0,0,1048576,0 +122933fc41348200,_Z29kernel_levelines_texture_smemPjjjj,3595.01,10,0.5,64,64,0,8,8,1,0,1064,17,0,-1,,0,72362,4638,841352,997341,410,0,0,0,0,0,12802,0,0,0,272,1196850,43854 +122933fc416b6760,memcpyDtoA,47.744,3,,,,,,,,,,,0,0,1048576,0 +122933fc416c5d80,_Z30kernel_estim_next_step_texturePjjjj,477.824,6,0.5,64,64,1075052544,8,8,1,0,36,9,0,-1,,0,816,0,15511,0,409,0,0,0,0,0,13088,0,0,0,272,4908,1636 +122933fc4173b240,memcpyDtoA,47.584,3,,,,,,,,,,,0,0,1048576,0 +122933fc41748840,_Z29kernel_levelines_texture_smemPjjjj,3596.54,4,0.5,64,64,1,8,8,1,0,1064,17,0,-1,,0,72795,5071,843084,998235,410,0,0,0,0,0,12804,0,0,0,272,1199869,41987 +122933fc41ab7380,memcpyDtoA,47.712,3,,,,,,,,,,,0,0,1048576,0 +122933fc41ac4a00,_Z30kernel_estim_next_step_texturePjjjj,480.928,4,0.5,64,64,1075052544,8,8,1,0,36,9,0,-1,,0,816,0,15513,0,410,0,0,0,0,0,13120,0,0,0,272,4920,1640 +122933fc41b3aae0,memcpyDtoA,47.616,3,,,,,,,,,,,0,0,1048576,0 +122933fc41b480e0,_Z29kernel_levelines_texture_smemPjjjj,3589.54,4,0.5,64,64,1,8,8,1,0,1064,17,0,-1,,0,72875,5149,843406,999080,409,0,0,0,0,0,12800,0,0,0,272,1195950,44370 +122933fc41eb50e0,memcpyDtoA,47.552,4,,,,,,,,,,,0,0,1048576,0 +122933fc41ec26e0,_Z30kernel_estim_next_step_texturePjjjj,477.792,4,0.5,64,64,1074266112,8,8,1,0,36,9,0,-1,,0,816,0,15513,0,410,0,0,0,0,0,13120,0,0,0,272,4920,1640 +122933fc41f37bc0,memcpyDtoA,47.648,4,,,,,,,,,,,0,0,1048576,0 +122933fc41f45200,_Z29kernel_levelines_texture_smemPjjjj,3592.61,3,0.5,64,64,1,8,8,1,0,1064,17,0,-1,,0,72741,5017,842869,995949,409,0,0,0,0,0,12788,0,0,0,272,1196521,43799 +122933fc422b2e00,memcpyDtoA,47.584,3,,,,,,,,,,,0,0,1048576,0 +122933fc422c03e0,_Z30kernel_estim_next_step_texturePjjjj,461.92,4,0.5,64,64,1074266112,8,8,1,0,36,9,0,-1,,0,816,0,15512,0,410,0,0,0,0,0,13120,0,0,0,272,4920,1640 +122933fc42331a80,memcpyDtoA,47.68,4,,,,,,,,,,,0,0,1048576,0 +122933fc4233f100,_Z29kernel_levelines_texture_smemPjjjj,3582.94,3,0.5,64,64,1,8,8,1,0,1064,17,0,-1,,0,72787,5061,843054,1000048,410,0,0,0,0,0,12815,0,0,0,272,1197435,44805 +122933fc426aa720,memcpyDtoA,47.616,3,,,,,,,,,,,0,0,1048576,0 +122933fc426b7da0,_Z30kernel_estim_next_step_texturePjjjj,479.776,4,0.5,64,64,3080302,8,8,1,0,36,9,0,-1,,0,816,0,15511,0,409,0,0,0,0,0,13088,0,0,0,272,4908,1636 +122933fc4272da40,memcpyDtoA,47.552,3,,,,,,,,,,,0,0,1048576,0 +122933fc4273b040,_Z29kernel_levelines_texture_smemPjjjj,3586.02,4,0.5,64,64,3080312,8,8,1,0,1064,17,0,-1,,0,72422,4944,839570,994815,410,0,0,0,0,0,12802,0,0,0,271,1198152,42552 +122933fc42aa7280,memcpyDtoA,47.552,4,,,,,,,,,,,0,0,1048576,0 +122933fc42ab4880,_Z30kernel_estim_next_step_texturePjjjj,480.544,3,0.5,64,64,7536737,8,8,1,0,36,9,0,-1,,0,816,0,15510,0,409,0,0,0,0,0,13088,0,0,0,272,4908,1636 +122933fc42b2a7e0,memcpyDtoA,47.584,4,,,,,,,,,,,0,0,1048576,0 +122933fc42b37de0,_Z29kernel_levelines_texture_smemPjjjj,3599.3,4,0.5,64,64,7733353,8,8,1,0,1064,17,0,-1,,0,72371,4891,839365,996460,410,0,0,0,0,0,12804,0,0,0,271,1199816,42040 +122933fc42ea73e0,memcpyDtoA,47.584,4,,,,,,,,,,,0,0,1048576,0 +122933fc42eb49e0,_Z30kernel_estim_next_step_texturePjjjj,474.464,4,0.5,64,64,3211296,8,8,1,0,36,9,0,-1,,0,822,0,15624,0,410,0,0,0,0,0,13120,0,0,0,274,4920,1640 +122933fc42f291a0,memcpyDtoA,47.488,3,,,,,,,,,,,0,0,1048576,0 +122933fc42f36760,_Z29kernel_levelines_texture_smemPjjjj,3595.94,4,0.5,64,64,7143535,8,8,1,0,1064,17,0,-1,,0,72068,4840,836122,989513,409,0,0,0,0,0,12800,0,0,0,270,1197365,42955 +122933fc432a5060,memcpyDtoA,47.584,3,,,,,,,,,,,0,0,1048576,0 +122933fc432b2700,_Z30kernel_estim_next_step_texturePjjjj,472.832,4,0.5,64,64,7471218,8,8,1,0,36,9,0,-1,,0,822,0,15624,0,410,0,0,0,0,0,13120,0,0,0,274,4920,1640 +122933fc43326880,memcpyDtoA,47.552,4,,,,,,,,,,,0,0,1048576,0 +122933fc43333e80,_Z29kernel_levelines_texture_smemPjjjj,3590.69,4,0.5,64,64,6357101,8,8,1,0,1064,17,0,-1,,0,72013,4785,835899,989204,409,0,0,0,0,0,12788,0,0,0,270,1198226,42094 +122933fc436a1300,memcpyDtoA,47.616,3,,,,,,,,,,,0,0,1048576,0 +122933fc436ae940,_Z30kernel_estim_next_step_texturePjjjj,496.352,4,0.5,64,64,7274595,8,8,1,0,36,9,0,-1,,0,822,0,15624,0,410,0,0,0,0,0,13120,0,0,0,274,4920,1640 +122933fc43728680,memcpyDtoA,47.552,3,,,,,,,,,,,0,0,1048576,0 +122933fc43735c80,_Z29kernel_levelines_texture_smemPjjjj,3592.03,4,0.5,64,64,3080307,8,8,1,0,1064,17,0,-1,,0,71997,4769,835835,989426,410,0,0,0,0,0,12815,0,0,0,270,1196748,45492 +122933fc43aa3640,memcpyDtoA,47.584,3,,,,,,,,,,,0,0,1048576,0 +122933fc43ab0cc0,_Z30kernel_estim_next_step_texturePjjjj,484.352,4,0.5,64,64,7209071,8,8,1,0,36,9,0,-1,,0,822,0,15624,0,409,0,0,0,0,0,13088,0,0,0,274,4908,1636 +122933fc43b27b20,memcpyDtoA,47.616,3,,,,,,,,,,,0,0,1048576,0 +122933fc43b35180,_Z29kernel_levelines_texture_smemPjjjj,3600.42,4,0.5,64,64,3014754,8,8,1,0,1064,17,0,-1,,0,71962,4734,835697,990688,410,0,0,0,0,0,12802,0,0,0,270,1198105,42599 +122933fc43ea4be0,memcpyDtoA,47.584,4,,,,,,,,,,,0,0,1048576,0 +122933fc43eb21e0,_Z30kernel_estim_next_step_texturePjjjj,477.504,4,0.5,64,64,7471136,8,8,1,0,36,9,0,-1,,0,822,0,15626,0,409,0,0,0,0,0,13088,0,0,0,274,4908,1636 +122933fc43f27580,memcpyDtoA,47.584,3,,,,,,,,,,,0,0,1048576,0 +122933fc43f34ba0,_Z29kernel_levelines_texture_smemPjjjj,3592.61,4,0.5,64,64,2097207,8,8,1,0,1064,17,0,-1,,0,71991,4763,835810,989866,410,0,0,0,0,0,12804,0,0,0,270,1198680,43176 +122933fc442a27a0,memcpyDtoA,47.616,3,,,,,,,,,,,0,0,1048576,0 +122933fc442afe20,_Z30kernel_estim_next_step_texturePjjjj,469.472,4,0.5,64,64,51,8,8,1,0,36,9,0,-1,,0,822,0,15626,0,410,0,0,0,0,0,13120,0,0,0,274,4920,1640 +122933fc44323240,memcpyDtoA,47.68,4,,,,,,,,,,,0,0,1048576,0 +122933fc44330880,_Z29kernel_levelines_texture_smemPjjjj,3599.94,3,0.5,64,64,-767360128,8,8,1,0,1064,17,0,-1,,0,71919,4691,835524,989067,409,0,0,0,0,0,12800,0,0,0,270,1193858,46462 +122933fc446a0120,memcpyDtoA,47.616,4,,,,,,,,,,,0,0,1048576,0 +122933fc446ad740,_Z30kernel_estim_next_step_texturePjjjj,473.952,3,0.5,64,64,0,8,8,1,0,36,9,0,-1,,0,822,0,15626,0,410,0,0,0,0,0,13120,0,0,0,274,4920,1640 +122933fc44721d00,memcpyDtoA,47.648,4,,,,,,,,,,,0,0,1048576,0 +122933fc4472f340,_Z29kernel_levelines_texture_smemPjjjj,3589.06,3,0.5,64,64,-1386403096,8,8,1,0,1064,17,0,-1,,0,71947,4719,835636,987891,409,0,0,0,0,0,12788,0,0,0,270,1198457,41863 +122933fc44a9c160,memcpyDtoA,47.552,4,,,,,,,,,,,0,0,1048576,0 +122933fc44aa9760,_Z30kernel_estim_next_step_texturePjjjj,476.576,4,0.5,64,64,0,8,8,1,0,36,9,0,-1,,0,822,0,15626,0,410,0,0,0,0,0,13120,0,0,0,274,4920,1640 +122933fc44b1e760,memcpyDtoA,47.616,4,,,,,,,,,,,0,0,1048576,0 +122933fc44b2bdc0,_Z29kernel_levelines_texture_smemPjjjj,3590.59,4,0.5,64,64,0,8,8,1,0,1064,17,0,-1,,0,72420,4696,841587,993210,410,0,0,0,0,0,12815,0,0,0,272,1200675,41565 +122933fc44e991e0,memcpyDtoA,47.776,3,,,,,,,,,,,0,0,1048576,0 +122933fc44ea68a0,_Z30kernel_estim_next_step_texturePjjjj,477.408,4,0.5,64,64,0,8,8,1,0,36,9,0,-1,,0,816,0,15511,0,409,0,0,0,0,0,13088,0,0,0,272,4908,1636 +122933fc44f57380,memcpyAtoH,11.552,30,,,,,,,,,,,0,0,576,0 +122933fc44f605e0,memcpyDtoH,191.136,740,,,,,,,,,,,0,0,1048576,0 diff --git a/profile_Session1_Context_0.trc b/profile_Session1_Context_0.trc new file mode 100644 index 0000000000000000000000000000000000000000..1fa3e006e614058fbe77019ad2fe2f6f78558291 GIT binary patch literal 284 zcmXX=y9&ZU5FERd`3XT{k)RfKK_Z9_e<@=52FZys=?IxC#B3I+ZG*N{n3u1 i(ye%uHYGjuylXAqFAG=}g?1F3bZ2@`sf?z|iRKTQ88G(% literal 0 HcmV?d00001 diff --git a/profilerapitrace_0.trc b/profilerapitrace_0.trc new file mode 100644 index 0000000000000000000000000000000000000000..0ada1fc030beb53e9e98f927d41ec7a93ddaecf8 GIT binary patch literal 284 zcmb=(+tRBW+@fgC7I1kZ(E%6tM xJWL#>J^^YjOgsYWUYPujFA(zzit^Jkb5e_7?us|iD=A6_`5po`K-~-C0{}V$b$I{) literal 0 HcmV?d00001 -- 2.39.5