Created
October 30, 2013 15:51
-
-
Save keisukefukuda/7235031 to your computer and use it in GitHub Desktop.
exaFMM P2P kernel model file
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// non-SIMD P2P kernel model | |
model exaFMM_P2P { | |
// Double precision | |
param wordSize = 8 | |
param Ni = 20 | |
param Nj = 20 | |
param mutual = 1 | |
data trgBodies[Ni * 3 * wordSize] | |
data srcBodies[Nj * 3 * wordSize] | |
kernel LaplaceP2P { | |
iterate [Ni] { | |
iterate [Nj] { | |
execute { | |
loads [4 * wordSize] from srcBodies | |
loads [4 * wordSize] from trgBodies | |
//vec3 dX = Bi[i].X - Bj[j].X - Xperiodic; | |
flops [3*3] as dp | |
// real_t R2 = norm(dX) + EPS2; | |
flops[6 + 3] as dp | |
//real_t invR2 = 1.0 / R2; | |
flops [1] | |
//real_t invR = Bi[i].SRC * Bj[j].SRC * sqrt(invR2); | |
flops [1] as sqrt,dp | |
flops [2] as dp | |
//dX *= invR2 * invR; | |
//pot += invR; | |
//ax += dX[0]; | |
//ay += dX[1]; | |
//az += dX[2]; | |
flops [6] as dp | |
//if (mutual) | |
// Bj[j].TRG[0] += invR; | |
// Bj[j].TRG[1] += dX[0]; | |
// Bj[j].TRG[2] += dX[1]; | |
// Bj[j].TRG[3] += dX[2]; | |
flops[mutual * 4] as dp | |
stores [wordSize * 4 * mutual] to srcBodies | |
} | |
execute { | |
//Bi[i].TRG[0] += pot; | |
//Bi[i].TRG[1] -= ax; | |
//Bi[i].TRG[2] -= ay; | |
//Bi[i].TRG[3] -= az; | |
flops [4] as dp | |
stores [wordSize * 4] to trgBodies | |
} | |
} | |
} | |
} | |
kernel main { | |
LaplaceP2P | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment