Parallel Recursion Project FAQ

  • What do you mean by "doing microscopic computations in macroscopic systems"?

  • We mean that we model the system under study from a microscopic point of view, i.e. by a Hamiltonian describing interactions between individual atoms or electrons. In our simulations, we can include a large number of these particles (e.g. atomic sites in a lattice) while maintaining the microscopic identity of all of them. By 'large' we mean 1015 which approaches the number of atoms found in real-world laboratoy samples. By improving the efficiency of our algorithm, we expect to handle even bigger systems in the future. Compare this to other commonplace simulation types such as molecular dynamics which even on today's biggest computers struggle with 109 or so atoms.
     
  • How do you do it?

  • The magic word is 'dynamic recursion.' With dynamic recursion, we use a dynamically varying basis set for the transformation. This is possible because of the unique mathematical behavior of the recursion method with respect to errors introduced along the way. The errors made at each step decays exponentially with distance from the starting state and so the total error remains bounded. This allows us to throw out small elements in the transformation basis--hence dynamically varying. In other words, we don't have to include all the sites in a lattice all the time.  This saves memory and CPU time which enables us to simulate systems with more sites than could actually be represented in computer memory. Think about it as analogous to the difference between virtual and physical memory.
     
  • What is this 'recursion method' business?

  • The recursion method is in essence a unitary matrix transformation. In phyics applications, it is used to transform the Hamiltonian matrix given in some suitable basis set into a tridiagonal matrix. From the tridiagonal matrix, one can very easily extract local distributions of states, such as a projected density of states (PDOS) from which further quantities of interest can be calculated.
     
  • OK, I understand about the recursion method, but why 'dynamic'?

  • The recursion method generates this matrix transformation successively by creating a new set of basis states. The PDOS converges exponentially with the number of basis states, such that one can truncate the process after a finite number of steps with an exponentially good approximation to the PDOS obtained from a real, infinite system. This exponential process also holds for the errors introduced along the way (e.g. as a result of finite computer precision). In dynamic recursion, this is systematically exploited in that small components in successive column vectors of the transformation matrix are omitted. The total error will still remain bounded, but one gains an enormous computational advantage in terms of storage space and CPU time.
     
  • What is your model of parallelism?

  • We currently use multi-threading (pthreads). This works well on shared-memory architectured. In the future, we plan to support MPI for clustered SMP's and/or a high-performance parallel communications package such as Tulip, Nexus and SMARTS.
     
  • What platforms are supported?

  • Our development platform is an SGI Power Challenge. In addition, we are currently porting our code to a Linux cluster.
     
  • What compiler do you use?

  • We use KAI's KCC. We use a lot of the latest C++ features which are well supported by KCC. In addition, its optimizer is superb.