add crash point in the case of cropted memory access
This commit is contained in:
+10
-12
@@ -24,30 +24,27 @@ public:
|
|||||||
};
|
};
|
||||||
template<typename T>
|
template<typename T>
|
||||||
int32_t write(size_t id/*buffer ID*/,T* buf,cl::CommandQueue* queue,cl::Context* context,size_t buf_size){
|
int32_t write(size_t id/*buffer ID*/,T* buf,cl::CommandQueue* queue,cl::Context* context,size_t buf_size){
|
||||||
|
cl_int error;
|
||||||
_buffers.push_back(std::pair<std::pair<cl::Buffer,size_t>,size_t>(std::pair<cl::Buffer,size_t>(cl::Buffer(*context, CL_MEM_READ_WRITE | CL_MEM_USE_HOST_PTR
|
_buffers.push_back(std::pair<std::pair<cl::Buffer,size_t>,size_t>(std::pair<cl::Buffer,size_t>(cl::Buffer(*context, CL_MEM_READ_WRITE | CL_MEM_USE_HOST_PTR
|
||||||
, sizeof(T) * buf_size,buf),
|
, sizeof(T) * buf_size,buf,&error),
|
||||||
buf_size),id));
|
buf_size),id));
|
||||||
|
assert(error == CL_SUCCESS);
|
||||||
cl_int err=_kernel->setArg(id,_buffers.back().first.first);
|
cl_int err=_kernel->setArg(id,_buffers.back().first.first);
|
||||||
if(err!=0){
|
assert(err == CL_SUCCESS);
|
||||||
std::cerr<<"Error C:Kernel, F:write, L3:setArg\t"<<id<<"\t"<<err<<'\n';
|
|
||||||
return err;
|
|
||||||
}
|
|
||||||
return CL_SUCCESS;
|
return CL_SUCCESS;
|
||||||
|
|
||||||
};
|
};
|
||||||
int32_t write(size_t id/*buffer ID*/,cv::Mat& buf,cl::Context* context){
|
int32_t write(size_t id/*buffer ID*/,cv::Mat& buf,cl::Context* context){
|
||||||
|
cl_int error;
|
||||||
_images.push_back(std::pair<cl::Image2D,size_t>(cl::Image2D(*context, CL_MEM_READ_ONLY | CL_MEM_USE_HOST_PTR,
|
_images.push_back(std::pair<cl::Image2D,size_t>(cl::Image2D(*context, CL_MEM_READ_ONLY | CL_MEM_USE_HOST_PTR,
|
||||||
cl::ImageFormat(CL_R, CL_UNSIGNED_INT8),
|
cl::ImageFormat(CL_R, CL_UNSIGNED_INT8),
|
||||||
buf.size().width,
|
buf.size().width,
|
||||||
buf.size().height,
|
buf.size().height,
|
||||||
0,
|
0,
|
||||||
reinterpret_cast<uchar*>(buf.data)),id));
|
reinterpret_cast<uchar*>(buf.data),&error),id));
|
||||||
|
assert(error == CL_SUCCESS);
|
||||||
cl_int err=_kernel->setArg(id,_images.back().first);
|
cl_int err=_kernel->setArg(id,_images.back().first);
|
||||||
if(err!=0){
|
assert(err == CL_SUCCESS);
|
||||||
std::cerr<<"Error C:Kernel, F:write image, L:setArg ID:\t"<<id<<"\t"<<err<<'\n';
|
|
||||||
return err;
|
|
||||||
}
|
|
||||||
return CL_SUCCESS;
|
return CL_SUCCESS;
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -138,7 +135,8 @@ public:
|
|||||||
}
|
}
|
||||||
template<typename T>
|
template<typename T>
|
||||||
int32_t write_buf(size_t id1/*kernal ID*/,size_t id2/*buffer ID*/,T&& value){
|
int32_t write_buf(size_t id1/*kernal ID*/,size_t id2/*buffer ID*/,T&& value){
|
||||||
_kernels.at(id1)._kernel->setArg(id2,value);
|
cl_int error=_kernels.at(id1)._kernel->setArg(id2,value);
|
||||||
|
assert(error == CL_SUCCESS);
|
||||||
};
|
};
|
||||||
template<typename T>
|
template<typename T>
|
||||||
int32_t reload_buf(size_t id1/*kernal ID*/,size_t id2/*buffer ID*/,T* buf) {
|
int32_t reload_buf(size_t id1/*kernal ID*/,size_t id2/*buffer ID*/,T* buf) {
|
||||||
|
|||||||
Reference in New Issue
Block a user