You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Some of the functions exposed by the C API have a variable number of parameters, depending on the underlying Futhark program:
Entry points have a parameter for every input and for every output.
Record creation functions take a parameter for every field.
Sum type creation functions take a parameter for every payload value.
Array creation functions take a parameter for every dimension.
...others?
This is inconvenient for some users, particularly those making use of run-time linking (dlopen()), as it is difficult to invoke a function with a dynamically known number of arguments. It is also slightly inconvenient for other FFIs in some cases.
As a solution, we could expose "packed" variants of these functions (does a better name exist?) where each sequence of variable-length parameters is replaced with a single array that contains pointers to those values.
The text was updated successfully, but these errors were encountered:
In order to not complicate the code generator for this relatively niche use case, the best way to implement this would be to have a separate facility (which can be part of futhark) for generating packed wrapper code from a manifest file.
Some of the functions exposed by the C API have a variable number of parameters, depending on the underlying Futhark program:
This is inconvenient for some users, particularly those making use of run-time linking (
dlopen()
), as it is difficult to invoke a function with a dynamically known number of arguments. It is also slightly inconvenient for other FFIs in some cases.As a solution, we could expose "packed" variants of these functions (does a better name exist?) where each sequence of variable-length parameters is replaced with a single array that contains pointers to those values.
The text was updated successfully, but these errors were encountered: