double h_vrais_snake, h_vrais_mem ; // image CPU de la log-vraisemblance
bool * h_move = new bool[MAX_NODES];// image CPU du vecteur identifiant les noeuds qui ont bouge
uint32 h_nb_pix_max, npixmax ; // taille max des segments a tester : utile pour determiner les params d'execution
- int nnodes = 4 ; // 4 ou 40 pour l'instant
-
+ int nnodes = 4 ;
/*allocation memoire GPU */
cudaMalloc((void**) &d_nb_nodes, sizeof(int));
int VERBOSE = 1 ;
int Display = 1 ;
- //snake_node * h_snake_ll;
uint64 h_stats_snake[6];
- //gpu2snake(d_snake, &h_snake_ll, nnodes);
-
-
+
// variables de debug
int nb_move, iter, i ;
int nb_move_total=0, nb_test_total=0 ;
for (iter=1; (iter<=NB_iter_max)&&(Pas>0); iter++, Pas>>=1)
{
-
if (VERBOSE)
{
cudaMemcpy( &h_vrais_snake, d_vrais_snake, sizeof(double), cudaMemcpyDeviceToHost);
if (VERBOSE)
{
toc(chrono, "temps sequence move");
-
printf("nb deplacements : %d\n", nb_move) ;
printf("nb deplacements total/test : %d/%d\n", nb_move_total, nb_test_total) ;
printf("nb nouveaux noeuds : %d (total: %d)\n", *h_nb_nodes, nnodes) ;
toc(chrono_all, "temps move mv") ;
cudaMemcpy( h_stats_snake, d_stats_snake, 6*sizeof(uint64), cudaMemcpyDeviceToHost);
cudaMemcpy( &h_vrais_snake, d_vrais_snake, sizeof(double), cudaMemcpyDeviceToHost);
- printf("\nFIN : longueur de codage de gl : %lf (%d)\n", h_vrais_snake, h_stats_snake[0]) ;
+ printf("\nFIN : longueur de codage gl : %lf (%d)\n", h_vrais_snake, h_stats_snake[0]) ;
printf("nb noeuds : %d, nb_iter : %d\n", nnodes, iter-1) ;
printf("nb deplacements total/test : %d/%d\n", nb_move_total, nb_test_total) ;
}
if (Display) {
- /* old fashion way to draw the snake
- gpu2snake(d_snake, &h_snake_ll, nnodes);
- uint32 * Liste_pixel_segment = new uint32[I_dim+J_dim];
- affiche_snake_ushort(Image_in, h_snake_ll, 255, 0, Liste_pixel_segment) ;
- delete Liste_pixel_segment ;
- delete h_snake_ll;
- */
cudaMemcpy( h_snake, d_snake, nnodes*sizeof(snake_node_gpu), cudaMemcpyDeviceToHost);
//affiche coordonnees
for (int node=0; node<nnodes; node++){
- printf("NODE %d %d %d \n", node, h_snake[node].posi, h_snake[node].posj);
+ printf("NODE %d = ( %d , %d ) \n", node, h_snake[node].posi, h_snake[node].posj);
}
- // draw only the nodes with + marks
+ // dessine seulement les nodes avec des +
dessine_snake(h_snake, nnodes, Image_in, 10);
imagesc_ushort(Image_in, I_dim, J_dim) ;
}
cudaFree(d_listes_pixels);
cudaFree(d_contribs_segments_blocs);
cudaFree(d_move);
- return 1 ;
+ return 0 ;
}