* * *

Author Topic: My following projects were updated or added  (Read 2327 times)

Sky68

  • New member
  • *
  • Posts: 29
My following projects were updated or added
« on: June 02, 2018, 09:47:03 pm »
Hello,

I have changed my website, here is my new website that contains all my Delphi and FreePascal and C++ projects:

https://sites.google.com/site/scalable68/


You are welcome.


Thank you,
Amine Moulay Ramdane.
« Last Edit: June 09, 2018, 09:52:35 pm by Sky68 »

Sky68

  • New member
  • *
  • Posts: 29
« Last Edit: June 10, 2018, 07:05:48 pm by Sky68 »

Sky68

  • New member
  • *
  • Posts: 29
Re: Here is my new website...
« Reply #2 on: June 09, 2018, 08:57:43 pm »
Hello..

As you have noticed i have "invented" fully scalable RWLocks using scalable counting networks that are really "powerful" here:

https://sites.google.com/site/scalable68/scalable-rwlock-using-scalable-counting-networks


And also i have just finished a Concurrent SkipList with scalable RWLock using scalable counting networks here:

https://sites.google.com/site/scalable68/concurrent-skiplist-with-scalable-rwlock-using-scalable-counting-networks



Thank you,
Amine Moulay Ramdane.

Sky68

  • New member
  • *
  • Posts: 29
Re: My following projects were updated or added
« Reply #3 on: June 10, 2018, 07:12:53 pm »
Hello,


My Scalable Parallel VarFiler version 1.85 is here..

Now it has become really "powerful", i have also added the following methods to it:

function FixVarfiler(Stream:TStream):boolean;overload;
- Fix the format of the Stream

function FixVarfiler(filename:string):boolean;overload;
- Fix the format of the file

function AnalyzeVarfiler(filename:string):TypeError;overload;
- Analyze the format of Archive file, the returned TypeError is ctCorrupt if the format of the file is corrupt or ctUnknown if the format of the file is unknown.

function AnalyzeVarfiler(Stream:TStream):TypeError;overload;
- Analyze the format of the Archive Stream, the returned TypeError is ctCorrupt if the format of the stream is corrupt or ctUnknown if the format of the stream is unknown.


You can read about it and download it from here:

https://sites.google.com/site/scalable68/scalable-parallel-varfiler



Thank you,
Amine Moulay Ramdane.

Sky68

  • New member
  • *
  • Posts: 29
Re: My following projects were updated or added
« Reply #4 on: June 13, 2018, 08:48:50 pm »
Hello,

I have updated my following projects, there was a bug in some of my scalable RWLock variants and i have corrected this bug and now i think that all my scalable RWLocks are working correctly, here are my updated projects:


Scalable RWLocks

https://sites.google.com/site/scalable68/scalable-rwlock


Scalable RWLocks using scalable counting networks

https://sites.google.com/site/scalable68/scalable-rwlock-using-scalable-counting-networks


Scalable Distributed Reader-Writer Mutex

https://sites.google.com/site/scalable68/scalable-distributed-reader-writer-mutex


Concurrent SkipList

https://sites.google.com/site/scalable68/concurrent-skiplist


Concurrent SkipList with scalable RWLock using scalable counting networks

https://sites.google.com/site/scalable68/concurrent-skiplist-with-scalable-rwlock-using-scalable-counting-networks


Thank you,
Amine Moulay Ramdane.




 
« Last Edit: June 13, 2018, 09:02:33 pm by Sky68 »

Sky68

  • New member
  • *
  • Posts: 29
Re: My following projects were updated or added
« Reply #5 on: June 13, 2018, 09:35:39 pm »
Hello,



I think that all my Delphi and FreePascal  projects are much more stable and fast, you can be more confident with them, so be happy with them, i have also just updated my scalable RWLocks variants , please read my previous post above to notice it, and now you can download all my Delphi and FreePascal projects from:

https://sites.google.com/site/scalable68/


Thank you,
Amine Moulay Ramdane.


Sky68

  • New member
  • *
  • Posts: 29
Re: My following projects were updated or added
« Reply #6 on: June 13, 2018, 10:02:53 pm »
Hello..


As you have noticed i am an inventor of many scalable algorithms,
why i am doing it ? also i want to follow the "way" of really smart people and show also that i can be smarter, look at the source code of my scalable algorithms like my scalable reference counting and all my scalable RWLocks variants and my SemaMonitor and my SemaCondvar and my scalable MLock and look at my other algorithms and you will notice that my algorithms are also "smart", you can take a look the source code of my scalable algorithms and all my other algorithms here in my website:

