- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
几个 clGet*Info OpenCL 函数允许 (a) 获取所需信息的大小,或 (b) 信息本身。这在某些情况下是必需的,例如获取设备的名称:
char* name;
size_t size_of_name;
clGetDeviceInfo(device, CL_DEVICE_NAME, 0, NULL, &size_of_name);
name = (char*) malloc(size_of_name);
clGetDeviceInfo(device, CL_DEVICE_NAME, size_of_name, name, NULL);
所有 clGet*Info OpenCL 函数都遵循此模式。但是,我发现这对 MacOSX 中的 clGetEventProfilingInfo() 不起作用。当我尝试获取尺寸时,例如:
clGetEventProfilingInfo(evt, CL_PROFILING_COMMAND_START, 0, NULL, &info_size);
我得到一个错误 -30 (CL_INVALID_VALUE),尽管实现在 info_size 变量中返回了 8 个字节。这是此行为的一个完整的小示例:
#include <stdio.h>
#if defined(__APPLE__) || defined(__MACOSX)
#include <OpenCL/OpenCL.h>
#else
#include <CL/opencl.h>
#endif
int main(int argc, const char * argv[])
{
cl_platform_id platf;
cl_device_id dev;
cl_int status;
cl_uint a_buffer[1024];
cl_mem buf_dev = NULL;
cl_command_queue cq = NULL;
cl_event evt = NULL;
cl_context ctx = NULL;
cl_ulong t_start, t_end;
size_t info_size;
for (int i = 0; i < 1024; i++) a_buffer[i] = (i * 7) % 100;
status = clGetPlatformIDs(1, &platf, NULL);
if (status) { printf("%d\n", status); exit(-1);}
status = clGetDeviceIDs(platf, CL_DEVICE_TYPE_ALL, 1, &dev, NULL);
if (status) { printf("%d\n", status); exit(-1);}
ctx = clCreateContext(NULL, 1, &dev, NULL, NULL, &status);
if (status) { printf("%d\n", status); exit(-1);}
cq = clCreateCommandQueue(ctx, dev, CL_QUEUE_PROFILING_ENABLE, &status);
if (status) { printf("%d\n", status); exit(-1);}
buf_dev = clCreateBuffer(ctx, CL_MEM_READ_WRITE, 1024*sizeof(cl_uint),
NULL, &status);
if (status) { printf("%d\n", status); exit(-1);}
status = clEnqueueWriteBuffer(cq, buf_dev, CL_TRUE, 0,
1024*sizeof(cl_uint), a_buffer, 0, NULL, &evt);
if (status) { printf("%d\n", status); exit(-1);}
status = clFinish(cq);
if (status) { printf("%d\n", status); exit(-1);}
status = clGetEventProfilingInfo(evt, CL_PROFILING_COMMAND_START, 0, NULL, &info_size);
if (status) { printf("%d\n", status); exit(-1);}
status = clGetEventProfilingInfo(evt, CL_PROFILING_COMMAND_START, info_size, &t_start, NULL);
if (status) { printf("%d\n", status); exit(-1);}
status = clGetEventProfilingInfo(evt, CL_PROFILING_COMMAND_END, 0, NULL, &info_size);
if (status) { printf("%d\n", status); exit(-1);}
status = clGetEventProfilingInfo(evt, CL_PROFILING_COMMAND_END, info_size, &t_end, NULL);
if (status) { printf("%d\n", status); exit(-1);}
printf("Total time (ns): %lu\n", (unsigned long) (t_end - t_start));
clReleaseEvent(evt);
clReleaseMemObject(buf_dev);
clReleaseCommandQueue(cq);
clReleaseContext(ctx);
return 0;
}
它在具有多种不同 OpenCL 实现的 Linux 和 Windows 中运行良好。在 MacOSX 中,我收到无效值错误。
我知道 clGetEventProfilingInfo() 函数总是返回大小为 cl_ulong 的信息,但是我以自动方式执行此操作,因此总是在之前请求大小信息以便为其分配内存。
提前致谢。
最佳答案
我已经在我自己的 OS X 系统上运行了您的示例代码并获得了相同的结果。有趣的是,info_size
输出变量填充了正确的值(8 字节),尽管产生了错误代码。
这绝对是一个错误 - 规范指出 clGetEventProfilingInfo
应该只为 param_value_size
返回 CL_INVALID_VALUE
如果 param_value
不是 NULL
(正如您指出的,与所有其他 clGet*Info
函数相同)。
您可以在此处向 Apple 报告此类错误: https://developer.apple.com/bug-reporting/
关于MacOSX 中的 clGetEventProfilingInfo() 错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26145603/
我正在使用 C++11 线程构建一个应用程序,但我似乎无法让它在 MacOSX 10.9 上与 clang++ 一起工作。这是我能找到的导致问题的最简单示例: #include #include
我无法弄清楚为什么我的二进制文件无法加载。它是由MATLAB加载的dylib(MEX文件),并链接到位于不同位置的许多dylib。 MATLAB告诉我它无法加载MEX文件,但是我无法弄清它找不到哪个依
我正在尝试让我的程序自动关联要由它打开的某些文件扩展名,但我不确定如何在 MacOSX 中执行此操作。我不是在问如何将程序与 GUI 中的文件扩展名相关联,我希望能够将它编程到我的程序中。 最佳答案
我的应用程序通过我的 mac 上的 nginx 在本地主机端口 80 上运行了很长一段时间。最近我做了一些软件更新,并试图在不同的端口上运行其他应用程序,现在我无法在 localhost:80 上运行
我想用默认的邮件客户端创建一个新邮件并自动附加一个文件。 创建新邮件到 dummy@somewhere.com与主题 foo和 body bar ,我可以执行以下操作: open "mailto:du
我正在使用 MacOS Mojave 版本 10.14.16,我正在尝试安装 http://www.rpl2.net/index.php (一种使用反向波兰表示法的编程语言,可在某些 HP 计算器(如
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 7年前关闭。 Improve thi
我正在尝试为 OS X 构建一个基本的动态库,它只显示一个用于打开文件的对话框。我的代码看起来像这样: NSOpenPanel * dlg = [NSOpenPanel openPanel]; ...
通过应用程序 Utilities/Console.app,我可以看到应用程序的控制台输出。 有没有办法从另一个应用程序访问此日志? 更具体地说:我正在为我的应用程序编写一个崩溃处理程序,我希望它将控制
我最近使用页面 https://github.com/ingenuitas/simplecv 中的 osX-Lion 设置说明安装了 SimpleCV 然后我在终端中输入 python,当我尝试以下操
问题 MacOSX 附带的字典存储在 /Library/Dictionaries 中。我想解析它们以编程方式获取字典结果(通过终端、AppleScript 或 Automator)。这些词典是 Mac
我正在尝试创建一个静态库并将其链接到 MacOS X(几个版本)上: 文件 foo.c : char foo[111]; 文件 bar.c : #include extern char foo[];
我有一个名为 youtube-dl 的命令..但不知道它安装在哪里..我可以从 shell 运行它..我如何找到它的安装位置? youtube-dl 什么也没说.. 最佳答案 Bash 有一个命令可以
我有 macosx,我为 mail.app 创建了一个 html 签名,但是当我发送电子邮件时,有人使用 Windows 属性 font-family 选择它时不起作用。 当我从 MAC 发送到 MA
几个 clGet*Info OpenCL 函数允许 (a) 获取所需信息的大小,或 (b) 信息本身。这在某些情况下是必需的,例如获取设备的名称: char* name; size_t size_of
我在使用 python3 在我的 macosx10.7 上设置 pycharm ide 时遇到了问题。 我已经搜索了所有可用的资源并尝试了数百种方法,此时我必须承认自己的无能并通过此 channel
Environment.OSVersion.Platform 返回一个 PlatformID ( Info: MSDN PlatformID )。 此 PlatformID 的值也可以是“Unix”或
我正在尝试在 Maverick 10.9 的命令行上编译一个项目。该项目在 Linux 上完美编译。显然,MacOSX 上的 ctime 似乎存在问题。错误是 $ make Compiling src
在 Netbeans 使用的 Java 桌面应用程序模板中,菜单栏是使用 JMenuBar 和 JMenuItems 创建的。 我怎样才能让那个栏显示在顶部,菜单栏在 MacOSX 中显示,而不是像在
我正在制作一个自定义窗口(带有 NSBorderlessWindowMask 的 NSWindow)到目前为止,我已经能够处理拖动、调整大小、cmd+单击,甚至在允许的情况下通过双击进行小型化(请参阅
我是一名优秀的程序员,十分优秀!