Windows Opencl clCreateBuffer()函数

14 篇文章 1 订阅
12 篇文章 0 订阅

Windows Opencl clCreateBuffer()函数

Creating Buffer Objects
函数原型

cl_mem    clCreateBuffer (cl_context context,
						  cl_mem_flags flags,
						  size_t size,
          				  void *host_ptr,
                   	 	  cl_int *errcode_ret) 

context 是用于创建缓冲区对象的有效OpenCL上下文。

flags是一个位字段,用于指定分配和使用信息,例如应该用于分配缓冲区对象的内存区域以及如何使用它。表5.3描述了标志的可能值:

cl_mem_flags描述
CL_MEM_READ_WRITE

这个标志指定内存对象将由内核读写。这是默认值。

CL_MEM_WRITE_ONLY

这个标志指定内存对象将被内核写入但不被读取。

从内核中使用CL_MEM_WRITE_ONLY创建的缓冲区或映像对象读取数据是未定义的。

CL_MEM_READ_ONLY

此标志指定内存对象在内核中使用时是只读内存对象。

写入在内核中使用CL_MEM_READ_ONLY创建的缓冲区或映像对象是未定义的。

CL_MEM_USE_HOST_PTR

此标志仅在host_ptr 不为空时有效。如果指定,则表示应用程序希望OpenCL实现使用host_ptr 引用的内存作为内存对象的存储位。

OpenCL实现允许在设备内存中缓存host_ptr 指向的缓冲区内容。在设备上执行内核时,可以使用此缓存副本。

对多个操作的 OpenCL 命令的结果

CL_MEM_ALLOC_HOST_PTR

此标志指定应用程序希望OpenCL实现从主机可访问内存分配内存。

CL_MEM_ALLOC_HOST_PTR和CL_MEM_USE_HOST_PTR是互斥的。

CL_MEM_COPY_HOST_PTR

此标志仅在host_ptr 不为空时有效。如果指定,则表示应用程序希望OpenCL实现为内存对象分配内存,并从host_ptr 引用的内存中复制数据。

CL_MEM_COPY_HOST_PTR和CL_MEM_USE_HOST_PTR是互斥的

CL_MEM_COPY_HOST_PTR可与CL_MEM_ALLOC_HOST_PTR一起使用,以初始化使用主机可访问(e.g. PCIe)内存分配的cl_mem对象的内容。

表5.3 支持的cl_mem_flags值列表

size 是要分配的缓冲区内存对象的大小(以字节为单位)。

host_ptr 是指向可能已由应用程序分配的缓冲区数据的指针。host_ptr 指向的缓冲区大小必须大于等于size 字节。

errcode_ret将返回适当的错误代码。如果errcode_ret为空,则不返回错误代码。

clCreateBuffer返回有效的非零缓冲区对象,如果成功创建缓冲区对象,则errcode_ret 设置为CL_SUCCESS。否则,它将返回一个NULL,并在errcode_ret 中返回以下错误值之一:

  1. CL_INVALID_CONTEXT 如果context 不是有效的上下文。
  2. CL_INVALID_VALUE 如果flags 中指定的值无效
  3. CL_INVALID_BUFFER_SIZE 如果size 为0或大于表4.3中为context 中所有设备指定的CL_DEVICE_MAX_MEM_ALLOC_size值。
  4. CL_INVALID_HOST_PTR 如果host_ptr为空且CL_MEM_USE_HOST_PTR 或CL_MEM_COPY_HOST_PTR设置在标志中,或者如果host_ptr不为NULL,但在flags 中未设置CL_MEM_COPY_HOST_PTR或CL_MEM_USE_HOST_PTR。
  5. CL_MEM_OBJECT_ALLOCATION_FAILURE 如果为缓冲区对象分配内存失败。
  6. CL_OUT_OF_HOST_MEMORY 如果在主机上分配OpenCL实现所需的资源失败。
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值