anchor.diff:          let cq2 = commandQueue.Add(aBuf.Read(0, l, r)).Finish()
           Assert.AreEqual(expected,r)
           commandQueue.Dispose();
  +
  +    let checkResultFloat (kernel:Kernel<_,_>) expected =
  +        let l = 4
  +        let a = Array.init l (fun i -> float32 i)
  +        let aBuf = new Buffer<float32>(provider, Operations.ReadWrite, Memory.Device,a)
  +        let commandQueue = new CommandQueue(provider, provider.Devices |> Seq.head );
  +        let cq = commandQueue.Add(kernel.Run(new _1D(l,1), aBuf)).Finish()
  +        let r = Array.zeroCreate(l)
  +        let cq2 = commandQueue.Add(aBuf.Read(0, l, r)).Finish()
  +        Assert.AreEqual(expected,r)
  +        commandQueue.Dispose();
  +
  +    let checkResult2 (kernel:Kernel<_,_,_>) expected =
  +        let l = 4
  +        let a = [|0 .. l-1|]
  +        let b = Array.zeroCreate l
  +        let inBuf = new Buffer<int>(provider, Operations.ReadOnly, Memory.Device,a)
  +        let outBuf = new Buffer<int>(provider, Operations.ReadWrite, Memory.Device,b)
  +        let commandQueue = new CommandQueue(provider, provider.Devices |> Seq.head );
  +        let cq = commandQueue.Add(kernel.Run(new _1D(l,1), inBuf, outBuf)).Finish()
  +        let r = Array.zeroCreate(l)
  +        let cq2 = commandQueue.Add(outBuf.Read(0, l, r)).Finish()
  +        Assert.AreEqual(expected,r)
  +        commandQueue.Dispose();
           
   
       [<Test>]
  
positive.code:         let c = command:>Expr
          let kernel = provider.Compile<_1D,_> c
          
          checkResult kernel [|0;2;4;6|]
negative.code: 
  open NUnit.Framework
  open System.IO
  //open Brahma.Types
  open Brahma.Samples
  open OpenCL.Net
  open Brahma.OpenCL
  