     cudaEventCreate(&stop);
 
     // Obtener Memoria en el device
-    cudaMalloc( (float**) &device_all_products_buy_options, total_buy_options_size );
-    cudaMalloc( (float**) &device_best_buy_options, best_buy_options_size );
+    cudaMalloc( (unsigned int**) &device_all_products_buy_options, total_buy_options_size );
+    cudaMalloc( (unsigned int**) &device_best_buy_options, best_buy_options_size );
 
     // Copiar datos desde el host en el device
     cudaMemcpy(device_all_products_buy_options, host_all_products_buy_options, total_buy_options_size, cudaMemcpyHostToDevice);

    }
}

void printBestBuyOptions(int *best_buy_options)
{
    cout << endl <<"Best products buy options:" << endl;
    for (int i = 0; i < NUM_PRODUCTS * ELEMENTS_PER_BUY_OPTION; i += ELEMENTS_PER_BUY_OPTION)
    {
        cout << "Best buy option for product_id: " << i / ELEMENTS_PER_BUY_OPTION << endl;
        cout << "\tstore_id: " << best_buy_options[i + STORE_ID_OFFSET] << endl;

    printf("Number of Threads: %d\n", NUM_THREADS);
    printf("Number of blocks (products): %d\n", NUM_PRODUCTS);
    printf("Total time %4.6f milseg\n", elapsed_time);
    printf("Bandwidth %4.3f GB/s\n", (num_total_buy_options * sizeof(unsigned int)) / (1000000 * elapsed_time));

    cudaEventDestroy(start);
    cudaEventDestroy(stop);
