Tuesday, March 20, 2018

Digest for comp.programming.threads@googlegroups.com - 8 updates in 7 topics

computer45 <computer45@cyber.com>: Mar 20 12:00AM -0400

Hello..
 
Read this:
 
I will provide you with a more rigorous logical proof..
 
You have seen me before proving to you my scalable reference counting
algorithm that i have "invented" and i have debugged it and i think it
is working correctly, but I will provide you with a more rigorous
logical proof soon and i will include it on the zip file, so that i will
perhaps sell it to Embarcadero and to other software companies.
 
I am still inventing scalable algorithms and other algorithms.
 
My next invention is a FIFO queue that is waitfree on the
producer side and that is lockfree on the consumer side and that
will use my new scalable reference counting.
 
So stay tuned my algorithm inventions and there implementations
are coming soon.
 
 
Thank you,
Amine Moulay Ramdane,.
computer45 <computer45@cyber.com>: Mar 19 11:19PM -0400

Hello,
 
 
I have to prove my scalable reference counting algorithm, like with
mathematical proof, so i will use logic to prove like in PhD papers:
 
You will find the code of my scalable reference counting inside
AMInterfacedObject.pas inside the zip file here:
 
https://sites.google.com/site/aminer68/scalable-reference-counting-with-efficient-support-for-weak-references
 
 
If you look inside the code there is two methods, _AddRef() and
_Release() methods, i am using two scalable counting networks,
think about them like counters, so in the _AddRef() method i am
executing the following:
 
v1 := counting_network_next_value(cn1);
 
cn1 is the scalable counting network, and counting_network_next_value()
is a function that increment the scalable counting network by 1.
 
In the _Release() method i am executing the following:
 
v2 := counting_network_next_value(cn1);
v1 := counting_network_next_value(cn2);
v1 := counting_network_next_value(cn2);
 
So my scalable algorithm is "smart", because the logical proof is
that i am calling counting_network_next_value(cn1) first in the
above, so this allows my scalable algorithm to work correctly,
because we are advancing cn1 by 1 to obtain the value of cn1,
so the other threads are advancing also cn1 by one inside
_Release() , it is the last thread that is advancing cn1
by 1 that will make the reference counter equal to 0 , so
this scalable algorithm is working. Please look more carefully
at my algorithm and you will notice that it is working as
i have just logically proved it.
 
 
Thank you,
Amine Moulay Ramdane.
computer45 <computer45@cyber.com>: Mar 19 10:07PM -0400

Hello....
 
 
To understand better my new fully scalable reference counting algorithm,
i will explain it to you:
 
I have optimized it more, now i am using only tokens and no antitokens
in the balancers of the scalable counting networks, so i am only
supporting increment, not decrement, so you have to be smart to invent
it correctly, this is what i have done, so look at the
AMInterfacedObject.pas file inside my zip file, you will notice that it
uses counting_network_next_value() function,
counting_network_next_value() increments the scalable counter network by
1, the _AddRef() method is simple, it increment by 1 to increment the
reference to the object, but look inside the _Release() method it calls
counting_network_next_value() three times, and my invention is calling
counting_network_next_value(cn1) first inside the _Release() method to
be able to make my scalable algorithm works, so just debug it more and
you will notice that my scalable algorithm is smart and it is working
correctly, i have debugged it and i think it is working correctly.
 
I have found this Scalable Reference Counting Garbage Collector, and i
think it is the only one invented by two PhDs from Israel:
 
http://www.cs.technion.ac.il/users/wwwb/Reports/1999/CS0967.pdf
 
So i have decided to invent and to implement another fully scalable
reference counting algorithm with efficient support for weak references,
it is fully scalable on multicores and manycores systems and here it is:
 
https://sites.google.com/site/aminer68/scalable-reference-counting-with-efficient-support-for-weak-references
 
Hope you will be happy with my project , because since i "love" Delphi,
i have decided to bring the "best" to Delphi, my scalable reference
counting algorithm can be ported to C++Builder or to other C++ compilers
also.
 
Thank you,
Amine Moulay Ramdane.
computer45 <computer45@cyber.com>: Mar 19 09:49PM -0400

Hello..
 
 
To understand better my new fully scalable reference counting algorithm,
i will explain it to you:
 
