【发布时间】:2013-07-19 08:04:37
【问题描述】:
我正在研究 OpenCL 释放函数 ( clRelease(objectName) ),我很感兴趣的是没有释放平台(更具体地说,cl_platform_id)对象的函数。 有人知道原因吗?
【问题讨论】:
标签: opencl
我正在研究 OpenCL 释放函数 ( clRelease(objectName) ),我很感兴趣的是没有释放平台(更具体地说,cl_platform_id)对象的函数。 有人知道原因吗?
【问题讨论】:
标签: opencl
这是因为您使用常规 malloc 而不是 clCreateObjectName() 函数创建平台对象。所以你用普通的free 释放它们。我想是这样的,因为平台是主机资源。
请注意,设备对象也是如此。
编辑: 澄清一下,感谢@chippies 的评论:clGetPlatformIDs() 函数有两个用途。首先查询系统中可用的平台数量。其次,用您决定使用的实际平台来填充您为平台分配的内存空间。您将这些平台存储在您首先malloc 的内存空间中。因此,当您使用完这些平台后,您可以使用 free 您 malloc-ed 的内存来释放它们。
【讨论】:
malloc他们也不应该free他们AFAIK。