[Pharo-project] NativeBoost and Cog. A working protype.

Fernando olivero fernando.olivero at usi.ch
Fri Oct 1 03:33:08 EDT 2010


Just a thought, 

I would say that Lukas Helvetia framework could be used here,  to cleanly embed C++, C or whatever you like  syntax into the existing Smalltalk ambient.

So in the background NativeBoost would behave more uniformly, because everything in the end is smalltalk code.

Fernando


On Oct 1, 2010, at 8:39 AM, Schwab,Wilhelm K wrote:

> Sig,
> 
> I'm pointing out that "do it all in Smalltalk" has limits, both in syntax (C++ is generally a better formula translator than Smalltalk; Smalltalk is better at expressing just about anything else) and in performance, unless you can stop boxing/unboxing the floats, which it sounds like you can't.
> 
> One performance penalty that I look forward to suffering is to have an external library calling into Pharo to do function evaluations.  In most cases, the number of operations will be small and the convenience of having the code in the image will be most welcome.
> 
> Bill
> 
>>> ......



>>> ________________________________________
>>> From: pharo-project-bounces at lists.gforge.inria.fr [pharo-project-bounces at lists.gforge.inria.fr] On Behalf Of Stephen Pair [stephen at pairhome.net]
>>> Sent: Thursday, September 30, 2010 11:33 AM
>>> To: Pharo-project at lists.gforge.inria.fr
>>> Subject: Re: [Pharo-project] NativeBoost and Cog. A working protype.
>>> 
>>> On Wed, Sep 29, 2010 at 11:41 PM, Igor Stasenko <siguctua at gmail.com<mailto:siguctua at gmail.com>> wrote:
>>> On 30 September 2010 06:20, Schwab,Wilhelm K <bschwab at anest.ufl.edu<mailto:bschwab at anest.ufl.edu>> wrote:
>>>> One really crazy idea: inline C.  Is there any way that one could put C code into a method, have it compiled and captured somehow as part of the image?  Perhaps I am underestimating Cog and will soon not need to bother with stuff like this, but a recent addition was
>>>> 
>>>> void LogOnePlus(double * data, unsigned long size)
>>>> /*
>>>>       Add one and take log10() over the buffer; in-place transformation!
>>>> */
>>>> {
>>>>       for(unsigned long i=0; i<size; i++){
>>>>       data[i] = log10(data[i]+1);
>>>>       }
>>>> }
>>>> 
>>>> That's a simple calculation, but do it millions of times and it adds up.  Even if Cog is sufficiently far reaching to translate such things, there are still times when C/C++ does a far nicer job of translating formulas than does Smalltalk.  Like I said, it's a crazy idea, and if I have to choose, I'd rather have callbacks :)
>>>> 
>>> 
>>> Of course its possible.
>>> After porting C parser/compiler into smalltalk :)
>>> Or perhaps some meta-language which looks like C, but which easier to
>>> translate to native code.
>>> 





More information about the Pharo-dev mailing list