FSCL / FSCL.Runtime

FSCL frontend to execute FSCL kernels
Apache License 2.0
34 stars 8 forks source link

Marshalling Exception #5

Open dathayer23 opened 9 years ago

dathayer23 commented 9 years ago

Getting Marshalling Exception when running computation sample. Exception is occuring in call to new HostSideDataHandle(array) in BufferPoolManager.EndOperationOnBuffer as the data field is seen to be an object. With a little instrumentation of the code and adding a try when statement I got the following output at the console which may help you resolve the situation.

Testing [ Accelerated Record Vector Reduce With Utility Function ]

Using HostSideDataHandle in CreateTrackedBuffer Using HostSideDataHandle in Constructor of BufferPoolItem Using HostSideDataHandle in Constructor of BufferPoolItem Using Host Side Data Handle in PromoteUntrackedToTracked Using HostSideDataHandle in EndOperationOnBuffer Type 'System.Object' cannot be marshaled as an unmanaged structure; no meaningful size or offset can be computed. at System.Runtime.InteropServices.Marshal.SizeOfHelper(Type t, Boolean throwIfNotMarshalable) at System.Runtime.InteropServices.Marshal.SizeOf(Type t) at FSCL.Runtime.Managers.HostSideDataHandle.BeforeTransferToDevice() in C:\WEDEV\FSCL.Runtime\src\FSCL.Runtime.Execution\BufferPoolManager.fs:line 60 [ Accelerated Record Vector Reduce With Utility Function ] returned a wrong result!

Testing [ Accelerated Record Vector Reduce With Lambda ]

Using HostSideDataHandle in CreateTrackedBuffer Using HostSideDataHandle in Constructor of BufferPoolItem Using HostSideDataHandle in Constructor of BufferPoolItem Using Host Side Data Handle in PromoteUntrackedToTracked Using HostSideDataHandle in EndOperationOnBuffer Type 'System.Object' cannot be marshaled as an unmanaged structure; no meaningful size or offset can be computed. at System.Runtime.InteropServices.Marshal.SizeOfHelper(Type t, Boolean throwIfNotMarshalable) at System.Runtime.InteropServices.Marshal.SizeOf(Type t) at FSCL.Runtime.Managers.HostSideDataHandle.BeforeTransferToDevice() in C:\WEDEV\FSCL.Runtime\src\FSCL.Runtime.Execution\BufferPoolManager.fs:line 60 [ Accelerated Record Vector Reduce With Lambda ] returned a wrong result! ::::::::::::::::::::::::::::::::::::::::::::::::::::

I have just started looking into your library for use in our system and it looks pretty good

GabrieleCocco commented 9 years ago

Thank you very much. Unfortunately records are really hard to handle efficiently when crossing between managed and unmanaged layers, as like as tuples and other reference types. In FSCL 2.0 records supports has been, at least momentarily, disabled, in favour of a bit lower-level structs.