I have optimized it more, now i am using only tokens and no antitokens
in the balancers of the scalable counting networks, so i am only
supporting increment, not decrement, so you have to be smart to
invent it correctly, this is what i have done, so look at
the AMInterfacedObject.pas file inside my zip file,
you will notice that it uses counting_network_next_value() function,
counting_network_next_value() increment the scalable counter network
by 1, the _AddRef() function is simple, it increment by 1 to increment
the reference to the object, but look inside the _Release() function
it calls counting_network_next_value() three times, and my invention
is calling counting_network_next_value(cn1) first inside the _Release()
function to be able to make my scalable algorithm works, so just
debug it more and you will notice that my scalable algorithm is smart
and it is working correctly, i have debugged it and i think it is
working correctly.
 
 
About scalable reference counting..
 
I have found this Scalable Reference Counting Garbage Collector, and i
think it is the only one invented by two PhDs from Israel:
 
http://www.cs.technion.ac.il/users/wwwb/Reports/1999/CS0967.pdf
 
 
So i have decided to invent and to implement another fully scalable
reference counting algorithm with efficient support for weak references,
it is fully scalable on multicores and manycores systems and here it is:
 
https://sites.google.com/site/aminer68/scalable-reference-counting-with-efficient-support-for-weak-references
 
Hope you will be happy with my project , because since i "love" Delphi,
i have decided to bring the "best" to Delphi, my scalable reference
counting algorithm can be ported to C++Builder or to other C++ compilers
also.
 
 
Thank you,
Amine Moulay Ramdane.
computer45 <computer45@cyber.com>: Mar 19 09:05PM -0400

Hello,
 
About scalable reference counting..
 
I have found this Scalable Reference Counting Garbage Collector, and i
think it is the only one invented by two PhDs from Israel:
 
http://www.cs.technion.ac.il/users/wwwb/Reports/1999/CS0967.pdf
 
 
So i have decided to invent and to implement another fully scalable
reference counting algorithm with efficient support for weak references,
it is fully scalable on multicores and manycores systems and here it is:
 
https://sites.google.com/site/aminer68/scalable-reference-counting-with-efficient-support-for-weak-references
 
Hope you will be happy with my project , because since i "love" Delphi,
i have decided to bring the "best" to Delphi, my salable reference
counting algorithm can be ported to C++Builder or to other C++ compilers
also.
 
 
Thank you,
Amine Moulay Ramdane.
computer45 <computer45@cyber.com>: Mar 19 08:29PM -0400

Hello...
 
Scalable reference counting with efficient support for weak references
version 1.01
 
I have modified a little bit my scalable algorithm, now as you will
notice i am not using decrement with support for antitokens in the
balancers of the scalable counting networks, i am only using an
"increment", please look at my new scalable algorithm inside the zip
file, i think it is working correctly. Also notice that the returned
value of _AddRef() method will be valid if it is equal to 0, please read
also the following to understand better:
 
Author: Amine Moulay Ramdane
 
Description:
 
This is my scalable reference counting with support for efficient weak
references, and since problems that cannot be solved without weak
references are rare, so this library does scalable very well, this
scalable reference counting is implemented using scalable counting
networks that eliminate completely false sharing , so it is fully
scalable on multicore processors and manycore processors and this
scalable algorithm is optimized, and this library does work on both
Windows and Linux (x86), and it is easy to port to Mac OS X.
 
Here is the parameters of the constructor:
 
First parameter is: The width of the scalable counting networks that
permits my scalable refererence counting algorithm to be scalable, this
parameter must be 1 to 31, it is now at 4 , this is the power, so it is
equal to 2 power 4 , that means 24=16, and you have to pass this
counting networks width to the n of following formula:
 
(n*log(n)*(1+log(n)))/4
 
The log of the formula is in base 2
 
This formula gives the number of gates of the scalable counting
networks, and if we replace n by 16, this will equal 80 gates, that
means you can scale the scalable counting networks to 80 cores, and
beyond 80 cores you will start to have contention.
 
Second parameter is: a boolean that tells if reference counting is used
or not, it is by default to true, that means that reference counting is
used.
 
About the weak references support: the Weak<T> type supports assignment
from and to T and makes it usable as if you had a variable of T. It has
the IsAlive property to check if the reference is still valid and not a
dangling pointer. The Target property can be used if you want access to
members of the reference.
 
Note: the use of the IsAlive property on our weak reference, this tells
us whether the referenced object is still available, and provides a safe
way to get a concrete reference to the parent.
 
