Beispiel #1
0
  outFile = open( fileName + "T", "w" )
  outFile.write( codeString )
  outFile.close()
  
cudaCodeStringTemp = open("cudaBillar3D.cuT", "r").read()
cudaCodeString = cudaCodeStringTemp % { "nSPHERES":nSpheres, "nWALLS":nWalls, "THREADS_PER_BLOCK":block[0], "TIME_INDEX_MAX":maxTimeIndx }
cudaCode = SourceModule(cudaCodeString, no_extern_c=True, include_dirs=[currentDirectory])
mainKernel = cudaCode.get_function("main_kernel" )

###########################################################################
###########################################################################
#Initialize Data
nData = particlesForPlot*collisionsForPlot
print "Initializing CUDA memory"
#np.random.seed(int(time.time()))  #Change numpy random seed
initialFreeMemory = getFreeMemory( show=True )
initialPosX_h = 0.45*np.ones(nParticles).astype(cudaPre)
initialPosY_h = 0.45*np.ones(nParticles).astype(cudaPre)
initialPosZ_h = 0.45*np.ones(nParticles).astype(cudaPre)
#Spherically uniform random distribution for initial velocities
initialTheta = 2*np.pi*np.random.rand(nParticles).astype(cudaPre) 
initialPhi = np.arccos(2*np.random.rand(nParticles).astype(cudaPre) - 1) 
initialVelX_h = np.cos(initialTheta)*np.sin(initialPhi)
initialVelY_h = np.sin(initialTheta)*np.sin(initialPhi)
initialVelZ_h = np.cos(initialPhi)
initialRegionX_h = np.zeros(nParticles).astype(np.int32)
initialRegionY_h = np.zeros(nParticles).astype(np.int32)
initialRegionZ_h = np.zeros(nParticles).astype(np.int32)
initialPosX_d = gpuarray.to_gpu( initialPosX_h )
initialPosY_d = gpuarray.to_gpu( initialPosY_h )
initialPosZ_d = gpuarray.to_gpu( initialPosZ_h )
Beispiel #2
0
def specialKeyboardFunc(key, x, y):
    global temp, beta
    if key == animation2D.GLUT_KEY_UP:
        temp += 0.1
    if key == animation2D.GLUT_KEY_DOWN:
        if temp > 0.1: temp -= 0.1
    beta = np.float32(1. / temp)
    animation2D.windowTitle = "Ising Model 2D  spins={0}x{1}   T={2:.1f}".format(
        nHeight, nWidth, float(temp))


########################################################################
########################################################################
#Initialize all gpu data
print "\nInitializing Data"
initialMemory = getFreeMemory(show=True)
#Set initial random distribution
spins_h = (2 * np.random.random_integers(0, 1, [nHeight, nWidth]) - 1).astype(
    np.int32)
spinsOut_d = gpuarray.to_gpu(spins_h)
randomNumbers_d = curandom.rand((nData))
#For texture version
spinsInArray_d, copy2D_dtod = gpuArray2DtocudaArray(spinsOut_d)
#For shared version
finalMemory = getFreeMemory(show=False)
print " Total Global Memory Used: {0} Mbytes\n".format(
    float(initialMemory - finalMemory) / 1e6)
########################################################################
########################################################################

#configure animation2D functions and plotData
Beispiel #3
0
  return dataAll[...]
########################################################################
def saveState():
  ensureDirectory( dataDir )
  psi_h = psi_d.get()
  print "Saving Data"
  np.savetxt(dataDir + "psi_re.dat", psi_h.real.reshape(nData) )
  np.savetxt(dataDir + "psi_im.dat", psi_h.imag.reshape(nData) )
  dataFile = h5.File( dataDir + 'psi.hdf5' ,'w')
  dataFile.create_dataset( "psi", data=psi_d.get(), compression='lzf')
  dataFile.close()
  print "Data Saved: {0}\n".format( dataDir )
#######################################################################
    
print "\nInitializing Data"  
initialMemory = getFreeMemory( show=True )
psi_h = np.zeros( X.shape, dtype=cudaPreComplex )
psi_h.real = gaussian3D ( X, Y, Z, gammaX, gammaY, gammaZ, random=True ) 
#####################################################
#Load Data
#psi_h = loadState().astype(cudaPreComplex)
#####################################################
print " Making FFT plan"
from pyfft.cuda import Plan
fftPlan = Plan((nDepth, nHeight, nWidth),  dtype=cudaPreComplex)  
#from scikits.cuda.fft import fft, Plan
#fftPlan = Plan((nDepth, nHeight, nWidth),  in_dtype=cudaPreComplex, out_dtype=cudaPreComplex)
fftKx_h = np.zeros( nWidth, dtype=cudaPre )
fftKy_h = np.zeros( nHeight, dtype=cudaPre )
fftKz_h = np.zeros( nDepth, dtype=cudaPre )
for i in range(nWidth/2):