本文整理汇总了C++中cl_mem类的典型用法代码示例。如果您正苦于以下问题:C++ cl_mem类的具体用法?C++ cl_mem怎么用?C++ cl_mem使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了cl_mem类的18个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: is_valid
bool is_valid(cl_mem m)
{
global_mutex.lock();
const bool r = valid_mems.count(m) != 0 && m->valid();
if (r)
m->lock();
global_mutex.unlock();
return r;
}
开发者ID:Agorath,项目名称:freeocl,代码行数:9,代码来源:freeocl.cpp
示例2: clRetainMemObjectFCL
cl_int clRetainMemObjectFCL (cl_mem memobj)
{
MSG(clRetainMemObjectFCL);
if (!FreeOCL::is_valid(memobj))
return CL_INVALID_MEM_OBJECT;
memobj->retain();
memobj->unlock();
return CL_SUCCESS;
}
开发者ID:Agorath,项目名称:freeocl,代码行数:10,代码来源:mem.cpp
示例3: clRetainMemObject
cl_int
clRetainMemObject(cl_mem memobj)
{
if (!memobj->isA(Coal::Object::T_MemObject))
return CL_INVALID_MEM_OBJECT;
memobj->reference();
return CL_SUCCESS;
}
开发者ID:jakebolewski,项目名称:clover,代码行数:10,代码来源:api_memory.cpp
示例4: clReleaseMemObject
cl_int
clReleaseMemObject(cl_mem memobj)
{
if (!memobj->isA(Coal::Object::T_MemObject))
return CL_INVALID_MEM_OBJECT;
if (memobj->dereference())
delete memobj;
return CL_SUCCESS;
}
开发者ID:jakebolewski,项目名称:clover,代码行数:11,代码来源:api_memory.cpp
示例5: clGetMemObjectInfo
cl_int
clGetMemObjectInfo(cl_mem memobj,
cl_mem_info param_name,
size_t param_value_size,
void * param_value,
size_t * param_value_size_ret)
{
if (!memobj->isA(Coal::Object::T_MemObject))
return CL_INVALID_MEM_OBJECT;
return memobj->info(param_name, param_value_size, param_value,
param_value_size_ret);
}
开发者ID:jakebolewski,项目名称:clover,代码行数:13,代码来源:api_memory.cpp
示例6: clSetMemObjectDestructorCallback
cl_int
clSetMemObjectDestructorCallback(cl_mem memobj,
void (CL_CALLBACK *pfn_notify)(cl_mem memobj,
void *user_data),
void * user_data)
{
if (!memobj->isA(Coal::Object::T_MemObject))
return CL_INVALID_MEM_OBJECT;
memobj->setDestructorCallback(pfn_notify, user_data);
return CL_SUCCESS;
}
开发者ID:jakebolewski,项目名称:clover,代码行数:13,代码来源:api_memory.cpp
示例7: clRetainMemObject
PUBLIC cl_int
clRetainMemObject(cl_mem obj) {
if (!obj)
return CL_INVALID_MEM_OBJECT;
obj->retain();
return CL_SUCCESS;
}
开发者ID:FASTCHIP,项目名称:kernel_3.4.67_lenovo_s939_mtk6592,代码行数:8,代码来源:memory.cpp
示例8: clGetImageInfo
cl_int
clGetImageInfo(cl_mem image,
cl_image_info param_name,
size_t param_value_size,
void * param_value,
size_t * param_value_size_ret)
{
if (!image->isA(Coal::Object::T_MemObject) ||
(image->type() != Coal::MemObject::Image2D &&
image->type() != Coal::MemObject::Image3D))
return CL_INVALID_MEM_OBJECT;
Coal::Image2D *image2d = (Coal::Image2D *)image;
return image2d->imageInfo(param_name, param_value_size, param_value,
param_value_size_ret);
}
开发者ID:jakebolewski,项目名称:clover,代码行数:17,代码来源:api_memory.cpp
示例9: clReleaseMemObjectFCL
cl_int clReleaseMemObjectFCL (cl_mem memobj)
{
MSG(clReleaseMemObjectFCL);
if (!FreeOCL::is_valid(memobj))
return CL_INVALID_MEM_OBJECT;
memobj->release();
if (memobj->get_ref_count() == 0)
{
memobj->invalidate();
memobj->unlock();
delete memobj;
}
else
memobj->unlock();
return CL_SUCCESS;
}
开发者ID:Agorath,项目名称:freeocl,代码行数:17,代码来源:mem.cpp
示例10: clReleaseMemObject
PUBLIC cl_int
clReleaseMemObject(cl_mem obj) {
if (!obj)
return CL_INVALID_MEM_OBJECT;
if (obj->release())
delete obj;
return CL_SUCCESS;
}
开发者ID:FASTCHIP,项目名称:kernel_3.4.67_lenovo_s939_mtk6592,代码行数:10,代码来源:memory.cpp
示例11: clGetMemObjectInfo
PUBLIC cl_int
clGetMemObjectInfo(cl_mem obj, cl_mem_info param,
size_t size, void *buf, size_t *size_ret) {
if (!obj)
return CL_INVALID_MEM_OBJECT;
switch (param) {
case CL_MEM_TYPE:
return scalar_property<cl_mem_object_type>(buf, size, size_ret,
obj->type());
case CL_MEM_FLAGS:
return scalar_property<cl_mem_flags>(buf, size, size_ret, obj->flags());
case CL_MEM_SIZE:
return scalar_property<size_t>(buf, size, size_ret, obj->size());
case CL_MEM_HOST_PTR:
return scalar_property<void *>(buf, size, size_ret, obj->host_ptr());
case CL_MEM_MAP_COUNT:
return scalar_property<cl_uint>(buf, size, size_ret, 0);
case CL_MEM_REFERENCE_COUNT:
return scalar_property<cl_uint>(buf, size, size_ret, obj->ref_count());
case CL_MEM_CONTEXT:
return scalar_property<cl_context>(buf, size, size_ret, &obj->ctx);
case CL_MEM_ASSOCIATED_MEMOBJECT: {
sub_buffer *sub = dynamic_cast<sub_buffer *>(obj);
return scalar_property<cl_mem>(buf, size, size_ret,
(sub ? &sub->parent : NULL));
}
case CL_MEM_OFFSET: {
sub_buffer *sub = dynamic_cast<sub_buffer *>(obj);
return scalar_property<size_t>(buf, size, size_ret,
(sub ? sub->offset() : 0));
}
default:
return CL_INVALID_VALUE;
}
}
开发者ID:FASTCHIP,项目名称:kernel_3.4.67_lenovo_s939_mtk6592,代码行数:43,代码来源:memory.cpp
示例12: clCreateSubBuffer
cl_mem
clCreateSubBuffer(cl_mem buffer,
cl_mem_flags flags,
cl_buffer_create_type buffer_create_type,
const void * buffer_create_info,
cl_int * errcode_ret)
{
cl_int dummy_errcode;
if (!errcode_ret)
errcode_ret = &dummy_errcode;
if (!buffer->isA(Coal::Object::T_MemObject))
{
*errcode_ret = CL_INVALID_MEM_OBJECT;
return 0;
}
Coal::MemObject *memobject = (Coal::MemObject *)buffer;
cl_buffer_region *region = (cl_buffer_region *)buffer_create_info;
// NOTE: Is it right ? Couldn't we create SubBuffers of images ?
if (memobject->type() != Coal::MemObject::Buffer)
{
*errcode_ret = CL_INVALID_MEM_OBJECT;
return 0;
}
if (buffer_create_type != CL_BUFFER_CREATE_TYPE_REGION)
{
*errcode_ret = CL_INVALID_VALUE;
return 0;
}
if (!buffer_create_info)
{
*errcode_ret = CL_INVALID_VALUE;
return 0;
}
*errcode_ret = CL_SUCCESS;
Coal::SubBuffer *buf = new Coal::SubBuffer((Coal::Buffer *)buffer,
region->origin, region->size,
flags, errcode_ret);
if (*errcode_ret != CL_SUCCESS || (*errcode_ret = buf->init()) != CL_SUCCESS)
{
delete buf;
return 0;
}
return (cl_mem)buf;
}
开发者ID:jakebolewski,项目名称:clover,代码行数:54,代码来源:api_memory.cpp
示例13: clSetMemObjectDestructorCallback
PUBLIC cl_int
clSetMemObjectDestructorCallback(cl_mem obj,
void (CL_CALLBACK *pfn_notify)(cl_mem, void *),
void *user_data) {
if (!obj)
return CL_INVALID_MEM_OBJECT;
if (!pfn_notify)
return CL_INVALID_VALUE;
obj->destroy_notify([=]{ pfn_notify(obj, user_data); });
return CL_SUCCESS;
}
开发者ID:FASTCHIP,项目名称:kernel_3.4.67_lenovo_s939_mtk6592,代码行数:14,代码来源:memory.cpp
示例14: clEnqueueReadImage
cl_int
clEnqueueReadImage(cl_command_queue command_queue,
cl_mem image,
cl_bool blocking_read,
const size_t * origin,
const size_t * region,
size_t row_pitch,
size_t slice_pitch,
void * ptr,
cl_uint num_events_in_wait_list,
const cl_event * event_wait_list,
cl_event * event)
{
cl_int rs = CL_SUCCESS;
if (!command_queue->isA(Coal::Object::T_CommandQueue))
return CL_INVALID_COMMAND_QUEUE;
if (!image || (image->type() != Coal::MemObject::Image2D &&
image->type() != Coal::MemObject::Image3D))
return CL_INVALID_MEM_OBJECT;
Coal::ReadImageEvent *command = new Coal::ReadImageEvent(
(Coal::CommandQueue *)command_queue,
(Coal::Image2D *)image,
origin, region, row_pitch, slice_pitch, (void *)ptr,
num_events_in_wait_list, (const Coal::Event **)event_wait_list, &rs
);
if (rs != CL_SUCCESS)
{
delete command;
return rs;
}
return queueEvent(command_queue, command, event, blocking_read);
}
开发者ID:jakebolewski,项目名称:clover,代码行数:37,代码来源:api_enqueue.cpp
示例15: clEnqueueWriteBuffer
PUBLIC cl_int
clEnqueueWriteBuffer(cl_command_queue q, cl_mem obj, cl_bool blocking,
size_t offset, size_t size, const void *ptr,
cl_uint num_deps, const cl_event *deps,
cl_event *ev) try {
validate_base(q, num_deps, deps);
validate_obj(q, obj);
if (!ptr || offset > obj->size() || offset + size > obj->size())
throw error(CL_INVALID_VALUE);
hard_event *hev = new hard_event(
*q, CL_COMMAND_WRITE_BUFFER, { deps, deps + num_deps },
soft_copy_op(q,
obj, { offset }, { 1 },
ptr, { 0 }, { 1 },
{ size, 1, 1 }));
ret_object(ev, hev);
return CL_SUCCESS;
} catch (error &e) {
return e.get();
}
开发者ID:Bluerise,项目名称:bitrig-xenocara,代码行数:24,代码来源:transfer.cpp
示例16: clEnqueueUnmapMemObject
PUBLIC cl_int
clEnqueueUnmapMemObject(cl_command_queue q, cl_mem obj, void *ptr,
cl_uint num_deps, const cl_event *deps,
cl_event *ev) try {
validate_base(q, num_deps, deps);
validate_obj(q, obj);
hard_event *hev = new hard_event(
*q, CL_COMMAND_UNMAP_MEM_OBJECT, { deps, deps + num_deps },
[=](event &) {
obj->resource(q).del_map(ptr);
});
ret_object(ev, hev);
return CL_SUCCESS;
} catch (error &e) {
return e.get();
}
开发者ID:Bluerise,项目名称:bitrig-xenocara,代码行数:19,代码来源:transfer.cpp
示例17: clGetMemObjectInfoFCL
cl_int clGetMemObjectInfoFCL (cl_mem memobj,
cl_mem_info param_name,
size_t param_value_size,
void *param_value,
size_t *param_value_size_ret)
{
MSG(clGetMemObjectInfoFCL);
FreeOCL::unlocker unlock;
if (!FreeOCL::is_valid(memobj))
return CL_INVALID_MEM_OBJECT;
unlock.handle(memobj);
bool bTooSmall = false;
switch(param_name)
{
case CL_MEM_TYPE: bTooSmall = SET_VAR(memobj->mem_type); break;
case CL_MEM_FLAGS: bTooSmall = SET_VAR(memobj->flags); break;
case CL_MEM_SIZE: bTooSmall = SET_VAR(memobj->size); break;
case CL_MEM_HOST_PTR: bTooSmall = SET_VAR(memobj->host_ptr); break;
case CL_MEM_MAP_COUNT:
{
cl_uint n = memobj->mapped.size();
bTooSmall = SET_VAR(n);
}
break;
case CL_MEM_REFERENCE_COUNT: bTooSmall = SET_VAR(memobj->get_ref_count()); break;
case CL_MEM_CONTEXT: bTooSmall = SET_VAR(memobj->context); break;
case CL_MEM_ASSOCIATED_MEMOBJECT: bTooSmall = SET_VAR(memobj->parent); break;
case CL_MEM_OFFSET: bTooSmall = SET_VAR(memobj->offset); break;
default:
return CL_INVALID_VALUE;
}
if (bTooSmall && param_value != NULL)
return CL_INVALID_VALUE;
return CL_SUCCESS;
}
开发者ID:Agorath,项目名称:freeocl,代码行数:38,代码来源:mem.cpp
示例18: launcher
void b3GpuPgsContactSolver::solveContacts(int numBodies, cl_mem bodyBuf, cl_mem inertiaBuf, int numContacts, cl_mem contactBuf, const b3Config& config, int static0Index)
{
B3_PROFILE("solveContacts");
m_data->m_bodyBufferGPU->setFromOpenCLBuffer(bodyBuf,numBodies);
m_data->m_inertiaBufferGPU->setFromOpenCLBuffer(inertiaBuf,numBodies);
m_data->m_pBufContactOutGPU->setFromOpenCLBuffer(contactBuf,numContacts);
if (optionalSortContactsDeterminism)
{
if (!gCpuSortContactsDeterminism)
{
B3_PROFILE("GPU Sort contact constraints (determinism)");
m_data->m_pBufContactOutGPUCopy->resize(numContacts);
m_data->m_contactKeyValues->resize(numContacts);
m_data->m_pBufContactOutGPU->copyToCL(m_data->m_pBufContactOutGPUCopy->getBufferCL(),numContacts,0,0);
{
b3LauncherCL launcher(m_data->m_queue, m_data->m_setDeterminismSortDataChildShapeBKernel,"m_setDeterminismSortDataChildShapeBKernel");
launcher.setBuffer(m_data->m_pBufContactOutGPUCopy->getBufferCL());
launcher.setBuffer(m_data->m_contactKeyValues->getBufferCL());
launcher.setConst(numContacts);
launcher.launch1D( numContacts, 64 );
}
m_data->m_solverGPU->m_sort32->execute(*m_data->m_contactKeyValues);
{
b3LauncherCL launcher(m_data->m_queue, m_data->m_setDeterminismSortDataChildShapeAKernel,"m_setDeterminismSortDataChildShapeAKernel");
launcher.setBuffer(m_data->m_pBufContactOutGPUCopy->getBufferCL());
launcher.setBuffer(m_data->m_contactKeyValues->getBufferCL());
launcher.setConst(numContacts);
launcher.launch1D( numContacts, 64 );
}
m_data->m_solverGPU->m_sort32->execute(*m_data->m_contactKeyValues);
{
b3LauncherCL launcher(m_data->m_queue, m_data->m_setDeterminismSortDataBodyBKernel,"m_setDeterminismSortDataBodyBKernel");
launcher.setBuffer(m_data->m_pBufContactOutGPUCopy->getBufferCL());
launcher.setBuffer(m_data->m_contactKeyValues->getBufferCL());
launcher.setConst(numContacts);
launcher.launch1D( numContacts, 64 );
}
m_data->m_solverGPU->m_sort32->execute(*m_data->m_contactKeyValues);
{
b3LauncherCL launcher(m_data->m_queue, m_data->m_setDeterminismSortDataBodyAKernel,"m_setDeterminismSortDataBodyAKernel");
launcher.setBuffer(m_data->m_pBufContactOutGPUCopy->getBufferCL());
launcher.setBuffer(m_data->m_contactKeyValues->getBufferCL());
launcher.setConst(numContacts);
launcher.launch1D( numContacts, 64 );
}
m_data->m_solverGPU->m_sort32->execute(*m_data->m_contactKeyValues);
{
B3_PROFILE("gpu reorderContactKernel (determinism)");
b3Int4 cdata;
cdata.x = numContacts;
//b3BufferInfoCL bInfo[] = { b3BufferInfoCL( m_data->m_pBufContactOutGPU->getBufferCL() ), b3BufferInfoCL( m_data->m_solverGPU->m_contactBuffer2->getBufferCL())
// , b3BufferInfoCL( m_data->m_solverGPU->m_sortDataBuffer->getBufferCL()) };
b3LauncherCL launcher(m_data->m_queue,m_data->m_solverGPU->m_reorderContactKernel,"m_reorderContactKernel");
launcher.setBuffer(m_data->m_pBufContactOutGPUCopy->getBufferCL());
launcher.setBuffer(m_data->m_pBufContactOutGPU->getBufferCL());
launcher.setBuffer(m_data->m_contactKeyValues->getBufferCL());
launcher.setConst( cdata );
launcher.launch1D( numContacts, 64 );
}
} else
{
B3_PROFILE("CPU Sort contact constraints (determinism)");
b3AlignedObjectArray<b3Contact4> cpuConstraints;
m_data->m_pBufContactOutGPU->copyToHost(cpuConstraints);
bool sort = true;
if (sort)
{
cpuConstraints.quickSort(b3ContactCmp);
for (int i=0;i<cpuConstraints.size();i++)
{
cpuConstraints[i].m_batchIdx = i;
}
}
m_data->m_pBufContactOutGPU->copyFromHost(cpuConstraints);
if (m_debugOutput==100)
{
for (int i=0;i<cpuConstraints.size();i++)
{
printf("c[%d].m_bodyA = %d, m_bodyB = %d, batchId = %d\n",i,cpuConstraints[i].m_bodyAPtrAndSignBit,cpuConstraints[i].m_bodyBPtrAndSignBit, cpuConstraints[i].m_batchIdx);
}
}
m_debugOutput++;
}
}
//.........这里部分代码省略.........
开发者ID:avilleret,项目名称:bullet3,代码行数:101,代码来源:b3GpuPgsContactSolver.cpp
注:本文中的cl_mem类示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论