YaccConstructor / Brahma.FSharp

F# quotation to OpenCL translator and respective runtime to utilize GPGPUs in F# applications.
http://yaccconstructor.github.io/Brahma.FSharp
Eclipse Public License 1.0
74 stars 17 forks source link

Sbyte is unsupported #115

Closed dpanfilyonok closed 2 years ago

dpanfilyonok commented 3 years ago

Describe the bug

Unhandled exception. System.Exception: Unsuported kernel type: sbyte
   at Brahma.FSharp.OpenCL.Translator.Type.go@55[a](Type _type, Boolean isKernelArg, FSharpOption`1 size, TargetContext`2 context, String str)
   at Brahma.FSharp.OpenCL.Translator.Body.translateValue[h](Object value, Type sType, TargetContext`2 targetContext)
   at Brahma.FSharp.OpenCL.Translator.Body.Translate(FSharpExpr expr, TargetContext`2 targetContext)
   at Brahma.FSharp.OpenCL.Translator.Body.TranslateAsExpr(FSharpExpr expr, TargetContext`2 targetContext)
   at Brahma.FSharp.OpenCL.Translator.Body.translateCond(FSharpExpr cond, TargetContext`2 targetContext)
   at Brahma.FSharp.OpenCL.Translator.Body.translateListOfArgs@52-1.Invoke(FSharpExpr a)
   at Microsoft.FSharp.Collections.ListModule.Fold[T,TState](FSharpFunc`2 folder, TState state, FSharpList`1 list)
   at Brahma.FSharp.OpenCL.Translator.Body.translateListOfArgs(FSharpList`1 args, TargetContext`2 targetContext)
   at Brahma.FSharp.OpenCL.Translator.Body.translateCall[a](a exprOpt, MethodInfo mInfo, FSharpList`1 _args, TargetContext`2 targetContext)
   at Brahma.FSharp.OpenCL.Translator.Body.Translate(FSharpExpr expr, TargetContext`2 targetContext)
   at Brahma.FSharp.OpenCL.Translator.Body.TranslateAsExpr(FSharpExpr expr, TargetContext`2 targetContext)
   at Brahma.FSharp.OpenCL.Translator.Body.translateCond(FSharpExpr cond, TargetContext`2 targetContext)
   at Brahma.FSharp.OpenCL.Translator.Body.translateListOfArgs@52-1.Invoke(FSharpExpr a)
   at Microsoft.FSharp.Collections.ListModule.Fold[T,TState](FSharpFunc`2 folder, TState state, FSharpList`1 list)
   at Brahma.FSharp.OpenCL.Translator.Body.translateListOfArgs(FSharpList`1 args, TargetContext`2 targetContext)
   at Brahma.FSharp.OpenCL.Translator.Body.translateCall[a](a exprOpt, MethodInfo mInfo, FSharpList`1 _args, TargetContext`2 targetContext)
   at Brahma.FSharp.OpenCL.Translator.Body.Translate(FSharpExpr expr, TargetContext`2 targetContext)
   at Brahma.FSharp.OpenCL.Translator.Body.translateLet(FSharpVar var, FSharpExpr expr, FSharpExpr inExpr, TargetContext`2 targetContext)
   at Brahma.FSharp.OpenCL.Translator.Body.Translate(FSharpExpr expr, TargetContext`2 targetContext)
   at <StartupCode$Brahma-FSharp-OpenCL-Translator>.$Translator.go$cont@153(IEnumerable`1 translatorOptions, TargetContext`2 context, FSharpExpr expr, FSharpList`1 vars, Unit unitVar)
   at <StartupCode$Brahma-FSharp-OpenCL-Translator>.$Translator.go@148-13(IEnumerable`1 translatorOptions, TargetContext`2 context, FSharpExpr expr, FSharpList`1 vars)
   at Brahma.FSharp.OpenCL.Translator.FSQuotationToOpenCLTranslator.translate(FSharpExpr qExpr, IEnumerable`1 translatorOptions)
   at <StartupCode$Brahma-FSharp-OpenCL-Translator>.$Translator.action@1(FSQuotationToOpenCLTranslator this, FSharpExpr qExpr, IEnumerable`1 translatorOptions, Unit _arg1)
   at Brahma.FSharp.OpenCL.Translator.FSQuotationToOpenCLTranslator.Translate(FSharpExpr qExpr, IEnumerable`1 translatorOptions)
   at Brahma.FSharp.OpenCL.Core.CLCodeGenerator.GenerateKernel(FSharpExpr lambda, ComputeProvider provider, ICLKernel kernel, IEnumerable`1
translatorOptions)
   at Brahma.FSharp.OpenCL.Core.ComputeProvider.CompileQuery[T](ComputeProvider this, FSharpExpr lambda, IEnumerable`1 translatorOptions, FSharpList`1 additionalSources)
   at Brahma.FSharp.OpenCL.Core.ComputeProvider.Compile[TRange,a](ComputeProvider this, FSharpExpr`1 query, FSharpOption`1 _options, FSharpOption`1 translatorOptions, FSharpOption`1 _outCode, FSharpOption`1 kernelName, FSharpOption`1 _additionalSources)

To Reproduce

let kernel =
    <@
        fun (range: _1D)
            (array: sbyte[]) ->

            let gid = range.GlobalID0
            array.[gid] <- array.[gid] + 1y
    @>

opencl {
    let array = Array.zeroCreate<sbyte> 10
    do! RunCommand kernel (fun kernelPrepare -> kernelPrepare <| _1D(10) <| array)
    let! _ = ToHost array
    ()
}

Additional context Version: 2.0.0-alpha6.1 Framework: netcoreapp3.1

gsvgit commented 2 years ago

Should be fixed. Please, check.