Hi all,

I wanted to make sure that I am getting the most from my 8 core computer
running R. I have a distance function like this:

distance <- function(pointX, pointY, vecX, vecY)
{
  #convert everything to radians
  pointX = pointX * pi/180
  pointY = pointY * pi/180
  vecX = vecX * pi/180
  vecY = vecY * pi/180

  #data@coords[,2] = lat
  #data@coords[,1] = lon
  delta_lon = pointX - vecX

  #print(sprintf("Len Pt X: %d Len Pt Y: %d",
length(pointX),length(pointY)))
  #print(sprintf("Len Vec X: %d Len Vec Y: %d", length(vecX),length(vecY)))
  #print(sprintf("Len delta_lon: %d", length(delta_lon)))

  R = 6372.8 #Radius of the earth (km)
  #spherical law of cosines:
  #acos(sin(lat)*sin(lat) + cos(lat)*cos(lat)*cos(delta lon))
  delta_rad = acos(sin(pointY)*sin(vecY) +
cos(pointY)*cos(vecY)*cos(delta_lon))
  delta_km = R*delta_rad
  return(delta_km)
}

vecX and vecY are very large, about 500k elements or more. I want to know
the most efficient way to write this function. I don't even need to do
lapply or an apply function for this because I assume that cos(vector) and
sign(vector) will handle all of the multi-threading that I could ask for. I
know that R is a functional language and, as such, I assume that each of
these will be run in parallel with the optimal settings. Am I mistaken in
this and if I am, how can I can default multithreading base operations
applied to vectors etc?

Currently I also have MPI set up for some work I am doing. Should I use
this heavily and assume that it is doing what I want it to? What free BLAS
should I be using on ubuntu 11.10?

Thank you,
~Ben

	[[alternative HTML version deleted]]