I have ported efficient weak references support to Linux by implementing
efficient code hooking, look at my DSharp.Core.Detour.pas file for Linux
that i have written to see how i have implemented it in the Linux
library. Please look at the example.dpr and test.pas demos to see how
weak references work etc.
 
Call _AddRef() and _Release() methods to manually increment or decrement
the number of references to the object.
 
You can download my library for Windows and Linux from:
 
https://sites.google.com/site/aminer68/scalable-reference-counting-with-efficient-support-for-weak-references
 
 
- Platform: Windows and Linux(x86)
 
Language: FPC Pascal v3.1.x+ / Delphi 2007+:
 
http://www.freepascal.org/
 
Required FPC switches: -O3 -Sd
 
-Sd for delphi mode....
 
Required Delphi switches: -$H+ -DDelphi
 
For Delphi XE versions and Delphi Tokyo use the -DXE switch
 
The defines options inside defines.inc are:
 
{$DEFINE CPU32} for 32 bit systems
 
{$DEFINE CPU64} for 64 bit systems
 
 
Thank you,
Amine Moulay Ramdane.
computer45 <computer45@cyber.com>: Mar 19 08:51PM -0400

On 3/19/2018 8:29 PM, computer45 wrote:
> balancers of the scalable counting networks, i am only using an
> "increment", please look at my new scalable algorithm inside the zip
> file, i think it is working correctly. Also notice that the returned
 
 
I mean _Release(), not _AddRef().
 
computer45 <computer45@cyber.com>: Mar 19 06:52PM -0400

Hello..
 
Scalable reference counting with efficient support for weak references
version 1.0
 
Author: Amine Moulay Ramdane
 
Description:
 
This is my scalable reference counting with support for efficient weak
references, and since problems that cannot be solved without weak
references are rare, so this library does scalable very well, this
scalable reference counting is implemented using scalable counting
networks that eliminate completely false sharing , so it is fully
scalable on multicore processors and manycore processors and this
scalable algorithm is optimized, and this library does work on both
Windows and Linux (x86), and it is easy to port to Max OS X.
 
Here is the parameters of the constructor:
 
First parameter is: The width of the scalable counting networks that
permits my scalable refererence counting algorithm to be scalable, this
parameter must be 1 to 31, it is now at 4 , this is the power, so it is
equal to 2 power 4 , that means 2^4=16, and you have to pass this
counting networks width to the n of following formula:
 
(n*log(n)*(1+log(n)))/4
 
The log of the formula is in base 2
 
This formula gives the number of gates of the scalable counting
networks, and if we replace n by 16, this will equal 80 gates, that
means you can scale the scalable counting networks to 80 cores, and
beyond 80 cores you will start to have contention.
 
Second parameter is: a boolean that tells if reference counting is used
or not, it is by default to true, that means that reference counting is
used.
 
About the weak references support: the Weak<T> type supports assignment
from and to T and makes it usable as if you had a variable of T. It has
the IsAlive property to check if the reference is still valid and not a
dangling pointer. The Target property can be used if you want access to
members of the reference.
 
Note: the use of the IsAlive property on our weak reference, this tells
us whether the referenced object is still available, and provides a safe
way to get a concrete reference to the parent.
 
I have ported efficient weak references support to Linux by implementing
efficient code hooking, look at my DSharp.Core.Detour.pas file for Linux
that i have written to see how i have implemented it in the Linux
library. Please look at the example.dpr and test.pas demos to see how
weak references work etc.
 
Call _AddRef() and _Release() methods to manually increment or decrement
the number of references to the object.
 
You can download my library for Windows and Linux from:
 
https://sites.google.com/site/aminer68/scalable-reference-counting-with-efficient-support-for-weak-references
 
- Platform: Windows and Linux(x86)
 
Language: FPC Pascal v3.1.x+ / Delphi 2007+:
 
http://www.freepascal.org/
 
Required FPC switches: -O3 -Sd
 
-Sd for delphi mode....
 
Required Delphi switches: -$H+ -DDelphi
 
For Delphi XE versions and Delphi Tokyo use the -DXE switch
 
The defines options inside defines.inc are:
 
{$DEFINE CPU32} for 32 bit systems
 
{$DEFINE CPU64} for 64 bit systems
 
 
Thank you,
Amine Moulay Ramdane.
You received this digest because you're subscribed to updates for this group. You can change your settings on the group membership page.
To unsubscribe from this group and stop receiving emails from it send an email to comp.programming.threads+unsubscribe@googlegroups.com.

No comments: