Open
Description
Describe the bug
Unhandled exception. Brahma.FSharp.OpenCL.Translator.InvalidKernelException: Seems, that you try to use variable with name "rightItem", that declared out of quotation. Please, pass it as quoted function's p
arametaer.
at Brahma.FSharp.OpenCL.Translator.Body.f@53-67[a](FSharpVar var, FSharpOption`1 _arg31)
at [email protected](TranslationContext`2 state)
at Brahma.FSharp.OpenCL.Translator.StateUtils.op_GreaterGreaterEquals@82-2.Invoke(a state)
at Brahma.FSharp.OpenCL.Translator.Body.translateAsExpr@372-1.Invoke(TranslationContext`2 state)
at [email protected](State`2 arg10@)
at Microsoft.FSharp.Primitives.Basics.List.map[T,TResult](FSharpFunc`2 mapping, FSharpList`1 x) in D:\workspace\_work\1\s\src\fsharp\FSharp.Core\local.fs:line 248
at Microsoft.FSharp.Collections.ListModule.Map[T,TResult](FSharpFunc`2 mapping, FSharpList`1 list) in D:\workspace\_work\1\s\src\fsharp\FSharp.Core\list.fs:line 75
at Brahma.FSharp.OpenCL.Translator.Body.f@53-125(UnionCaseInfo unionCaseInfo, FSharpList`1 exprs, TranslationContext`2 _arg89, Type`1 _arg90)
at [email protected](TranslationContext`2 state)
at Brahma.FSharp.OpenCL.Translator.Body.translateAsExpr@372-1.Invoke(TranslationContext`2 state)
at [email protected](TranslationContext`2 state)
at Brahma.FSharp.OpenCL.Translator.StateUtils.op_GreaterGreaterEquals@82-2.Invoke(a state)
at Brahma.FSharp.OpenCL.Translator.Body.translateAsExpr@372-1.Invoke(TranslationContext`2 state)
at Brahma.FSharp.OpenCL.Translator.Body.translateBinding@119-1.Invoke(TranslationContext`2 state)
at [email protected](TranslationContext`2 state)
at [email protected](TranslationContext`2 state)
at <StartupCode$Brahma-FSharp-OpenCL-Translator>[email protected](state context)
at [email protected](TranslationContext`2 context)
at Brahma.FSharp.OpenCL.Translator.StateUtils.op_GreaterGreaterEquals@82-2.Invoke(a state)
at [email protected](a state)
at [email protected](TranslationContext`2 state)
at <StartupCode$Brahma-FSharp-OpenCL-Translator>[email protected](TranslationContext`2 state)
at <StartupCode$Brahma-FSharp-OpenCL-Translator>[email protected](TranslationContext`2 state)
at Brahma.FSharp.OpenCL.Translator.FSQuotationToOpenCLTranslator.translate(FSharpExpr expr)
at Brahma.FSharp.OpenCL.Translator.FSQuotationToOpenCLTranslator.Translate(FSharpExpr qExpr)
To Reproduce
let right (opAdd: Expr<'a option -> 'b option -> 'c option>) =
<@
fun (rightItem: 'b) ->
(%opAdd) None (Some rightItem)
@>
let preparePositionsGeneral (rightRead: Expr<'b -> 'c option>) =
<@
fun (ndRange: Range1D)
(length: int)
(rightValues: ClArray<'b>) ->
let gid = ndRange.GlobalID0
if gid < length then
let b = (%rightRead) rightValues.[gid]
()
@>
let preparePositions opAdd =
preparePositionsGeneral (right opAdd)
let translator = FSQuotationToOpenCLTranslator.CreateDefault()
translator.Translate (preparePositions StandardOperations.float32Sum)
|> fst
|> AST.print
|> printfn "%A"
Workarounds
To use following function instead
let right (opAdd: Expr<'a option -> 'b option -> 'c option>) =
<@
fun (rightItem: 'b) ->
let tmp = Some rightItem
(%opAdd) None tmp
@>
Additional context
- OS: Windows 11
- Brahma.FSharp: 2.0.1
Metadata
Metadata
Assignees
Labels
No labels