def test_compare_device_host_64(): N = 100; x = numpy.random.random(N) y = numpy.random.random(N) z = numpy.random.random(N) q = numpy.concatenate((numpy.ones(N/2),-numpy.ones(N/2)))*electron_charge computeEnergy = ComputePotentialEnergy(testCtx, testQueue) energyd = computeEnergy.computeEnergy(x,y,z,q) energyh = 0.0 for i in range(x.size): for j in range(x.size): if i!=j: r = numpy.sqrt((x[i]-x[j])**2+(y[i]-y[j])**2+(z[i]-z[j])**2+impactFact) energyh += k * q[i]*q[j]/r/2.0; assert numpy.fabs(energyh - energyd)/numpy.fabs(energyh)< 1.0e-10
def test_compare_device_host_64(): N = 100 x = numpy.random.random(N) y = numpy.random.random(N) z = numpy.random.random(N) q = numpy.concatenate( (numpy.ones(N / 2), -numpy.ones(N / 2))) * electron_charge computeEnergy = ComputePotentialEnergy(testCtx, testQueue) energyd = computeEnergy.computeEnergy(x, y, z, q) energyh = 0.0 for i in range(x.size): for j in range(x.size): if i != j: r = numpy.sqrt((x[i] - x[j])**2 + (y[i] - y[j])**2 + (z[i] - z[j])**2 + impactFact) energyh += k * q[i] * q[j] / r / 2.0 assert numpy.fabs(energyh - energyd) / numpy.fabs(energyh) < 1.0e-10
def test_compare_device_host_32(): N = 100; x = numpy.random.random(N).astype(f32) y = numpy.random.random(N).astype(f32) z = numpy.random.random(N).astype(f32) q_ion = numpy.ones(N/2,dtype = f32)*electron_charge q_electron = - q_ion q = numpy.concatenate((q_ion,q_electron)) computeEnergy = ComputePotentialEnergy(testCtx, testQueue) energyd = computeEnergy.computeEnergy(x,y,z,q) energyh = 0.0 for i in range(x.size): for j in range(x.size): if i!=j: r = numpy.sqrt((x[i]-x[j])**2+(y[i]-y[j])**2+(z[i]-z[j])**2+impactFact) energyh += k * q[i]*q[j]/r/2.0; assert numpy.fabs(energyh - energyd)/numpy.fabs(energyh)< 1.0e-5
def test_compare_device_host_32(): N = 100 x = numpy.random.random(N).astype(f32) y = numpy.random.random(N).astype(f32) z = numpy.random.random(N).astype(f32) q_ion = numpy.ones(N / 2, dtype=f32) * electron_charge q_electron = -q_ion q = numpy.concatenate((q_ion, q_electron)) computeEnergy = ComputePotentialEnergy(testCtx, testQueue) energyd = computeEnergy.computeEnergy(x, y, z, q) energyh = 0.0 for i in range(x.size): for j in range(x.size): if i != j: r = numpy.sqrt((x[i] - x[j])**2 + (y[i] - y[j])**2 + (z[i] - z[j])**2 + impactFact) energyh += k * q[i] * q[j] / r / 2.0 assert numpy.fabs(energyh - energyd) / numpy.fabs(energyh) < 1.0e-5
def test_constructor(): computeEnergy = ComputePotentialEnergy(testCtx, testQueue)