 
 __device__ int array_32[32];
 __device__ int index_array_32[32];
+__device__ int array_64[64];
+__device__ int index_array_64[64];
 
 __global__
 void sort_32( )

    sort_32<<<1,32>>>( );
    print_32<<<1,1>>>( );
    cudaDeviceSynchronize( );
    return 0;
}


    int my_index = index_array_32[threadIdx.x];

    BitonicSort::Array<int> bs( array_32 );
    my_index = bs.sort32( my_index );

    index_array_32[threadIdx.x] = my_index;
}

__global__
void sort_64( )
{
    BitonicSort::Array<int> bs( array_64 );
    int2 my_indices = make_int2( index_array_64[threadIdx.x],
                                 index_array_64[threadIdx.x + 32] );
    bs.sort64( my_indices );

    index_array_64[threadIdx.x +  0] = my_indices.x;
    index_array_64[threadIdx.x + 32] = my_indices.y;
}

__global__
