Closed dpanfilyonok closed 2 years ago
Describe the bug Exception when running simple kernel on bool.
Fatal error. System.AccessViolationException: Attempted to read or write protected memory. This is often an indication that other memory is corrupt. at OpenCL.Net.Cl.clCreateBuffer(IntPtr, OpenCL.Net.MemFlags, IntPtr, IntPtr, OpenCL.Net.ErrorCode ByRef) at OpenCL.Net.Cl.clCreateBuffer(IntPtr, OpenCL.Net.MemFlags, IntPtr, IntPtr, OpenCL.Net.ErrorCode ByRef) at OpenCL.Net.Cl.CreateBuffer(OpenCL.Net.Context, OpenCL.Net.MemFlags, IntPtr, IntPtr, OpenCL.Net.ErrorCode ByRef) at OpenCL.Net.Cl.CreateBuffer(OpenCL.Net.Context, OpenCL.Net.MemFlags, IntPtr, System.Object, OpenCL.Net.ErrorCode ByRef) at Brahma.OpenCL.Commands.RunBase`1[[Brahma.OpenCL._1D, YC.Brahma.OpenCL, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null]].ArrayToMem(System.Object, System.Type) at Brahma.OpenCL.Commands.RunBase`1[[Brahma.OpenCL._1D, YC.Brahma.OpenCL, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null]].ToIMem(System.Object) at Brahma.OpenCL.Commands.RunBase`1[[Brahma.OpenCL._1D, YC.Brahma.OpenCL, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null]].SetupArgument(System.Object, Int32, System.Object) at DynamicClass.lambda_method(System.Runtime.CompilerServices.Closure, Brahma.OpenCL.Commands.Run`1<Brahma.OpenCL._1D>, Int32, System.Object) at Microsoft.FSharp.Collections.ArrayModule.IterateIndexed[[System.__Canon, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]](Microsoft.FSharp.Core.FSharpFunc`2<Int32,Microsoft.FSharp.Core.FSharpFunc`2<System.__Canon,Microsoft.FSharp.Core.Unit>>, System.__Canon[]) at DynamicClass.lambda_method(System.Runtime.CompilerServices.Closure, Microsoft.FSharp.Core.FSharpFunc`2<Int32,Microsoft.FSharp.Core.FSharpFunc`2<System.Object,Microsoft.FSharp.Core.Unit>>, System.Object[]) at DynamicClass.lambda_method(System.Runtime.CompilerServices.Closure, Microsoft.FSharp.Core.Unit, Brahma.OpenCL._1D, Boolean[], Boolean[]) at GraphBLAS.FSharp.Backend.Common.Copy+copyNonEmpty@28-1[[System.Boolean, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].Invoke(Microsoft.FSharp.Core.FSharpFunc`2<Brahma.OpenCL._1D,Microsoft.FSharp.Core.FSharpFunc`2<Boolean[],Microsoft.FSharp.Core.FSharpFunc`2<Boolean[],Microsoft.FSharp.Core.Unit>>>) at Brahma.FSharp.OpenCL.WorkflowBuilder.Basic+RunCommand@33-1[[Brahma.OpenCL._1D, YC.Brahma.OpenCL, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null],[System.__Canon, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].Invoke(OpenCLEvaluationContext) at Brahma.FSharp.OpenCL.WorkflowBuilder.Evaluation+Bind@64[[System.__Canon, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[System.__Canon, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].Invoke(OpenCLEvaluationContext) at Brahma.FSharp.OpenCL.WorkflowBuilder.Evaluation+Bind@64[[System.__Canon, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[System.__Canon, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].Invoke(OpenCLEvaluationContext) at Brahma.FSharp.OpenCL.WorkflowBuilder.Evaluation+Bind@64[[System.__Canon, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[System.__Canon, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].Invoke(OpenCLEvaluationContext) at Brahma.FSharp.OpenCL.WorkflowBuilder.Basic.OpenCLEvaluationContext.RunSync[[System.__Canon, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]](OpenCLEvaluationContext, OpenCLEvaluation`1<System.__Canon>) at Program.main(System.String[]) Segmentation fault
To Reproduce
module internal Utils = let defaultWorkGroupSize = 256 let getDefaultGlobalSize n = let m = n - 1 m - m % defaultWorkGroupSize + defaultWorkGroupSize module internal rec Copy = let copyArray (inputArray: 'a[]) = if inputArray.Length = 0 then opencl { return [||] } else copyNonEmpty inputArray let private copyNonEmpty (inputArray: 'a[]) = opencl { let inputArrayLength = inputArray.Length let copy = <@ fun (ndRange: _1D) (inputArrayBuffer: 'a[]) (outputArrayBuffer: 'a[]) -> let i = ndRange.GlobalID0 if i < inputArrayLength then outputArrayBuffer.[i] <- inputArrayBuffer.[i] @> let outputArray = Array.zeroCreate inputArray.Length do! RunCommand copy <| fun kernelPrepare -> let ndRange = _1D(Utils.getDefaultGlobalSize inputArray.Length, Utils.defaultWorkGroupSize) kernelPrepare ndRange inputArray outputArray return outputArray } [<EntryPoint>] let main argv = opencl { let array = Array.create 100_000 true let! copied = Copy.copyArray array return array } |> OpenCLEvaluationContext().RunSync |> ignore 0
Desktop (please complete the following information):
Describe the bug Exception when running simple kernel on bool.
To Reproduce
Desktop (please complete the following information):