SEXP R_auto_cudaMemset2D(SEXP r_devPtr, SEXP r_pitch, SEXP r_value, SEXP r_width, SEXP r_height) { SEXP r_ans = R_NilValue; void * devPtr = GET_REF(r_devPtr, void ); size_t pitch = REAL(r_pitch)[0]; int value = INTEGER(r_value)[0]; size_t width = REAL(r_width)[0]; size_t height = REAL(r_height)[0]; cudaError_t ans; ans = cudaMemset2D(devPtr, pitch, value, width, height); r_ans = Renum_convert_cudaError_t(ans) ; return(r_ans); }
cudaError_t WINAPI wine_cudaMemset2D( void *devPtr, size_t pitch, int value, size_t width, size_t height ) { WINE_TRACE("\n"); return cudaMemset2D( devPtr, pitch, value, width, height ); }
void oz::gpu_image::clear() { OZ_CUDA_SAFE_CALL(cudaMemset2D(ptr(), pitch(), 0, row_size(), h())); }
void InitCudaLayers() { mmGridSizeX = sim_width/blockSizex; mmGridSizeY = sim_height/blockSizey; mmGridSize = mmGridSizeX*mmGridSizeY; memset(mmGrid, 0, sizeof(mmGrid)); memset(mmYGGrid, 0, sizeof(mmYGGrid)); tempHostData = (float*)malloc(sim_width*sim_height*TEMP_HOST_ELEM*sizeof(float)); tempHostDataNoCuda = (float*)malloc(sim_width*sim_height*TEMP_HOST_ELEM*sizeof(float)); grid8ValTick = (float*)malloc(sim_width*sim_height*8*sizeof(float)); initColors(); memset(gCudaLayer, 0, sizeof(gCudaLayer)); memset(gCudaFuncLayer, 0, sizeof(gCudaFuncLayer)); memset(gPhysLayer, 0, sizeof(gPhysLayer)); memset(gStateLayer, 0, sizeof(gStateLayer)); srand(0); int seed = rand(); const cudaChannelFormatDesc desc4 = cudaCreateChannelDesc<float4>(); cudaMallocArray(&gCudaVectArray, &desc4, sim_width, sim_height); #if NFLAYERS ==2 const cudaChannelFormatDesc desc2 = cudaCreateChannelDesc<float2>(); #else if NFLAYERS ==4 const cudaChannelFormatDesc descF = desc4; #endif cudaMallocArray(&gCudaFlArray, &descF, sim_width, sim_height); const cudaChannelFormatDesc desc = cudaCreateChannelDesc<float>(); cudaMallocArray(&gCudaFuncWavePack, &desc, sim_width); cudaMallocArray(&gCudaFuncSmooth, &desc, sim_width); cudaMallocArray(&(gCudaLayer[0]), &desc, sim_width, sim_height); cudaMallocArray(&(gCudaLayer[1]), &desc, sim_width, sim_height); cudaMallocArray(&(gCudaFuncLayer[0]), &desc, sim_width, sim_height); cudaMalloc(&cuTempData, TEMP_SIZE*sizeof(float)*sim_width*sim_height); cudaMalloc(&cuRandArr, sizeof(unsigned int)*sim_width*sim_height); cudaMalloc(&gStateLayer[0], sim_rect*sizeof(float)); cudaMemset(gStateLayer[0], 0, sim_rect*sizeof(float)); cudaMalloc(&gStateLayer[1], sim_rect*sizeof(float)); cudaMemset(gStateLayer[1], 0, sim_rect*sizeof(float)); cudaMalloc(&gPhysLayer[0], sim_rect*sizeof(float)); cudaMemset(gPhysLayer[0], 0, sim_rect*sizeof(float)); cudaMalloc(&gPhysLayer[1], sim_rect*sizeof(float)); cudaMemset(gPhysLayer[1], 0, sim_rect*sizeof(float)); cudaMalloc(&gRedBlueField, NFLAYERS*sim_rect*sizeof(float)); cudaMemset(gRedBlueField, 0, NFLAYERS*sim_rect*sizeof(float)); size_t pitch = 4*sim_width*sizeof(float); cudaMallocPitch((void**)&gVectorLayer, &pitch, 4*sim_width*sizeof(float), sim_height); cudaMemset2D(gVectorLayer, 4*sim_width*sizeof(float), 0, 4*sim_width*sizeof(float), sim_height); InitWavePack(32, 1.f, sim_width, sim_height, cuTempData, gCudaFuncWavePack); InitSmooth(1, sim_width, cuTempData, gCudaFuncSmooth); InitRnd2DInt(seed, cuRandArr, sim_width, sim_height); InitFuncLayer(gCudaFuncLayer[0], cuTempData, sim_width, sim_height); InitPhysLayer(gPhysLayer[0], gStateLayer[0], cuRandArr, sim_width, sim_height); float* gridIni = cuTempData+3*sim_rect/2; float* halfTemp = cuTempData + sim_rect; float* out = cuTempData + 2*sim_rect; cudaMemset(out, 0, sim_rect*sizeof(float)); seed = rand(); int gridx = INTERP_SIZEX; int gridy = INTERP_SIZEX; InitRnd2DF(seed, gridIni, gridx, gridy); float scaleadd = .7f; Spline2D(gridIni, gridx, gridy, halfTemp, scaleadd, out, sim_width, sim_height); seed = rand(); gridx = (int)(gridx*2); gridy = (int)(gridy*2); InitRnd2DF(seed, gridIni, gridx, gridy); scaleadd = .3f; Spline2D(gridIni, gridx, gridy, halfTemp, scaleadd, out, sim_width, sim_height); cudaMemcpyToArray(gCudaLayer[0], 0, 0, out, sizeof(float)*sim_rect, cudaMemcpyDeviceToDevice); cudaMemset(out, 0, sim_rect*sizeof(float)); gridx = INTERP_SIZEX; gridy = INTERP_SIZEX; seed = rand(); InitRnd2DF(seed, gridIni, gridx, gridy); scaleadd = .7f; Spline2D(gridIni, gridx, gridy, halfTemp, scaleadd, out, sim_width, sim_height); seed = rand(); gridx = (int)(gridx*1.5); gridy = (int)(gridy*1.5); InitRnd2DF(seed, gridIni, gridx, gridy); scaleadd = .3f; Spline2D(gridIni, gridx, gridy, halfTemp, scaleadd, out, sim_width, sim_height); cudaMemcpyToArray(gCudaLayer[1], 0, 0, out, sizeof(float)*sim_rect, cudaMemcpyDeviceToDevice); float2 pos0; pos0.x = gObj0X; pos0.y = gObj0Y; float2 pos1; pos1.x = gObj1X; pos1.y = gObj1Y; gObjInertia.Init(pos0, pos1); LayerProc(sim_width, sim_height, gCudaLayer[0], gCudaFuncLayer[0], cuTempData, pos0.x , pos0.y, pos1.x , pos1.y); ParticleStateInit(cuTempData, cuRandArr, gStateLayer[0], gPhysLayer[0], gRedBlueField); InitBhv(); }