[squeak-dev] Interesting survey about smalltalk
arul selvan
arul.selvan at gmail.com
Mon Jun 21 07:34:58 UTC 2010
nicolas,
i will be interested to test if a port for squeak is available
arul
On Mon, Jun 21, 2010 at 12:41 PM, Nicolas Cellier
<nicolas.cellier.aka.nice at gmail.com> wrote:
> I started Smallapack for this purpose.
> Smallapack interfaces BLAS+LAPACK thru FFI.
> Very much like numpy...
>
> Smallapack works quite well in VW and Dolphin...
> (In fact it did work very well since 1990 with st80 user primitives...)
> ...Unfirtunately not so in Squeak (VM crach possibly).
>
> I'd like to put more time in it, but so far there has not been so much interest.
>
> Nicolas
>
> 2010/6/21 Jimmie Houchin <jdev at cyberhaus.us>:
>> On 6/20/2010 10:41 AM, Lawson English wrote:
>>>
>>> On 6/20/10 6:08 AM, Nicolas Cellier wrote:
>>>>
>>>> 2010/6/20 Michael Haupt<mhaupt at gmail.com>:
>>>>>
>>>>> Hi Nicolas,
>>>>>
>>>>> On Sun, Jun 20, 2010 at 11:17 AM, Nicolas Cellier
>>>>> <nicolas.cellier.aka.nice at gmail.com> wrote:
>>>>>>
>>>>>> About 8) : True, every single operation results in memory allocation
>>>>>> / garbage collection, a burden for number crunching.
>>>>>
>>>>> really?
>>>>>
>>>>> There is this nice book by Didier Besset called "Object-Oriented
>>>>> Implementation of Numerical Methods. An Introduction with Java and
>>>>> Smalltalk.: An Introduction with Java and Smalltalk". It can't be
>>>>> *that* bad. :-)
>>>>
>>>> Agree, "not worse than Matlab" was the meaning of my message.
>>>>>>
>>>>>> My own answer was: use C/FORTRAN for optimized number crunching
>>>>>> functions. Use Smalltalk for any higher level/GUI function (via
>>>>>> DLLCC/FFI). We may have more than 1 hammer in your toolset!
>>>>>
>>>>> With GPU connectivity things emerging, number crunching might even be
>>>>> an interesting area for Smalltalk.
>>>>>
>>>>> Best,
>>>>> Michael
>>>>
>>>> Yes, this falls in vectorizing the operations.
>>>> But I would go for a GPU-BLAS implementation available to any language
>>>> (Smalltalk and C as well).
>>>>
>>>> Nicolas
>>>
>>> How many parallel squeak processes would be required to = the speed of one
>>> native library for arbitrary precision math, or for other math intensive
>>> purposes?
>>>
>>> Lawson
>>
>> Hello,
>>
>> I would love to be using Squeak for my financial application. Numerical
>> performance isn't currently what is stopping me. My problem is that I
>> require interfacing with a Windows COM dll and in a future version with a
>> Java library. Hopefully at some point I will be able to port to Squeak. I
>> would much prefer it to using Python, which is what I am currently using.
>>
>> I didn't even know Squeak was in the running until I discovered the Matrix
>> class. And for what I need to do it performs reasonably adequately. However
>> Squeak does not to my knowledge have a comprehensive collection of
>> mathematics methods to be able to be applied to a variety of data. Currently
>> I am using Python and Numpy which has a nicely optimized
>> Mathematics/Scientific set of functions using optimized C/Fortran libraries.
>> I would love to see Squeak compete in this area. In fact the Numpy people
>> are currently refactoring the library to turn it into a C library usable by
>> other languages.
>>
>> Here is some samples from my experimentation.
>>
>> Some of what I am doing is doing rolling calculations over my dataset.
>>
>> dataset is one weeks worth of OHLC data of a currency pair.
>>
>> In Squeak I have.
>>
>> ttr := [
>> 1 to: ((m rowCount) -500) do: [:i || row rowSum rowMax rowMin rowMedian
>> rowAverage |
>> row := (m atRows: i to: (499+i) columns: 5 to: 5).
>> rowSum := row sum.
>> rowMax := row max.
>> rowMin := row min.
>> rowMedian := row median.
>> rowAverage := row average.
>> omd add: {rowSum . rowMax . rowMin . rowMedian . rowAverage}]] timeToRun.
>>
>> Squeak: 17 seconds, with Cog 4.2 seconds (nice work guys
>> (Eliot/Teleplace)
>>
>> In Python/Numpy I have.
>>
>> import numpy as np
>> def speedtest(array,omd):
>> t1 = time.time()
>> for i in range(0, (len(a)-500)):
>> rowmax = np.max(a['bidclose'][i:i+500])
>> rowmin = np.min(a['bidclose'][i:i+500])
>> rowsum = np.sum(a['bidclose'][i:i+500])
>> rowmedian = np.median(a['bidclose'][i:i+500])
>> rowmean = np.mean(a['bidclose'][i:i+500])
>> omd.append((rowsum, rowmax, rowmin, rowmedian, rowmean))
>> return time.time()-t1
>>
>> Python: .7 seconds
>>
>> Python/Numpy performs well, is reasonably nice to work with. But I would
>> give up the performance to be able to use Squeak. The live environment and
>> debugging would be invaluable for experimentation.
>>
>> Hopefully this will give you some idea.
>>
>> Jimmie
>>
>>
>
>
More information about the Squeak-dev
mailing list
|