Read again, i correct about more of my philosophy about why i am posting about my PDQ and more..

2 views
Skip to first unread message

Amine Moulay Ramdane

unread,
Nov 27, 2021, 12:38:48 PM11/27/21
to
Hello,



Read again, i correct about more of my philosophy about why i am posting about my PDQ and more..

I am a white arab from Morocco, and i think i am smart since i have also
invented many scalable algorithms and algorithms..

I am also posting about my PDQ below since it is also important
to know about it and you can understand it it more by reading my
following thoughts about 3D stacking and about parallelism:

https://groups.google.com/g/alt.culture.morocco/c/o-BJDe_WILo

And notice that i am saying in the link above the following:

More of my philosophy about the knee of an M/M/n queue and more..

Here is the mathematical equation of the knee of an M/M/n queue in
queuing theory in operational research:

1/(n+1)^(1/n)

n is the number of servers.

So then an M/M/1 has a knee of 50% of the utilization, and the one of
an M/M/2 is 0,578, so i correct below:

More of my philosophy about the network topology in multicores CPUs..

I invite you to look at the following video:

Ring or Mesh, or other? AMD's Future on CPU Connectivity

https://www.youtube.com/watch?v=8teWvMXK99I&t=904s

And i invite you to read the following article:

Does an AMD Chiplet Have a Core Count Limit?

Read more here:

https://www.anandtech.com/show/16930/does-an-amd-chiplet-have-a-core-count-limit

I think i am smart and i say that the above video and the above article
are not so smart, so i will talk about a very important thing, and it is
the following, read the following:

Performance Scalability of a Multi-core Web Server

https://www.researchgate.net/publication/221046211_Performance_scalability_of_a_multi-core_web_server

So notice carefully that it is saying the following:

"..we determined that performance scaling was limited by the capacity of
the address bus, which became saturated on all eight cores. If this key
obstacle is addressed, commercial web server and systems software are
well-positioned to scale to a large number of cores."

So as you notice they were using an Intel Xeon of 8 cores, and the
application was scalable to 8x but the hardware was not scalable to 8x,
since it was scalable only to 4.8x, and this was caused by the bus
saturation, since the Address bus saturation causes poor scaling, and
the Address Bus carries requests and responses for data, called snoops,
and more caches mean more sources and more destinations for snoops that
is causing the poor scaling, so as you notice that a network topology of
a Ring bus or a bus was not sufficient so that to scale to 8x on an
Intel Xeon with 8 cores, so i think that the new architectures like Epyc
CPU and Threadripper CPU can use a faster bus or/and a different network
topology that permits to both ensure a full scalability locally in the
same node and globally between the nodes, so then we can notice that a
sophisticated mesh network topology not only permits to reduce the
number of hops inside the CPU for good latency, but it is also good for
reliability by using its sophisticated redundancy and it is faster than
previous topologies like the ring bus or the bus since
for example the search on address bus becomes parallelized, and it looks
like the internet network that uses mesh topology using routers, so it
parallelizes, and i also think that using a more sophisticated topology
like a mesh network topology is related to queuing theory since we can
notice that in operational research the mathematics says that we can
make the queue like M/M/1 more efficient by making the server more
powerful, but we can notice that the knee of a M/M/1 queue is around 50% , so we can notice that by using in a mesh topology like internet or inside a CPU you can by parallelizing more you can in operational research both enhance the knee of the queue and the speed of executing the transactions and it is like using many servers in queuing theory and it permits to scale better inside a CPU or in internet.

More of my philosophy about the analytic queueing-circuit analyzer PDQ and more..

I think i am smart, so as you have just noticed i have just talked
about timesharing and coroutines in the following link:

https://groups.google.com/g/alt.culture.morocco/c/tN_O-AgkGjY

And i have just talked about Markov chains in mathematics and about Petri Nets here:

https://groups.google.com/g/soc.culture.quebec/c/LPE4zR-BqHY

I now i will talk about my PDQ for Delphi and Freepascal:

This is a port by Amine Moulay Ramdane of PDQ version 6.2.0 to Delphi
on Windows and to Freepascal on both Windows and Linux, i have also provided you with two demos, one queuing MM1 demo, and another Jackson network demo. Also i have provided you with my HTML tutorial on how to solve analytically the Jackson network problem provided to you as a PDQ demo.

PDQ is an analytic queueing-circuit analyzer made freely available under MIT/X11 license from: http://www.perfdynamics.com/Tools/PDQ.html

You can download it from my website here:

https://sites.google.com/site/scalable68/pdq-for-delphi-and-freepascal

And here is an example in Delphi and Freepascal of the Jackson network demo that i have included inside the zip file(and you can look
at my mathematical modeling of it here in my website: https://sites.google.com/site/scalable68/jackson-network-problem):

---

program test_network;


uses pdq64,LinSys;


type router1 = array of pansichar;
servTime1 = array of double;
visitRatios1 = array of double;
serviceDemands1 = array of double;
var

A, b, x : TMatrix;
arrivRate:double;
work:pansichar;
router:router1;
servTime:servTime1;
visitRatios:visitRatios1;
serviceDemands:serviceDemands1;
i:integer;

begin

setlength(router,3);
setlength(servTime,3);
setlength(visitRatios,3);
setlength(serviceDemands,3);


arrivRate := 0.50;
work:='Traffic';

router[0]:='Router1';
router[1]:='Router2';
router[2]:='Router3';

servTime[0]:=1.0;
servTime[1]:=2.0;
servTime[2]:=1.0;

A := TMatrix.Create (3,3);
b := TMatrix.Create (3,1);
x := TMatrix.Create (3,1);

A[1,1] := 1.0; A[1,2] := 0.0; A[1,3] := -0.2;
A[2,1] := -0.5; A[2,2] := 1.0; A[2,3] := 0.0;
A[3,1] := -0.5; A[3,2] := -0.8; A[3,3] := 1.0;

b[1,1] := 0.5; b[2,1] := 0.0; b[3,1] := 0.0;

LinSys.gauss(A, b, x);

visitRatios[0]:=x[1,1]/arrivRate;
visitRatios[1]:=x[2,1]/arrivRate;
visitRatios[2]:=x[3,1]/arrivRate;

serviceDemands[0]:=visitRatios[0]*servTime[0];
serviceDemands[1]:=visitRatios[1]*servTime[1];
serviceDemands[2]:=visitRatios[2]*servTime[2];

pdq64.PDQ_Init('Delphi Network in PDQ');

pdq64.PDQ_CreateOpen(work,arrivRate);

pdq64.PDQ_SetWUnit('Msgs');
pdq64.PDQ_SetTUnit('Time');


for i:=0 to 2
do
begin
pdq64.PDQ_CreateNode(router[i],pdq64.CEN,pdq64.FCFS);
pdq64.PDQ_SetDemand(router[i],work,serviceDemands[i]);
end;

pdq64.PDQ_Solve(pdq64.CANON);
pdq64.PDQ_Report();

setlength(router,0);
setlength(servTime,0);
setlength(visitRatios,0);
setlength(serviceDemands,0);

A.free;
b.free;
x.free;


end.

---


Thank you,
Amine Moulay Ramdane.

Reply all
Reply to author
Forward
0 new messages