next up previous contents
Next: Hsolve as a Virtual Up: Compilation Previous: Compilation   Contents

Data Model

As already explained in the chapter on the numerical background, hsolve solves the equations in the model on a staggered time grid (see section 1.2.1, page [*]). The decoupling of the equations of intracellular mechanisms and conductances from the cable equation propagates to the design of the implementation for the emulation of the byte-code. Basically hsolve can be split into two almost separate parts: one part for the intracellular mechanisms and one part for the cable equations. These two parts have their own byte-code engine. Since hsolve stores the byte-code separately from the result values, each byte-code engine maintains two arrays (see figure 6.1). So for conductance equations and cable equations, hsolve maintains four arrays in total as follows:

  1. For cable equations:
    1. The array that contains the byte-code is called the funcs array. It uses the conductance values to compute membrane potentials on a future time point.
    2. The array that contains the computed values is partitioned into three distinct subparts: ravals, results and vm.
  2. For conductance equations:
    1. The array that contains the byte-code is called the ops array. It uses the membrane potentials for membrane potential dependent conductances.
    2. The array that contains the computed values is called the chip array.

Figure 6.1: Byte code compilation phases
\includegraphics[scale=0.52]{figures/compile1.eps}

The advantages of this design are:

  1. Optimizations can be implemented that are not possible at the modeling level.
  2. Because of a high cache use, you get extra performance (cache misses are identified as a bottleneck in some application areas).
  3. Easy to emulate a single byte code.





NOTE: We did not consider diffusion or concentration elements till now. If these elements would be incorporated into the discussion we would have to say that hsolve can be split into three separate parts: also the diffusion and concentration elements have their own byte code engine.






next up previous contents
Next: Hsolve as a Virtual Up: Compilation Previous: Compilation   Contents
2002-11-15