             }
         }
         
-        //Before the next iteration of projection slices, delete the curren textures. 
+        //Before the next iteration of projection slices, delete the current textures. 
         
         for (dev = 0; dev < deviceCount; dev++){
             cudaSetDevice(dev);

    unsigned int split_image;
    unsigned int split_projections;
    // Does everything fit in the GPU?
    if(mem_image+mem_proj*nalpha<mem_GPU_global){
        // We only need to split if we have extra GPUs
        fits_in_memory=true;
        split_image=1;
        split_projections=1;
    }
    // We know we need to split, but:
    // Do all projections fit on the GPU (with some slack for the image)??

    unsigned long long proj_linear_idx_start;
    unsigned int current_split_size;
    for( unsigned int proj=0;proj<split_projections;proj++){
        // Crop the last one, as its likely its not completely divisible.
        current_split_size=(nalpha+split_projections-1)/split_projections;
        current_split_size=((proj+1)*current_split_size<nalpha)?  current_split_size:  nalpha-current_split_size*proj;
        
        //Get the linear index where the current memory chunk starts. 
        proj_linear_idx_start=(unsigned long long)((nalpha+split_projections-1)/split_projections)*(unsigned long long)proj*(unsigned long long)geo.nDetecU*(unsigned long long)geo.nDetecV;

        // Now get the projections on memory
        cudaTextureObject_t *texProj = new cudaTextureObject_t[deviceCount];
        cudaArray **d_cuArrTex = new cudaArray*[deviceCount];
