Here is my code,I use this to init my data,and I want to use in another file.
__constant__ RawImageParameter d_rawImageParameter;
__constant__ DisparityParameter d_disparityParameter;
__constant__ FilterParameterDevice d_filterPatameterDevice;
__device__ MicroImageParameterDevice d_microImageParameter;
__device__ float* d_costVol;
__device__ float* d_rawDisp;
__device__ float* d_ppLensMeanDisp;
__device__ float* d_renderCache;
__device__ float* d_inputImg;
__device__ float* d_inputImgRec;
__device__ RanderMapPatch *d_ppRanderMapPatch;
//__device__ float *d_randerImg;
__device__ float *d_tmp;
__device__ float *d_simg;
__device__ int *sx_begin, *sy_begin, *sx_end, *sy_end;
__device__ int *d_randerMapWidth, *d_randerMapHeight;
__constant__ float *d_fltMax;
void DataParameter::mapToGPU()
{
CUDA_CHECK(cudaMemcpyToSymbol(d_rawImageParameter, &m_rawImageParameter, sizeof(RawImageParameter)));
CUDA_CHECK(cudaMemcpyToSymbol(d_disparityParameter, &m_disparityParameter, sizeof(DisparityParameter)));
float fltMax = FLT_MAX;
CUDA_CHECK(cudaMemcpyToSymbol(d_fltMax, &fltMax, sizeof(float)));
int* d_validNeighborPixelsNum;
int* d_validPixelsMask;
float* d_filterKernel;
CUDA_CHECK(cudaMalloc((void**)&d_validNeighborPixelsNum, m_filterPatameter.m_pValidNeighborPixelsNum->total() * sizeof(int)));
CUDA_CHECK(cudaMemcpy(d_validNeighborPixelsNum, m_filterPatameter.m_pValidNeighborPixelsNum->data,
m_filterPatameter.m_pValidNeighborPixelsNum->total() * sizeof(int), cudaMemcpyHostToDevice));
CUDA_CHECK(cudaMalloc((void**)&d_validPixelsMask, m_filterPatameter.m_pValidPixelsMask->total() * sizeof(int)));
CUDA_CHECK(cudaMemcpy(d_validPixelsMask, m_filterPatameter.m_pValidPixelsMask->data,
m_filterPatameter.m_pValidPixelsMask->total() * sizeof(int), cudaMemcpyHostToDevice));
CUDA_CHECK(cudaMalloc((void**)&d_filterKernel, m_filterPatameter.m_filterKnernel.total() * sizeof(float)));
CUDA_CHECK(cudaMemcpy(d_filterKernel, m_filterPatameter.m_filterKnernel.data,
m_filterPatameter.m_filterKnernel.total() * sizeof(float), cudaMemcpyHostToDevice));
FilterParameterDevice filterParamDevice = { d_validNeighborPixelsNum, d_validPixelsMask, d_filterKernel };
CUDA_CHECK(cudaMemcpyToSymbol(d_filterPatameterDevice, &filterParamDevice, sizeof(FilterParameterDevice)));
int rows = m_rawImageParameter.m_yLensNum;
int cols = m_rawImageParameter.m_xLensNum;
int srcImgHeight = m_rawImageParameter.m_srcImgHeight;
int srcImgWidth = m_rawImageParameter.m_srcImgWidth;
int neighborNum = NEIGHBOR_MATCH_LENS_NUM;
CUDA_CHECK(cudaMalloc((void**)&d_microImageParameter, sizeof(MicroImageParameterDevice)));
MicroImageParameterDevice h_microImageParameterDevice;
h_microImageParameterDevice.m_circleDiameter = m_microImageParameter.m_circleDiameter;
h_microImageParameterDevice.m_circleNarrow = m_microImageParameter.m_circleNarrow;
h_microImageParameterDevice.m_radiusDisEqu = m_microImageParameter.m_radiusDisEqu;
int lensCenterPointsSize = m_rawImageParameter.m_yLensNum * m_rawImageParameter.m_xLensNum * sizeof(cv::Point2d);
CUDA_CHECK(cudaMalloc((void**)&h_microImageParameterDevice.m_ppLensCenterPoints, lensCenterPointsSize));
CUDA_CHECK(cudaMemcpy(h_microImageParameterDevice.m_ppLensCenterPoints, m_microImageParameter.m_ppLensCenterPoints[0], lensCenterPointsSize, cudaMemcpyHostToDevice));
int pixelsMappingSetSize = m_rawImageParameter.m_srcImgHeight * m_rawImageParameter.m_srcImgWidth * sizeof(int);
CUDA_CHECK(cudaMalloc((void**)&h_microImageParameterDevice.m_ppPixelsMappingSet, pixelsMappingSetSize));
CUDA_CHECK(cudaMemcpy(h_microImageParameterDevice.m_ppPixelsMappingSet, m_microImageParameter.m_ppPixelsMappingSet[0], pixelsMappingSetSize, cudaMemcpyHostToDevice));
int matchNeighborLensSize = m_rawImageParameter.m_yLensNum * m_rawImageParameter.m_xLensNum * NEIGHBOR_MATCH_LENS_NUM * sizeof(MatchNeighborLens);
CUDA_CHECK(cudaMalloc((void**)&h_microImageParameterDevice.m_ppMatchNeighborLens, matchNeighborLensSize));
CUDA_CHECK(cudaMemcpy(h_microImageParameterDevice.m_ppMatchNeighborLens, m_microImageParameter.m_ppMatchNeighborLens[0][0], matchNeighborLensSize, cudaMemcpyHostToDevice));
CUDA_CHECK(cudaMemcpyToSymbol(d_microImageParameter, &h_microImageParameterDevice, sizeof(MicroImageParameterDevice)));
CUDA_CHECK(cudaMalloc((void**)&d_costVol, m_disparityParameter.m_disNum * m_rawImageParameter.m_recImgHeight * m_rawImageParameter.m_recImgWidth * sizeof(float)));
CUDA_CHECK(cudaMemset(d_costVol, 0, m_disparityParameter.m_disNum * m_rawImageParameter.m_recImgHeight * m_rawImageParameter.m_recImgWidth * sizeof(float)));
CUDA_CHECK(cudaMalloc((void**)&d_rawDisp, m_rawImageParameter.m_recImgHeight * m_rawImageParameter.m_recImgWidth * sizeof(float)));
CUDA_CHECK(cudaMemset(d_rawDisp, 15, m_rawImageParameter.m_recImgHeight * m_rawImageParameter.m_recImgWidth * sizeof(float)));
CUDA_CHECK(cudaMalloc(&d_ppLensMeanDisp, m_rawImageParameter.m_yLensNum * m_rawImageParameter.m_xLensNum * sizeof(float)));
CUDA_CHECK(cudaMalloc(&d_ppRanderMapPatch, m_rawImageParameter.m_yLensNum * m_rawImageParameter.m_xLensNum * sizeof(RanderMapPatch)));
CUDA_CHECK(cudaMalloc(&d_tmp, DEST_WIDTH * DEST_HEIGHT * 3 * sizeof(float)));
CUDA_CHECK(cudaMalloc(&d_simg, DEST_WIDTH * DEST_HEIGHT * 3 * sizeof(float)));
CUDA_CHECK(cudaMalloc(&sx_begin, sizeof(int)));
CUDA_CHECK(cudaMalloc(&sy_begin, sizeof(int)));
CUDA_CHECK(cudaMalloc(&sx_end, sizeof(int)));
CUDA_CHECK(cudaMalloc(&sy_end, sizeof(int)));
CUDA_CHECK(cudaMemset(sx_begin, INT_MAX, sizeof(int)));
CUDA_CHECK(cudaMemset(sy_begin, INT_MAX, sizeof(int)));
CUDA_CHECK(cudaMemset(sx_end, INT_MIN, sizeof(int)));
CUDA_CHECK(cudaMemset(sy_end, INT_MIN, sizeof(int)));
CUDA_CHECK(cudaMalloc(&d_randerMapWidth, sizeof(int)));
CUDA_CHECK(cudaMalloc(&d_randerMapHeight, sizeof(int)));
printf("sx_begin pointer: %p\n", d_inputImg);
}
another file:
extern __constant__ RawImageParameter d_rawImageParameter;
extern __constant__ DisparityParameter d_disparityParameter;
extern __constant__ FilterParameterDevice d_filterPatameterDevice;
extern __device__ MicroImageParameterDevice d_microImageParameter;
extern __device__ float* d_costVol;
extern __device__ float* d_rawDisp;
extern __device__ float* d_inputImg;
extern __device__ float* d_ppLensMeanDisp;
extern __device__ RanderMapPatch *d_ppRanderMapPatch;
extern __device__ float *d_tmp;
extern __device__ float *d_simg;
extern __device__ float* d_inputImgRec;
extern __device__ int *sx_begin, *sy_begin, *sx_end, *sy_end;
extern __device__ int *d_randerMapWidth, *d_randerMapHeight;
I try to print some paramter
printf("sx_begin pointer: %p\n", d_inputImg);
they are null,I just started learning CUDA, and I’m not very familiar with it.