     
     sumArray = Array(UnsafeBufferPointer(start: output, count: N));
     
-    
 }
 
 // create an array of random floats
 
-var N : Int = 1024 * 1024 * 10;
+var N : Int = 1024 * 1024 * 20;
 
 print("Running test with N = ", N);
 

    print("default device = ", defaultDevice);
    
    let commandQueue = defaultDevice.newCommandQueue();
    
    let commandBuffer = commandQueue.commandBuffer();
    
    let commandEncoder = commandBuffer.computeCommandEncoder();
    
    let library : MTLLibrary?;
    
    do {
        let source : String = try String(contentsOfFile: "./addFunction.metal" )
        library = try defaultDevice.newLibraryWithSource(source, options: nil) // do we need compile options?
    }
    catch _ {
        print("error creating library ...");
        return;
    }
    let myAdditionFunction: MTLFunction = library!.newFunctionWithName("myAddFunction")!;
    
    let computePipelineState: MTLComputePipelineState?
    do {

    }
}

func generateLibrary(device: MTLDevice) -> MTLLibrary {
    let library : MTLLibrary?;
    do {
        let source : String = try String(contentsOfFile: "./addFunction.metal" )
        library = try device.newLibraryWithSource(source, options: nil) // do we need compile options?
    }
    catch _ {
        print("error creating library ...");
        library = nil
    }
    return library!
}

func computeSumMetal(array1 array1 : [Float], array2 : [Float], inout sumArray : [Float], N : Int) {
    
    let devices: [MTLDevice] = MTLCopyAllDevices();
