anchor.diff:      let kernel, kernelPrepare, kernelRun = provider.Compile command
       let dim = new _1D(length, localWorkSize)
       let res = Array.zeroCreate length
  -    kernelPrepare dim s sub res length sub.Length
  +    let b = Array.zeroCreate 1
  +    kernelPrepare dim s sub res b length sub.Length
       let _ = commandQueue.Add(kernelRun()).Finish()
  -    let _ = commandQueue.Add(res.ToHost provider).Finish()
  -    let r = new ResizeArray<_>()
  -    res |> Array.iteri (fun i x -> if x <> 0uy then r.Add i)
  -    r.ToArray()
  +    let _ = commandQueue.Add(b.ToHost provider).Finish()
  +    let result = Array.zeroCreate b.[0]
  +    let _ = commandQueue.Add(res.ToHost(provider, result)).Finish()
  +    result
  +//    let r = new ResizeArray<_>()
  +//    res |> Array.iteri (fun i x -> if x <> 0uy then r.Add i)
  +//    r.ToArray()
   
   let findSubstr2 (s:array<byte>) (sub:array<byte>) =
   
  
positive.code: 
  let platformName = "*"
  let deviceType = Cl.DeviceType.Default
  let provider =
          try  ComputeProvider.Create(platformName, deviceType)
          with 
          | ex -> failwith ex.Message
  let commandQueue = new CommandQueue(provider, provider.Devices |> Seq.head)
  
  let k = 1024
  
  let length =   12//0000000
  
negative.code: 
  let cpuSum = ref 0
  let _gpuSum = ref 0
  let l = 95000000 /// 4
  let sl = 1000 /// 4
  let st = 4
  let idxs = Array.init ((l/(sl*st))-1 ) (fun i -> i*sl*st)
      //[|2; 45500; 1245; 9800; 10000; 6000; 3005; 200000; 3000445;8000;12000;14000;|]
  let _sig = 
      let a = 
          //Array.init sl (fun x -> random.Next())
          Array.zeroCreate sl
      random.NextBytes a
      a
      //[|0uy;1uy;0uy;1uy;1uy;0uy;1uy;1uy;5uy;100uy;1uy;66uy;2uy;0uy;1uy;1uy;0uy;1uy;1uy;56uy;1uy;2uy;255uy;0uy;1uy;1uy;2uy;1uy;0uy;1uy;1uy;0uy;1uy;1uy;5uy;100uy;1uy;66uy;2uy;0uy;1uy;1uy;0uy;1uy;1uy;56uy;1uy;2uy;254uy;0uy;1uy;1uy;2uy;1uy;0uy;1uy;1uy;0uy;1uy;1uy;5uy;100uy;1uy;66uy;2uy;0uy;1uy;1uy;0uy;1uy;1uy;56uy;1uy;2uy;254uy;0uy;1uy;1uy;2uy
        //       ; 0uy;1uy;0uy;1uy;1uy;0uy;1uy;1uy;5uy;100uy;1uy;66uy;2uy;0uy;1uy;1uy;0uy;1uy;1uy;56uy;1uy;2uy;255uy;0uy;1uy;1uy;2uy;1uy;0uy;1uy;1uy;0uy;1uy;1uy;5uy;100uy;1uy;66uy;2uy;0uy;1uy;1uy;0uy;1uy;1uy;56uy;1uy;2uy;254uy;0uy;1uy;1uy;2uy;1uy;0uy;1uy;1uy;0uy;1uy;1uy;5uy;100uy;1uy;66uy;2uy;0uy;1uy;1uy;0uy;1uy;1uy;56uy;1uy;2uy;254uy;0uy;1uy;1uy;2uy|]
  //[|0uy;1uy;0uy;1uy;1uy;0uy;1uy;1uy;5uy;100uy;1uy;66uy;2uy;0uy;1uy;1uy;0uy;1uy;1uy;56uy;1uy;2uy;254uy;0uy;1uy;1uy;2uy|]
  let arr = 
      //Array.init l (fun x -> random.Next())
      Array.zeroCreate l
  random.NextBytes arr
  for i in idxs do
      _sig |> Array.iteri (fun j x -> arr.[j+i] <- x)
  