On 27 April 2018 at 17:23, Serge Stinckwich <serge.stinckwich@gmail.com> 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/