On 27 April 2018 at 17:23, Serge Stinckwich <[email protected]>
wrote:

> I would like to pass a pointer to an array of pointers to a FFI call and I
> have problems ...
>
> ​I have this method:
>
> runOutputs: aTF_OutputArray size: anInteger
>     | status outvalues |
>     status := TF_Status create.
>     outvalues := FFIExternalArray externalNewType: 'TF_Tensor*' size:
> anInteger.
>     self library
>         runSession: self
>         options: FFIExternalObject null
>         inputs: FFIExternalObject null
>         values: FFIExternalObject null
>

Sorry I'm (again) not addressing your question :P,
but please let me piggyback learning something.

@All, What is the advantage of "FFIExternalObject null" ?
I was under the impression that in general "nil" could be used in similar
situations.

cheers -ben


>         count: 0
>         outputs: aTF_OutputArray getHandle
>         values: outvalues getHandle
>         count: anInteger
>         targets: FFIExternalObject null
>         count: 0
>         metadata: FFIExternalObject null
>         status: status.
>     status check.
>     ^ outvalues
>
> ​the FFI call is like that :
>
> runSession: aTF_Session
>     options: opsTF_Buffer
>     inputs: inTF_OutputArray values: inTF_TensorArray count: inCount
>     outputs: outTF_OutputArray values: outTF_TensorArrayPtr count: outCount
>     targets: aTF_OperationArray count: targetCount
>     metadata: metaTF_Buffer
>     status: aTF_Status
>
>     "F_CAPI_EXPORT extern void TF_SessionRun(
>     TF_Session* session,
>     // RunOptions
>     const TF_Buffer* run_options,
>     // Input tensors
>     const TF_Output* inputs, TF_Tensor* const* input_values, int ninputs,
>     // Output tensors
>     const TF_Output* outputs, TF_Tensor** output_values, int noutputs,
>     // Target operations
>     const TF_Operation* const* target_opers, int ntargets,
>     // RunMetadata
>     TF_Buffer* run_metadata,
>     // Output status
>      TF_Status*);"
>
>         ^ self
>         ffiCall: #(void TF_SessionRun #(TF_Session * aTF_Session,
> TF_Buffer * opsTF_Buffer, TF_Output * inTF_OutputArray, TF_Tensor *
> inTF_TensorArray, int inCount, TF_Output * outTF_OutputArray, TF_Tensor *
> outTF_TensorArrayPtr, int outCount, TF_Operation * aTF_OperationArray, int
> targetCount, TF_Buffer * metaTF_Buffer, TF_Status * aTF_Status))
>         module: TensorFlowCAPI
>
> TF_Tensor is an opaque object.
>
> I have an error: "Could not coerce arguments".
> I guess this is related to the way I pass arguments to the FFI function ?
>
> --
> Serge Stinckwich
> UMI UMMISCO 209 (SU/IRD/UY1)
> "Programs must be written for people to read, and only incidentally for
> machines to execute."http://www.doesnotunderstand.org/
>

Reply via email to