Research Article

Optimizing NEURON Simulation Environment Using Remote Memory Access with Recursive Doubling on Distributed Memory Systems

Algorithm 1

Recursive doubling algorithm for target calculation.
Input: Step number, Rank of processor
Output: target
    Start
    flag = Rank/((step − 1))
    if flag is even
        if IsPowerOfTwo(step)
              target rank + (2(step − 1))
        else
              diff step − previous power of two from rank
        if diff is positive number
              target Rank + (2(diff + previous power of two − 1))
        else
              target Rank + 2(Previous power of two)
    else
        if IsPowerOfTwo(step)
              target Rank − ((step − 1))
        else
        diff step − previous power of two from Rank
        if diff is positive
              target Rank − ((diff + previous power of two − 1))
        else
              (Previous power of two)
    Return target value
    End