Is your feature request related to a problem? Please describe.
There are 2 ways to pass the length of input array to the kernel now:
1) By capturing from the closure (leads to extra compilation)
let length = array.Length
let kernel =
<@
fun (range: Range1D) (array: int[]) ->
let gid = range.GlobalID0
if gid < length then
array.[gid] <- 1
@>
2) By passing as explicit kernel parameter (less convenient)
let kernel =
<@
fun (range: Range1D) (array: int[]) (length: int) ->
let gid = range.GlobalID0
if gid < length then
array.[gid] <- 1
@>
Describe the solution you'd like
Make it possible to use .Length property of arrays.
So
let kernel =
<@
fun (range: Range1D) (array: int[]) ->
let gid = range.GlobalID0
if gid < array.Length then
array.[gid] <- 1
@>
will be transformed to
let kernel =
<@
fun (range: Range1D) (array: int[]) (arrayLength: int) ->
let gid = range.GlobalID0
if gid < arrayLength then
array.[gid] <- 1
@>
Is your feature request related to a problem? Please describe. There are 2 ways to pass the length of input array to the kernel now: 1) By capturing from the closure (leads to extra compilation)
2) By passing as explicit kernel parameter (less convenient)
Describe the solution you'd like Make it possible to use
.Length
property of arrays. Sowill be transformed to