This project is read-only.

Multi-Core Computing Made Easy

The Dambach Multi-Core Library makes it easy to create .Net programs that run faster on multi-core machines than their traditionally programmed counterparts.
The power to make use of multi-core machines has always been available through the use of thread-pools and threads, but managing all of that manually can be a hassle.
Therefore through the use of first-class-functions/delegates in the .Net Framework it is possible to hand off such tedious details to some component built specifically for
high performance scientific multi-core computing. The Dambach Multi-core Computing Library implements this philosophy quite elegantly.

These are some of my goals for this project.
1. To offer superior performance compared to the Microsoft Parallel FX and any other .Net multi-core library. (done)
2. To offer more control to the end-programmer without making the interface ugly. (done)
3. That this enhanced control would allow the library to be tuned to meet the performance needs of the end-user. (done)
4. Offer a set of datastructures that work on a principle of lazy evaluation. (see Lazy Math Evaluation Library)

Original Forward Elimination Algorithm

for( int k = 0; k < n; k++) {	
	double xmult; 												
	for( int i = k + 1; i < n; i++ ) {			
		xmult = -A[i][k] / A[k][k];
		ClassicMatrix.AddRowMultiple( A, B, xmult, k, i );	//reduce mat A, inverse mat B
	}
}

Using The Dambach Multi-Core Library

You only have to make a small change in order to reap the benefits of Multi-Core Processors
for( int k = 0; k < n; k++) {	
	Multi.For( k+1, n, delegate( int i ) {		
		double xmult = -A[i][k] / A[k][k];		
		ClassicMatrix.AddRowMultiple( A, B, xmult, k, i );
	} );
}

Last edited May 26, 2009 at 4:33 PM by CoryDambach, version 10