anchor.diff:                  let program, kernel = 
                       match Cl.CreateProgramWithSource(env.Context, 1u, [| source |], null) with
                       | program, ErrorCode.Success ->
  -                        match Cl.BuildProgram(program, uint32 env.Devices.Length, env.Devices, " -cl-fast-relaxed-math  -cl-mad-enable ", null, IntPtr.Zero) with
  +                        match Cl.BuildProgram(program, uint32 env.Devices.Length, env.Devices, compileOptionsToString compileOptions, null, IntPtr.Zero) with
                           | ErrorCode.Success -> 
                               match Cl.CreateKernel(program, "kernelCode") with
                               | kernel, ErrorCode.Success -> 
  
positive.code:     open OpenCL.Net.Extensions
      open OpenCL.Net
  
  
  
      /// <summary>
      /// A scoped Context that manages GPU kernel execution and caching  
      /// </summary>
      type GpuContext() =
          // Context enviroment
          let env = "*".CreateCLEnvironment()
          let cache = Dictionary<string, (Program * Kernel)>()
          let buffers = new System.Collections.Generic.List<IGpuArray>()
          // helper functions
          let createBuffer (t : Type) (env : Environment) (length : int) =
              match Cl.CreateBuffer(env.Context, MemFlags.ReadWrite ||| MemFlags.None ||| MemFlags.AllocHostPtr, new IntPtr(length * Marshal.SizeOf(t))) with
  
negative.code:                         addKernelBufferArg kernel (gpuArray.GetBuffer()) argIndex
                      else incr argIndex
                  | _ -> failwithf "Not supported result type %A" t
  
          new() =
              new GpuContext(GpuCompileOptions.FastRelaxedMath ||| GpuCompileOptions.FusedMultiplyAdd)
  
          /// <summary>
          /// Creates a GpuArray 
  