anchor.diff:      let pool = runtime.DescriptorPool
   
       let dct         = device |> ComputeShader.ofFunction Kernels.dct
  -    let codewords   = device |> ComputeShader.ofFunction Kernels.codewordsKernel
  +    let codewords   = device |> ComputeShader.ofFunction Kernels.codewordsKernelBallot
       let assemble    = device |> ComputeShader.ofFunction Kernels.assembleKernel
       let scanner     = runtime.CompileScan <@ (+) : int -> int -> int @>
       
  
positive.code:         let comp = JpegCompressor(runtime)
          let device = runtime.Device
  
          let pi = PixImage.Create(@"C:\Users\Schorsch\Desktop\nature.jpeg").ToPixImage<byte>(Col.Format.RGBA)
          let instance = comp.NewInstance(pi.Size, Quantization.photoshop80)
  
          let image = device.CreateImage(PixTexture2d(PixImageMipMap [| pi :> PixImage |], TextureParams.empty))
  
negative.code:         for i in 1 .. 5 do queue.RunSynchronously cmd
          for i in 1 .. 5 do instance.Download() |> ignore
  
          instance.ClearStats()
  
          Log.start "encode"
          let iter = 1000
          let sw = System.Diagnostics.Stopwatch.StartNew()
          for i in 1 .. iter do
              queue.RunSynchronously cmd
          sw.Stop()
          let tCompress = sw.MicroTime / iter
          Log.line "total : %A" tCompress
          let stats = instance.GetStats()
          for (name, time) in Map.toSeq stats do
              Log.line "%s: %A" name (time / iter)
          Log.stop()
  
          let mutable data = Array.zeroCreate 0
          printf " 0: download: "
  