     } else {
         printf("false\n");
     }
+    printf("\n");
 
     // Dimensions of computing elements on the CUDA device.
     int block_dim_x = strtol(block_dim_x_string, NULL, 10);
     int block_dim_y = strtol(block_dim_y_string, NULL, 10);
     assert(((block_dim_x * block_dim_y) <= cuda_device_properties.maxThreadsPerBlock) && "Error: Using more threads than permitted by maxThreadsPerBlock");
-    assert((((block_dim_x * block_dim_y) % cuda_device_properties.warpSize) == 0) && "Error: Must use thread count which is a multiple of warpSize");
+    // TODO : enable this
+    // assert((((block_dim_x * block_dim_y) % cuda_device_properties.warpSize) == 0) && "Error: Must use thread count which is a multiple of warpSize");
 
     int grid_dim_x = (int) ceil(((*src_bitmap)->width) / ((double) block_dim_x));
     int grid_dim_y = (int) ceil(((*src_bitmap)->height)/ ((double) block_dim_y));

    (*padding).right = (grid_dim_x * block_dim_x) - ((*src_bitmap)->width);
    pad_binary_bitmap(src_bitmap, BINARY_WHITE, *padding);
    pad_binary_bitmap(dst_bitmap, BINARY_WHITE, *padding);
}

// Pads the binary image given as input with the padding values provided as

    // Create dst bitmap image (empty for now)
    *dst_bitmap = createBitmap((*src_bitmap)->width, (*src_bitmap)->height, (*src_bitmap)->depth);
    assert((*dst_bitmap != NULL) && "Error: could not allocate memory for dst_bitmap");

    // check for cuda-capable device
    int cuda_device_count;
