Sorry, this content is no longer available

Ask Your Question
1

Saving compiled expressions

asked 12 years ago

bolverk gravatar image

I have a large symbolic expression, such that converting it to fast callable takes more than a minute. After the conversion, evaluation is much faster than the symbolic evaluation. However, I don't know how to save the fast_callable so I could use it in other scripts. When I tried pickling it, I got the following error:

AttributeError: 'sage.ext.interpreters.wrapper_cdf.Wrapper_cdf' object has no attribute 'write'

Using sage's save and load methods, I was able to load it to another scipt, but when I tried to call it I got the ValueError.

Any help would be welcome.

Preview: (hide)

1 Answer

Sort by » oldest newest most voted
1

answered 12 years ago

benjaminfjones gravatar image

I believe that fast_callable produces, and then compiles, C code under the hood; the object you get back from fast_callableis a wrapper around a foreign function call and hence can't be saved and restored by Python/Sage (see http://docs.python.org/2/library/pick...).

On the other hand, you can have Sage (via sympy) generate C code for a function that provides evaluation of your expression on C doubles. I gave a short example of this on this question:

http://ask.sagemath.org/question/366/...

It may also be possible to convert your expression into a python function and send that through the Cython compiler to produce compiled C code with a direct interface in Sage... I don't know if that's possible in your situation or not.

Preview: (hide)
link

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools

Stats

Asked: 12 years ago

Seen: 365 times

Last updated: Feb 22 '13