B2TW faq

What's it all about?

The most brutually efficient distributed processing with dual CPU boards running LiNuX .  My computers have almost always been dual CPU and I have gotten tired of non-multithreaded weak apps.
A noticable exception has been and still is Adobe's Photoshop and Quake , cudos. So to get the most out of dual processing systems, a number of techniqes will be used to get the most performace with the least amount of overhead.  If both CPU's are not getting hammered and the speedup isn't linear, something is not yet tuned.
Read the HowTo .

Ways to utilize both cpu's.

Write, beg, or borrow code
1. use a compiler like Intel's and utilize OpenMP pragmas. (SMP Symmetric MultiProcessing)
2. use a message passage scheme like MPI or PVM with their pragmas. (SMP)
Use the OS to run applications to run on mulitple processors by ...
1. use threading libraries and techniques. (SMP)
2. force the OS to run an application with cpu affinity. (AMP Asymmetric MultiProcessing)
Using SMP techniques carries a overhead, sometimes a little, sometimes a lot which depends on the how well code is written and the OS. Which OS is this written for? LiNuX , naturlich.


Why not WinDoZe?  


  Tell'em Moe.  "This has been brought to you by the letters F & U."
If you want to port the code over, it should be fairly straightforward but be warned
1. WinDoZe threading modeling is an unholy mess and
2. I don't care to support a megolomanic.

Initial projects

1. LAME MP3 encoder,
2. a DiVx/Quicktime encoder/decoder for LiNuX ,
3. port of NEC, electromagnetic code to analyze antennas and structures,
4. image processing software
5. advanced optimization software, neural net, fuzzy, genetic algorithms 
6. Nav-Stokes, turbulent laminar flow
7. more stuff to be added later.


Have decided to use Java for generating the GUI, as is it portable, less of a pain in the ass then Tcl/TK or QT. Don't think of even mentioning VB or anything with M$. Java is relatively quick and painless and has lots of already built-in functions for network, audio, video, blah, blah, blah...
Since the focus is more on the underlying code than the GUI, you won't find real fancy effects going on here. No clown is going to jump up and and juggle over to the trash can when you something is deleted. Go back to WinDoZe or use a Mac if you're looking for that. The GUI is minimalist and bohemian.
The Code will be written F77 and ANSI C. This is the old school. No F90 crap or C++ garbage of pointers to pointers to pointers to pointers.... ad nauseum .


How to write and use AMP? Good question, going to start with simple setting of cpu affinities with some good Perl scripting, maybe throw in some genetic algorithms as well.  This is the brute force method of telling the CPU's and OS, do what I tell you to do right now and don't give me any shit.  More later...

Tools Required

OpenMP compiler
Perl 5.8
jEdit or Nedit , or hack with vi
Java compiler 1.4.X, get the one by JRockit
Dual CPU monster machine, with at least 2GB of ram, water cooling of CPU's is optional
SCSI's with raid 0 or IDE is good enough.
LiNux with SMP kernel 2.4.20, glibc 2.3.X, and GCC 3.2.X
FFTW, Fastest Fourier Transform in the West
Using MAKE  and libs, MPICH, LAM, FFTW, ScaLapack

LiNux Tips

Here are tips on how to squeeze the most out of a dual CPU system.
Junk to get rid of
1. Audio drivers
2. Network drivers, except for loopback and basic network for X11
3. Print drivers
4. Modem drivers
5. All of the junk that gets loaded at startup in your profile.
6. Run a stripped down version of X11 like Windowmaker or Blackbox.
7. Get rid of all of the icons on your desktop along with that garbage image in the background.
1. Get, install, configure hdparm.
2. Use Ext3, XFS or RAID. 
3. Get, install latest video drivers.
4. Put /usr, /apps, and swap on separate hard drives.