Developer by
Massimo Di Pierro

Mar 28, 2005: FermiQCD 3.3 has been released!

[Download my latest presentation in pdf]

It includes a lot of new features including a more extensive documentation, better SSE/SSE2 support (now compiles under G++ 3.x on Linux and Windows with cygwin), and PSIM (a parallel simulator).

The single precision Clover inverter is 3-5 times faster with SSE/SSE2 than without it. The FermiQCD SSE/SSE2 routines are based on Martin Luesher's original code.

PSIM allows users to run parallel programs on a single node. This can be used for testing and debugging but also for speed up on shared memory and multi-threaded machines. PSIM dramatically reduces the development time of parallel applications and makes it easy to switch to MPI by simply recompiling.

Here is an animation (AVI) of how FermiQCD spreads a lattice over parallel processes and keeps them synchronized.



[ What the hell is this? ]
[ Online classes ]
[ Email archives ]

Fully Object Oriented
gauge_field U(lattice,Nc);
cout << U(x+mu,nu);

Natural Linear Algebra
mdp_matrix A(Nc,Nc);
cout << inv(A*A)+exp(3*I*A);

Local PRNG
forallsites(x)
cout << lattice.random(x).SU(Nc);

Parallel but trasparent
forallsites(x)
psi(x)=U(x,mu)*psi(x+mu);
psi.update();

Arbitrary lattice dimensions
int box[]={4,4,4,4,4,4};
mdp_lattice lattice(6,box);

Variety of fields
mdp_field<float> f(lattice);
gauge_field U(lattice,Nc);
fermi_field psi(lattice,Nc);
staggered_field phi(lattice,Nc);
dwfermi_field chi(lattice,Nc);
(and more...)

Variety of actions
Wilson, Clover, unisotropic,
Asqtad, Domain Wall, etc...

And algorithms
Minimum Residue, Stabilized Biconjugate Gradient, BiCGStabUML, Lanczos, etc.

New: SSE/SSE2 Optimizations
g++ test.cpp -DSSE2

New: Parallel simulator
./a.out -PSIM_NPROCS=4
(no MPI needed)

.. or just use MPI
mpiCC test.cpp -DPARALLEL
mpirun -np 4 a.out