https://sites.google.com/site/scalable68/

As you have noticed i am following the way of smarter people,
so i invite you to look at the following video to know
more about really smart people:

https://www.youtube.com/watch?v=cNP8j1Xs3nk



Thank you,
Amine Moulay Ramdane.
« Last Edit: June 18, 2018, 09:25:52 pm by Sky68 »

Sky68

  • New member
  • *
  • Posts: 29
Re: My following projects were updated or added
« Reply #7 on: June 21, 2018, 06:26:16 pm »
Hello,


Lockfree bounded LIFO stack and FIFO queue were updated..

Please download the FreePascal version that i have updated, now it is working correctly.

You can download it from:

https://sites.google.com/site/scalable68/lockfree-bounded-lifo-stack-and-fifo-queue


Thank you,
Amine Moulay Ramdane.

Sky68

  • New member
  • *
  • Posts: 29
Re: My following projects were updated or added
« Reply #8 on: June 21, 2018, 10:04:02 pm »
Hello,

FastMM4-AVX interfaces for Delphi and Delphi XE versions and FreePascal

Description:

FastMM4-AVX memory manager interfaces for Delphi and Delphi XE versions and FreePascal with the windows 32 bit and 64 bit Dynamic Link Libraries, this memory manager is fast, and it scales well under multi-threaded usage, and it is not prone to memory fragmentation, and if the CPU supports AVX or AVX2, uses the 32-byte YMM registers for faster memory copy, and if the CPU supports AVX-512, uses the 64-byte ZMM registers for even faster memory copy.

You can download it from:

https://sites.google.com/site/scalable68/fastmm4-avx-interfaces-for-delphi-and-delphi-xe-versions-and-freepascal


And you can download the source code and read about it from:

https://github.com/maximmasiutin/FastMM4-AVX

And how to install it ?

Just place FastMM4_avx as the very first unit under the "uses" clause of your project's .dpr file.

You have one of the following define option that you can set inside the defines.inc file:

{$DEFINE CPU32} for 32 bit systems

{$DEFINE CPU64} for 64 bit systems.


Thank you,
Amine Moulay Ramdane.

Sky68

  • New member
  • *
  • Posts: 29
Re: My following projects were updated or added
« Reply #9 on: June 25, 2018, 06:38:40 pm »
Hello,

My Parallel Compression Library for Windows and Linux was updated to version 4.35

And:

My Parallel archiver was updated to version 4.79

I have updated the Dynamic Link Libraries of Zstandard to the newer version, i am always taking care of updating the Dynamic Link Libraries to the newer versions.


You can download them from:

https://sites.google.com/site/scalable68/parallel-archiver

And from:

https://sites.google.com/site/scalable68/parallel-compression-library



Thank you,
Amine Moulay Ramdane.

Sky68

  • New member
  • *
  • Posts: 29
Re: My following projects were updated or added
« Reply #10 on: June 25, 2018, 07:32:29 pm »
Hello,

The Dynamic Link Libraries for Windows and Dynamic shared libraries for Linux of the compression and decompression algorithms of my Parallel Compression Library and for my Parallel archiver were compiled from C with the optimization level 2 enabled, so they are very fast.

My Parallel Compression Library for Windows and Linux was updated to version 4.35

And:

My Parallel archiver was updated to version 4.79

I have updated the Dynamic Link Libraries of Zstandard to the newer version, i am always taking care of updating the Dynamic Link Libraries to the newer versions.


You can download them from:

https://sites.google.com/site/scalable68/parallel-archiver

And from:

https://sites.google.com/site/scalable68/parallel-compression-library



Thank you,
Amine Moulay Ramdane.

Sky68

  • New member
  • *
  • Posts: 29
Re: My following projects were updated or added
« Reply #11 on: June 27, 2018, 02:12:53 pm »
Hello,


PERT++ (An enhanced edition of the program or project evaluation and review technique that includes Statistical PERT) in Delphi and FreePascal is here..

Version: 1.33

Authors: Amine Moulay Ramdane that has implemented PERT, Robert Sedgewick, Kevin Wayne.

Description:

This program (or project) evaluation and review technique includes Statistical PERT, it is a statistical tool, used in project management, which was designed to analyze and represent the tasks involved in completing a given project.

PERT++ permits also to calculate:

- The longest path of planned activities to the end of the project

