Thursday, October 13, 2022

Digest for comp.programming.threads@googlegroups.com - 1 update in 1 topic

Amine Moulay Ramdane <aminer68@gmail.com>: Oct 12 10:53AM -0700

Hello,
 
 
 
More of my philosophy about my scalable algorithms of my Parallel C++ Conjugate Gradient Linear System Solver Library that scales very well and more of my thoughts..
 
I am a white arab from Morocco, and i think i am smart since i have also
invented many scalable algorithms and algorithms..
 
 
I think i am highly smart since I have passed two certified IQ tests and i have scored above 115 IQ, and I have just written the following:
---
 
More of my philosophy about the new Zen 4 AMD Ryzen™ 9 7950X and more of my thoughts..
 
 
So i have just looked at the new Zen 4 AMD Ryzen™ 9 7950X CPU, and i invite you to look at it here:
 
https://www.amd.com/en/products/cpu/amd-ryzen-9-7950x
 
But notice carefully that the problem is with the number of supported memory channels, since it just support two memory channels, so it is not good, since for example my following Open source software project of Parallel C++ Conjugate Gradient Linear System Solver Library that scales very well is scaling around 8X on my 16 cores Intel Xeon with 2 NUMA nodes and with 8 memory channels, but it will not scale correctly on the
new Zen 4 AMD Ryzen™ 9 7950X CPU with just 2 memory channels since it is also memory-bound, and here is my Powerful Open source software project of Parallel C++ Conjugate Gradient Linear System Solver Library that scales very well and i invite you to take carefully a look at it:
 
https://sites.google.com/site/scalable68/scalable-parallel-c-conjugate-gradient-linear-system-solver-library
 
So i advice you to buy an an AMD Epyc CPU or an Intel Xeon CPU that supports 8 memory channels.
 
---
 
 
And of course you can use the next Twelve DDR5 Memory Channels for Zen 4 AMD EPYC CPUs so that to scalable more my above algorithm, and read about it here:
 
https://www.tomshardware.com/news/amd-confirms-12-ddr5-memory-channels-on-genoa
 
 
And here is the simulation program that uses the probabilistic mechanism that i have talked about and that prove to you that my algorithm of my Parallel C++ Conjugate Gradient Linear System Solver Library is scalable:
 
If you look at my scalable parallel algorithm, it is dividing the each array of the matrix by 250 elements, and if you look carefully i am using two functions that consumes the greater part of all the CPU, it is the atsub() and asub(), and inside those functions i am using a probabilistic mechanism so that to render my algorithm scalable on NUMA architecture , and it also make it scale on the memory channels, what i am doing is scrambling the array parts using a probabilistic function and what i have noticed that this probabilistic mechanism is very efficient, to prove to you what i am saying , please look at the following simulation that i have done using a variable that contains the number of NUMA nodes, and what i have noticed that my simulation is giving almost a perfect scalability on NUMA architecture, for example let us give to the "NUMA_nodes" variable a value of 4, and to our array a value of 250, the simulation bellow will give a number of contention points of a quarter of the array, so if i am using 16 cores , in the worst case it will scale 4X throughput on NUMA architecture, because since i am using an array of 250 and there is a quarter of the array of contention points , so from the Amdahl's law this will give a scalability of almost 4X throughput on four NUMA nodes, and this will give almost a perfect scalability on more and more NUMA nodes, so my parallel algorithm is scalable on NUMA architecture and it also scale well on the memory channels,
 
Here is the simulation that i have done, please run it and you will notice yourself that my parallel algorithm is scalable on NUMA architecture.
 
Here it is:
 
---
program test;
 
uses math;
 
var tab,tab1,tab2,tab3:array of integer;
a,n1,k,i,n2,tmp,j,numa_nodes:integer;
begin
 
a:=250;
Numa_nodes:=4;
 
setlength(tab2,a);
 
for i:=0 to a-1
do
begin
 
tab2:=i mod numa_nodes;
 
end;
 
setlength(tab,a);
 
randomize;
 
for k:=0 to a-1
do tab:=k;
 
n2:=a-1;
 
for k:=0 to a-1
do
begin
n1:=random(n2);
tmp:=tab;
tab:=tab[n1];
tab[n1]:=tmp;
end;
 
setlength(tab1,a);
 
randomize;
 
for k:=0 to a-1
do tab1:=k;
 
n2:=a-1;
 
for k:=0 to a-1
do
begin
n1:=random(n2);
tmp:=tab1;
tab1:=tab1[n1];
tab1[n1]:=tmp;
end;
 
for i:=0 to a-1
do
if tab2[tab]=tab2[tab1] then
begin
inc(j);
writeln('A contention at: ',i);
 
