hi, > On 27 Apr 2018, at 13:06, Ben Coman <[email protected]> wrote: > > > > On 27 April 2018 at 17:23, Serge Stinckwich <[email protected] > <mailto:[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.
nope. NULL != nil. nil = the instance of UndefinedObject NULL = external address pointing to 0. cheers, Esteban > > 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/ <http://www.doesnotunderstand.org/>