- The earliest and latest that each activity can start and finish without making the project longer

- Determines “critical” activities (on the longest path)

- Prioritize activities for the effective management and to
  shorten the planned critical path of a project by:

- Pruning critical path activities

- “Fast tracking" (performing more activities in parallel)

- “Crashing the critical path" (shortening the durations of critical path activities by adding resources)

- And it permits to give Risk for each output PERT formula

PERT is a method of analyzing the tasks involved in completing a given project, especially the time needed to complete each task, and to identify the minimum time needed to complete the total project. It incorporates uncertainty by making it possible to schedule a project while not knowing precisely the details and durations of all the activities. It is more of an event-oriented technique rather than start- and completion-oriented, and is used more in projects where time is the major factor rather than cost. It is applied to very large-scale, one-time, complex, non-routine infrastructure and Research and Development projects.

PERT and CPM are complementary tools, because CPM employs one time estimate and one cost estimate for each activity; PERT may utilize three time estimates (optimistic, most likely, and pessimistic) and no costs for each activity. Although these are distinct differences, the term PERT is applied increasingly to all critical path scheduling. This PERT library uses a CPM algorithm that uses Topological sorting to render CPM a linear-time algorithm for finding the critical path of the project, so it's fast.

You have to have a java compiler, and you have first to compile the java libraries with the batch file compile.bat, and after that compile the Delphi and Freepascal test1.pas program.

Here is the procedure to call for PERT:

procedure solvePERT(filename:string;var info:TCPMInfo;var finishTime:system.double;var criticalPathStdDeviation:system.double);

The arguments are:

The filename: is the file to pass, it's is organized as:

The first line is the number of jobs, the rest of each of the lines are: three time estimates that takes the job (optimistic, expected, and pessimistic) and after that the number of precedence constraints and after that the precedence constraints that specify that the job have to be completed before certain other jobs are begun.

info: is the returned information, you can get the job number and the start and finish time of the job in info.job and info.start and info.finish, please look at the test.pas example to understand.

finishTime: is the finish time.

criticalPathStdDeviation: is the critical path standard deviation.

I have also provided you with three other functions, here they are:

function NormalDistA (const Mean, StdDev, AVal, BVal: Extended): Single;

function NormalDistP (const Mean, StdDev, AVal: Extended): Single;

function InvNormalDist(const Mean, StdDev, PVal: Extended; const Less: Boolean): Extended;

For NormalDistA() or NormalDistP(), you pass the best estimate of completion time to Mean, and you pass the critical path standard deviation to StdDev, and you will get the probability of the value Aval or the probability between the values of Aval and Bval.

For InvNormalDist(), you pass the best estimate of completion time to Mean, and you pass the critical path standard deviation to StdDev, and you will get the length of the critical path of the probability PVal, and when Less is TRUE, you will obtain a cumulative distribution.

I have also included a 32 bit and 64 bit windows executables called PERT32.exe and PERT64.exe (that take the file, with a the file format that i specified above, as an argument) inside the zip, it is a very powerful tool, you need to compile CPM.java with compile.bat before running them.

I have also included a 32 bit and 64 bit windows executables called CPM32.exe and CPM64.exe (that take the file, with a the file format that i specified in the Readme.CPM file, as an argument) inside the zip, they run the CPM solver that you use with Statistical PERT that i have included inside the zip file, you need to compile CPM.java with compile.bat before running them.

The very important things to know about PERT is this:

1- PERT works best in projects where previous experience can be relied on to accurately make predictions.

2- To not underestimate project completion time, especially if delays cause the critical path to shift around, you have to enhance with point number 1 above or/and management time and resources can be applied to make sure that optimistic and most likely and pessimistic time estimates of activities are accurate.

Also PERT++ zip file includes the powerful Statistical PERT, Statistical PERT is inside Statistical_PERT_Beta_1.0.xlsx microsoft excel workbook, you can use LibreOffice or Microsoft Office to execute it, after that pass the output data of Statistical PERT to CPM library, please read the Readme.CPM to learn how to use CPM library, and please read and learn about Statistical PERT on internet.

Please read about Statistical PERT here:

http://www.statisticalpert.com/What_is_Statistical_PERT.pdf

And you can download my PERT++ from:

https://sites.google.com/site/scalable68/pert-an-enhanced-edition-of-the-program-or-project-evaluation-and-review-technique-that-includes-statistical-pert-in-delphi-and-freepascal

Have fun with it !