end;
 
writeln('Number of contention points: ',j);
setlength(tab,0);
setlength(tab1,0);
setlength(tab2,0);
end.
---
 
 
 
And i invite you to read my thoughts about technology here:
 
https://groups.google.com/g/soc.culture.usa/c/N_UxX3OECX4
 
More of my philosophy about the problem with capacity planning of a website and more of my thoughts..
 
I think i am highly smart since I have passed two certified IQ tests and i have scored above 115 IQ, and i have just invented a new methodology
that simplifies a lot capacity planning of a website that can be of a
three-tier architecture with the web servers and with the applications servers and with the database servers, but i have to explain more so that you understand the big problem with capacity planning of a website, so when you want to for example to use web testing, the problem is
how to choose for example the correct distribution of the read and write and delete transactions on the database of a website ? so if it is not
realistic you can go beyond the knee of the curve and get a not acceptable waiting time, and the Mean value analysis (MVA) algorithm has
the same problem, so how to solve the problem ? so as you are noticing
it is why i have come with my new methodology that uses mathematics that
solves the problem. And read my previous thoughts:
 
 
More of my philosophy about website capacity planning and about Quality of service and more of my thoughts..
 
I think i am highly smart since I have passed two certified IQ tests and i have scored above 115 IQ, so i think that you have to lower to a certain level the QoS (quality of service) of a website, since you have to fix the limit of the number of connections that we allow to the website so that to not go beyond the knee of the curve, and of course i will soon show you my mathematical calculations of my new methodology of how to do capacity planning of a website, and of course
you have to know that that we have to do capacity planning using
mathematics so that to know the average waiting time etc. and this
permits us to calculate the number of connections that we allow to the website.
 
More of my philosophy about the Mean value analysis (MVA) algorithm and more of my thoughts..
 
 
I think i am highly smart since I have passed two certified IQ tests and i have scored above 115 IQ, and i have just read the following paper
about the Mean value analysis (MVA) algorithm, and i invite you to read it carefully:
 
https://www.cs.ucr.edu/~mart/204/MVA.pdf
 
 
But i say that i am understanding easily the above paper of Mean value analysis (MVA) algorithm, but i say that the above paper doesn't say that since you have to empirically collect the visit ratio and and the average demand of each class, so it is not so practical, since i say that you can and you have for example to calculate the "tendency" by also for example rendering the not memoryless service of for example the database to a memoryless service, but don't worry since i will soon make you understand my powerful methodology with all the mathematical calculations that easy for you the job and that makes it much more practical.
 
More of my philosophy about formal methods and about Leslie Lamport and more of my thoughts..
 
I think i am highly smart since I have passed two certified IQ tests and i have scored "above" 115 IQ, and I have just looked at the following video about the man who revolutionized computer science with math, and i invite you to look at it:
 
https://www.youtube.com/watch?v=rkZzg7Vowao
 
So i say that in mathematics, a conjecture is a conclusion or a proposition that is proffered on a tentative basis without proof. And Leslie Lamport the known scientist is saying in the above video the following: "An algorithm without a proof is conjecture, and if you are proving things, that means using mathematics.", so then i think that Leslie Lamport the known scientist is not thinking correctly by saying so, since i think that you can also prove an algorithm by highering much more the probability of the success of the proof without using mathematics to prove the algorithm, and i say that a proof has not to be just a conclusion as a boolean logic of true or false, since i think that a proof can be a conclusion in fuzzy logic and by logical analogy it looks like how race detectors in the very agressive mode don't detect all the data races, so then they miss a really small number of real races , so it is like a very high probability of really detecting real races, so read my below thoughts about it so that yo understand my views. And i think that the second mistake of Leslie Lamport the known scientist is that he is wanting us to use formal methods, but read the following interesting article below about why don't people use formal methods:
 
And I invite you to read the following new article of the known computer expert in the above video called Leslie Lamport , and that says programmers need to use math by using formal methods, and how Lamport discuss some of his work, such as the TLA+ specification language (developed by Lamport over the past few decades, the TLA+ [Temporal Logic of Actions] specification language allows engineers to describe objectives of a program in a precise and mathematical way), and also cited some of the reasons why he gives a prominent place to mathematics in programming.
 
Read more in the following article and you have to translate it from french to english:
 
https://www.developpez.com/actu/333640/Un-expert-en-informatique-declare-que-les-programmeurs-ont-besoin-de-plus-de-mathematiques-ajoutant-que-les-ecoles-devraient-repenser-la-facon-dont-elles-enseignent-l-informatique/
 
But to answer the above expert called Leslie Lamport, i invite you to carefully read in the following interesting web page about the why don't people use formal methods:
 
