<br><br><div class="gmail_quote">On Wed, Feb 27, 2013 at 6:12 PM, Juan Vuletich <span dir="ltr"><<a href="mailto:juanlists@jvuletich.org" target="_blank">juanlists@jvuletich.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
Hi Eliot,<br>
<div class="im"><br>
> On Wed, Feb 27, 2013 at 10:03 AM, Eliot Miranda<br>
> <<a href="mailto:eliot.miranda@gmail.com">eliot.miranda@gmail.com</a>>wrote:<br>
><br>
>> Hi Juan,<br>
>><br>
>> On Wed, Feb 27, 2013 at 8:45 AM, Juan Vuletich (mail lists) <<br>
>> <a href="mailto:juanlists@jvuletich.org">juanlists@jvuletich.org</a>> wrote:<br>
>><br>
>>><br>
>>> Quoting "David T. Lewis" <<a href="mailto:lewis@mail.msen.com">lewis@mail.msen.com</a>>:<br>
>>><br>
>>><br>
>>>> On Wed, Feb 27, 2013 at 08:19:20AM -0300, Juan Vuletich (mail lists)<br>
>>>> wrote:<br>
>>>><br>
>>>>><br>
>>>>> Hi Folks,<br>
>>>>><br>
>>>>> In Cuis 4.1 (<br>
</div>>>>>> <a href="https://github.com/jvuletich/**Cuis/blob/master/**" target="_blank">https://github.com/jvuletich/**Cuis/blob/master/**</a><br>
>>>>> Cuis4WithLatestUpdates/Cuis4.**1-1619.zip?raw=true<<a href="https://github.com/jvuletich/Cuis/blob/master/Cuis4WithLatestUpdates/Cuis4.1-1619.zip?raw=true" target="_blank">https://github.com/jvuletich/Cuis/blob/master/Cuis4WithLatestUpdates/Cuis4.1-1619.zip?raw=true</a>>)<br>
<div class="im">>>>>> I included AndreasSystemProfiler. But sometimes it is good to use a<br>
>>>>> StackVM for profiling, to avoid Cog inlining and get results that are<br>
>>>>> easier to<br>
>>>>> follow.<br>
>>>>><br>
>>>>> The Mac and Windows VMs referenced from squeakVM.org don't include<br>
>>>>> the<br>
>>>>> required primitives. The only VMs with those primitives I found are<br>
>>>>> CogVMs from Eliot's site.<br>
>>>>><br>
>>>>><br>
>>>> Thanks,<br>
>>>><br>
>>>> I just added a mantis issue for this:<br>
>>>><br>
</div>>>>> <a href="http://bugs.squeak.org/view.**php?id=7746" target="_blank">http://bugs.squeak.org/view.**php?id=7746</a><<a href="http://bugs.squeak.org/view.php?id=7746" target="_blank">http://bugs.squeak.org/view.php?id=7746</a>><br>
<div class="im">>>>><br>
>>>> Eliot, can you give me a quick pointer to the primitives in Cog that<br>
>>>> need<br>
>>>> to be added to the interpreter VM? Thanks.<br>
>>>><br>
>>>> Does anybody know if there are plans to add those primitives to<br>
>>>>> StackVMs?<br>
>>>>><br>
>>>>><br>
>>>> A terminology note, this issue is for the interpreter VM. The stack VM<br>
>>>> is<br>
>>>> part of Cog, and I expect that a stack VM will already contain the<br>
>>>> necessary<br>
>>>> primitives (though I did not check).<br>
>>>><br>
>>><br>
>>> Thanks for the correction. I understand that the interpreter VMs will<br>
>>> have the primitives in the future. Thank you!<br>
>>><br>
>>> Let me restate, then. Does anybody know if there are recent StackVMs<br>
</div>>>> precompiled for major platforms? I could not find any at Eliot愀 site.<br>
<div class="im">>>><br>
>><br>
>> I could be encouraged to build and add these to my site. But I wonder<br>
>> why<br>
>> you need them. What's wrong with the Cog VMs?<br>
>><br>
><br>
> First of all, Cog doesn't do inlining; it only does good inline cacheing,<br>
> including memoing whether a send is an MNU. Second, one can disable the<br>
> JIT using -cogmaxlits -1 on the command line. You'll get something slower<br>
> than the StackVM (because it'll be asking the jit whether methods should<br>
> be<br>
> jit all the time) but you should get values close to the StackVM.<br>
<br>
</div>Thanks for the correction wrt inlining. There's nothing wrong with Cog.<br>
Cog is wonderful. Also thanks for the -cogmaxlits -1 tip. I'm sure I'll<br>
find use for it.<br>
<br>
Let me explain my problem.<br>
<br>
Tim's recent feedback on performance in Raspberry PI made me want to go do<br>
some profiling on a slow machine. The slowest machine I have at hand is a<br>
Thinkpad T23, Pentium III, 1.1GHz. I use a program called "Cpukiller3",<br>
that can slow it down to (for example) Raspi performance levels. Besides,<br>
I integrated AndreasSystemProfiler in Cuis, and I prefer using it. Now I<br>
need a suitable Windows VM:<br>
- CogVM: Can't run on the P-III, as it doesn't include SSE2 instructions.<br>
- StackVM: Not currently built by you. I don't know if it would require<br>
SSE2, anyway.<br></blockquote><div><br></div><div><br></div><div><div><br></div><div>I certainly intended that neither of these would need SSE2, but that they would use SSE2 if available. SSE2 instructions are used in the Stack and Cog VMs for locking/atomic instructions used in things like signalling external semaphores. The code in platforms/Cross/vm/sqAtomicOps.h is supposed to fall back on non-SSE2 instructions if SSE2 is not defined (but I've not tested it recently). So try building on Windows with SSE2 not defined and you may get lucky.</div>
<div><br></div><div>In Cog, SSE2 is further used to implement fast floating-point primitives. If the processor doesn't have SSE2 the Cog doesn't generate the primitives. So the thing to try is building the current sources but deleting -msse2 from the line in cygwinbuild/Makefile:</div>
<div><br></div><div>CFLAGS:= $(INCLUDEPATH) -msse2 -ggdb2 -mwindows -mthreads -mno-cygwin -mwin32 \</div><div> -mno-rtd -mms-bitfields -mno-accumulate-outgoing-args $(OFLAGS) $(NOBUILTIN)</div><div><br></div><div>If you try this let me know either way. I can add the description to HowToBuild.</div>
</div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
- InterpreterVM a.k.a. ClosureVM. Currently doesn't include the new<br>
profiling primitives. Will include them, eventually. Right now, this is<br>
what I'm using, limited to less precise MessageTally. It is also what I've<br>
been using for several years to look for code to optimize in Cuis.<br>
<br>
Additionally, wrt Cog, on 2013/1/23 you wrote:<br>
"That said there are still limitations with primitives and Cog. Currently<br>
Cog only samples "interpreter" primitives. Those primitives it implements<br>
in machine code (integer and float arithmetic, closure evaluation, at:,<br>
identityHash) are not sampled and won't show up; they will be charged to<br>
the calling method.".<br>
I'm not sure if this is a real issue. And I don't know if this limitation<br>
applies to StackVM or InterpreterVM. Can you please clarify?<br>
<br>
Another option would be some software for that can slow down an Atom or<br>
Core processor in a reliable and predictable way, and just use Cog. So<br>
far, I couldn't find any. Suggestions welcome!<br>
<br>
Finally, I could take the dust off my XO (300MHz Geode processor) and do<br>
profiling there. It is already slow enough, and can run Cog.<br>
<br>
Thanks in advance, Eliot.<br>
<div class="im"><br>
><br>
>><br>
>>><br>
>>><br>
>>> Dave<br>
>>>><br>
>>>> Thanks,<br>
>>>>> Juan Vuletich<br>
>>>>><br>
>>>><br>
>>>><br>
>>><br>
>>><br>
>>> Cheers,<br>
>>> Juan Vuletich<br>
>>><br>
>>><br>
>><br>
>><br>
>> --<br>
>> best,<br>
>> Eliot<br>
>><br>
><br>
><br>
><br>
> --<br>
> best,<br>
> Eliot<br>
><br>
<br>
</div>Cheers,<br>
Juan Vuletich<br>
</blockquote></div><br><br clear="all"><div><br></div>-- <br>best,<div>Eliot</div>