Language: FPC Pascal v2.2.0+ / Delphi 7+: http://www.freepascal.org/

Operating Systems: Windows,

Required FPC switches: -O3 -Sd

-Sd for delphi mode....

Required Delphi switches: -$H+ -DDelphi

For Delphi XE-XE7 use the -DXE switch



Thank you,
Amine Moulay Ramdane.

« Last Edit: June 27, 2018, 02:19:21 pm by Sky68 »

Sky68

  • New member
  • *
  • Posts: 29
Re: My following projects were updated or added
« Reply #12 on: June 28, 2018, 07:51:30 pm »
Hello,


JNI Wrapper for Delphi and FreePascal version 2.89 is here..

Please read about it and download it bellow, it is working on Windows and i will ask if you can port it to Linux:

Authors: Jonathan Revusky, Amine Moulay Ramdane and Salvatore Meschini.

Email: aminer@videotron.ca

Description:

This JNI Wrapper for Delphi and FreePascal provides a powerful and simplified object-oriented API for doing mixed language programming in Java and Delphi (Object Pascal language) or FreePascal. This may provide an easier and more productive way of getting Win32 and Win64 features in Java projects and integrating legacy code (at least for the Delphi or FreePascal community). Please read the readme file inside the zip file to learn more.

I have noticed that JNIWrapper for Delphi and FreePascal was not supporting returning of Strings and Arrays types from Java, so i have implemented that and i have now enhanced JNI Wrapper to be very powerful , so it's now supporting all the necessary functions and methods and and much more... hope you will happy with it cause i have worked hard to bring this new 2.89 to you, it is really now a professional software of a good quality.

Also i have enhanced more JNI Wrapper and ported it to 64 bit and to both FreePascal and the Delphi XE versions, here is the functions that i have implemented and added:

function JstringArrayToDTStrings(jarr : JArray) : TStrings;

function JdoubleArrayToDdoubleArray(jarr : JdoubleArray) : TDdoubleArray;

function JfloatArrayToDsingleArray(jarr : JFloatArray) : TDsingleArray;

function JcharArrayToDwordArray(jarr : JCharArray) : TDwordArray;

function JbyteArrayToDshortintArray(jarr : JByteArray) : TDshortintArray;

function JshortArrayToDsmallintArray(jarr : JShortArray) : TDsmallintArray;

function JbooleanArrayToDbooleanArray(jarr : JBooleanArray) : TDbooleanArray;

And don't forget to call TJavaVM.freeRef() method from Delphi or FreePascal when you need to garbage collect and free the memory that was allocated.

You can download it from:

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


Language: FPC Pascal v2.2.0+ / Delphi XE+: http://www.freepascal.org/

Operating Systems: Windows.



Thank you,
Amine Moulay Ramdane.


Sky68

  • New member
  • *
  • Posts: 29
Re: My following projects were updated or added
« Reply #13 on: July 01, 2018, 05:59:35 pm »
Hello,

My following projects were updated, i have converted UTF8String to
AnsiString on my JNIWrapper and now they are much more stable and fast:

JNI Wrapper for Delphi and FreePascal version 2.90:

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


PERT++ (An enhanced edition of the program or project evaluation and review technique that includes Statistical PERT) in Delphi and FreePascal version 1.34:

https://sites.google.com/site/scalable68/pert-an-enhanced-edition-of-the-program-or-project-evaluation-and-review-technique-that-includes-statistical-pert-in-delphi-and-freepascal


Dijkstra and Bellman-Ford-Moore's algorithms for Delphi and FreePascal version 1.23:

https://sites.google.com/site/scalable68/dijkstra-and-bellman-ford-moore-s-algorithms


CPM (Critical Path Method) for Delphi and FreePascal version 1.07:

https://sites.google.com/site/scalable68/cpm-critical-path-method-for-delphi-and-freepascal



Thank you,
Amine Moulay Ramdane.



Sky68

  • New member
  • *
  • Posts: 29
Re: My following projects were updated or added
« Reply #14 on: July 03, 2018, 07:53:50 pm »
Hello,


You know me that i am an "inventor" of many scalable algorithms and there implementations, now here is my other "invention" that is an efficient Threadpool with priorities that scales very well, it is as it is fully scalable, because work stealing is "rare", it is much more scalable than the one of Microsoft,  here it is read about it and download it(it comes with a FreePascal versions for Windows and Linux and with a Delphi version for Windows) and it comes with an HTML tutorial inside the zip file:

An efficient Threadpool engine with priorities that scales very well

version 3.2

Author: Amine Moulay Ramdane

Description:

Efficient Thread Pool Engine with priorities that scales very well. I have updated my efficient Threadpool engine with priorities and my Threadpool engine to version 3.2, i have come up with a new algorithm that is more optimized and that scales very well.

The following have been added to my efficient Threadpool engine:

- I have used scalable counting networks to make my Threadpool engine scales very well.

- You can give the following priorities to jobs:

LOW_PRIORITY

NORMAL_PRIORITY

HIGH_PRIORITY

- The worker threads enter in a wait state when there is no job in the concurrent FIFO queues - for more efficiency -

- You can distribute your jobs to the worker threads and call any method with the threadpool's execute() method.

- It uses work-stealing to be more efficient.

- You can configure it to use stacks or FIFO queues , when you use stacks it will be cache efficient.

- Now it can use processor groups on windows, so that it can use more than 64 logical processors and it scales well.

- Now it distributes the jobs on multiple FIFO queues or stacks so that it scales well.

- You can wait for the jobs to finish with the wait() method.

- It's NUMA-aware and NUMA efficient.

- And it is portable to many operating systems.

- Uses O(1) complexity on enqueue and O(3) worst case complexity on dequeue.

And look at the ThreadPoolExecutor Class of Java, look for example at the awaitTermination() method, it says:

---

boolean awaitTermination(long timeout, TimeUnit unit)

Blocks until all tasks have completed execution after a shutdown request, or the timeout occurs, or the current thread is interrupted, whichever happens first.

--

read more here:

https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ThreadPoolExecutor.html#method.summary

Did you notice ?

In Java when you wait for the tasks you have to wait for "ALL" the tasks, and that's not efficient , and if you want to use the object from multiple threads i think it will have the same effect, you can avoid some of the problems by using many objects of the ThreadPoolExecutor class but this will take ressources and this will cause more and more context switches and that's bad, i think C# has the same problem, other than that Java and C# don't support priorities, it means that you can not give priorities to tasks/jobs, like high or normal or low, and that's not good for games and other applications where you have to use priorities even if the system is not a realtime system, this is why i have decided to implement my efficient Threadpool engine version 3.2 that supports those characteristics and that scales well, so that you can create
a child object of the Threadpool class that will use the same
worker threads and that will wait only for the tasks that you will add with the execute() method , and also my efficient Threadpool engine supports 3 priorities, High and normal and low, that's where my efficient Threadpool engine comes in hand and that's where it's efficient. Hope you will like it.

Please read the HTML tutorial inside the zip.

More precision about my efficient Threadpool that scales very well, my Threadpool is much more scalable than the one of Microsoft, in the workers side i am using scalable counting networks to distribute on the many queues or stacks, so it is scalable on the workers side, on the consumers side i am also using lock striping to be able to scale very well, so it is scalable on those parts, on the other part that is work stealing, i am using scalable counting networks, so globally it scales very well, and since work stealing is "rare" so i think that my efficient Threadpool that scales very well is really powerful, and it is much more optimized and the scalable counting networks eliminate false sharing, and it works with Windows and Linux.

You have to know that to enlarge the stack of the worker threads of the Threadpool that use TThread, you have to set the stack size for the executable.


You can dowload it from:

https://sites.google.com/site/scalable68/an-efficient-threadpool-engine-with-priorities-that-scales-very-well

Look into defines.inc there is many options:

{$DEFINE CPU32} and {$DEFINE Windows32} for 32 bit systems

{$DEFINE CPU64} and {$DEFINE Windows64} for 64 bit systems

Look at test.pas demo inside the zip file...

Language: FPC Pascal v2.2.0+ / Delphi 5+: http://www.freepascal.org/

Operating Systems: Win , Linux and Mac (x86).

Required FPC switches: -O3 -Sd

-Sd for delphi mode....

Required Delphi switches: -DDelphi -DMSWINDOWS -$H+

For Delphi XE-XE7 use the -DXE switch

{$DEFINE CPU32} and {$DEFINE Windows32} for 32 bit systems

{$DEFINE CPU64} and {$DEFINE Windows64} for 64 bit systems




Thank you,
Amine Moulay Ramdane.
« Last Edit: July 03, 2018, 07:58:22 pm by Sky68 »

 

Recent

Get Lazarus at SourceForge.net. Fast, secure and Free Open Source software downloads Open Hub project report for Lazarus