WHY DON'T PEOPLE USE FORMAL METHODS?
 
https://www.hillelwayne.com/post/why-dont-people-use-formal-methods/
 
 
More of my philosophy of the polynomial-time complexity of race detection and more of my thoughts..
 
I think i am highly smart since I have passed two certified IQ tests and i have scored "above" 115 IQ, so i have quickly understood how Rust
detects race conditions, but i think that a slew of
"partial order"-based methods have been proposed, whose
goal is to predict data races in polynomial time, but at the
cost of being incomplete and failing to detect data races in
"some" traces. These include algorithms based on the classical
happens-before partial order, and those based
on newer partial orders that improve the prediction of data
races over happens-before , so i think that we have to be optimistic
since read the following web page about the Sanitizers:
 
https://github.com/google/sanitizers
 
And notice carefully the ThreadSanitizer, so read carefully
the following paper about ThreadSanitizer:
 
https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/35604.pdf
 
 
And it says in the conclusion the following:
 
"ThreadSanitizer uses a new algorithm; it has several modes of operation, ranging from the most conservative mode (which has few false positives but also misses real races) to a very aggressive one (which
has more false positives but detects the largest number of
real races)."
 
So as you are noticing since the very agressive mode doesn't detect
all the data races, so it misses a really small number of real races , so it is like a very high probability of really detecting real races ,
and i think that you can also use my below methodology of using incrementally a model from the source code and using Spin model checker so that to higher even more the probability of detecting real races.
 
 
Read my previous thoughts:
 
More of my philosophy about race conditions and about composability and more of my thoughts..
 
I say that a model is a representation of something. It captures not all attributes of the represented thing, but rather only those seeming relevant. So my way of doing in software development in Delphi and Freepascal is also that i am using a "model" from the source code that i am executing in Spin model checking so that to detect race conditions, so i invite you to take a look at the following new tutorial that uses the powerful Spin tool:
 
https://mirrors.edge.kernel.org/pub/linux/kernel/people/paulmck/perfbook/perfbook.html
 
So you can for example install Spin model checker so that to detect race conditions, this is how you will get much more professional at detecting deadlocks and race conditions in parallel programming. And i invite you to look at the following video so that to know how to install Spin model checker on windows:
 
https://www.youtube.com/watch?v=MGzmtWi4Oq0
 
More of my philosophy about race detection and concurrency and more..
 
I have just looked quickly at different race detectors, and i think that
the Intel Thread Checker from Intel company from "USA" is also very good since the Intel Thread Checker needs to instrument either the C++ source code or the compiled binary to make every memory reference and every standard Win32 synchronization primitive observable, so this instrumentation from the source code is very good since it also permits me to port my scalable algorithms inventions by for example wrapping them in some native Windows synchronization APIs, and this instrumentation from the source code is also business friendly, so read about different race detectors and about Intel Thread Checker here:
 
https://docs.microsoft.com/en-us/archive/msdn-magazine/2008/june/tools-and-techniques-to-identify-concurrency-issues
 
So i think that the other race detectors of other programming languages have to provide this instrumentation from the source code as Intel Thread Checker from Intel company from "USA".
 
More of my philosophy about Rust and about memory models and about technology and more of my thoughts..
 
 
I think i am highly smart, and i say that the new programming language that we call Rust has an important problem, since read the following interesting article that says that atomic operations that have not correct memory ordering can still cause race conditions in safe code, this is why the suggestion made by the researchers is:
 
"Race detection techniques are needed for Rust, and they should focus on unsafe code and atomic operations in safe code."
 
 
Read more here:
 
https://www.i-programmer.info/news/98-languages/12552-is-rust-really-safe.html
 
 
More of my philosophy about programming languages about lock-based systems and more..
 
I think we have to be optimistic about lock-based systems, since race conditions detection can be done in polynomial-time, and you can notice it by reading the following paper:
 
https://arxiv.org/pdf/1901.08857.pdf
 
Or by reading the following paper:
 
https://books.google.ca/books?id=f5BXl6nRgAkC&pg=PA421&lpg=PA421&dq=race+condition+detection+and+polynomial+complexity&source=bl&ots=IvxkORGkQ9&sig=ACfU3U2x0fDnNLHP1Cjk5bD_fdJkmjZQsQ&hl=en&sa=X&ved=2ahUKEwjKoNvg0MP0AhWioXIEHRQsDJc4ChDoAXoECAwQAw#v=onepage&q=race%20condition%20detection%20and%20polynomial%20complexity&f=false
 
So i think we can continu to program in lock-based systems, and about
composability of lock-based systems, read my following thoughts about it it:
 
More of my philosophy about composability and about Haskell functional language and more..
 
I have just read quickly the following article about
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: