I am using the Fast Marching Method (FMM) to calculate shortest "distance" (traveltime) from some points.
The way FMM works is: I keep a velocity function in RAM: V(xi,yj,zk). I also keep a priority queue of all points on the front sorted on their V value. I repeatedly propagate the first point in this queue one step outwards. As I do this I remove the used point from the queue and insert those "touched" by the front.
My current implementation have two problems:
I. I must keep the whole cost (slowness) function in RAM. This limits the size of the cost function I can use.
II. I would like it to be even faster.
Any suggestions on how to improve my current implementation? For instance would it be possible to implement this on the GPU?