gpt4 book ai didi

ios - 在 iOS 上可用 OpenCL

转载 作者:IT王子 更新时间:2023-10-29 08:11:40 26 4
gpt4 key购买 nike

我在论坛上找到了这个帖子 Are either the IPad or IPhone capable of OpenCL?但是它很旧吗?此外,据我所知,OpenCL 可用于 iOS 的系统库,但不可用于公众。是否有这方面的更多信息或任何更新?

最佳答案

即使使用 OpenCL 作为私有(private)框架,在 iOS 上它也不会为您提供 GPU 的好处(或其他类似 DSP/FPGA,如果存在的话)。它只是为您提供了 arm 处理器上可用的多个内核。我运行了以下代码来验证 iOS 和 OS X 中可访问的 OpenCL 设备。

iOS 输出

ARM CPU Device

OS X 上的输出

Radeon HD 4670
Intel(R) Core(TM) i3 CPU 540 @ 3.07GHz

排除了错误检查的来源。使用可用的 OpenCL header ( 1 ) 并从 (/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.1.sdk/System/Library/PrivateFrameworks)

#include "OpenCL/cl.h"
#include <iostream>

cl_context_properties prop[] = { CL_CONTEXT_PLATFORM, 0, 0 };
//get num of platforms
cl_uint num;
cl_int err = clGetPlatformIDs(0, 0, &num);


//get each platform
cl_platform_id *platforms = new cl_platform_id[num];
err = clGetPlatformIDs(num, platforms, &num);

//create context for platform
prop[1] = (cl_context_properties) platforms[0];
cl_context context = clCreateContextFromType(prop, CL_DEVICE_TYPE_ALL, NULL, NULL, &err);


//get num devices
size_t numDevices=0;
clGetContextInfo(context, CL_CONTEXT_DEVICES, 0, NULL, &numDevices);
cl_device_id *devices = new cl_device_id[ numDevices ];

//get every device
clGetContextInfo(context, CL_CONTEXT_DEVICES, numDevices, devices, 0);

//get info of every device
for( int idx=0; idx < numDevices; ++idx) {

size_t bufSize=0;
clGetDeviceInfo(devices[idx], CL_DEVICE_NAME, 0, NULL, &bufSize);
if( bufSize > 0 ) {
char* devName = new char[ bufSize ];
clGetDeviceInfo(devices[idx], CL_DEVICE_NAME, bufSize, devName, 0);
std::cout << "Device Name: " << devName << '\n';
}
}

建议:截至目前,我们将需要使用 OpenGL(2)或 Accelerate 框架(3)。仍然不确定,出于什么原因/目的,OpenCL 被复制为 iPhone 上的私有(private)框架。

关于ios - 在 iOS 上可用 OpenCL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18847255/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com