问题:需要什么标题和驱动程序,我将在哪里使用gcc / g ++编译在Ubuntu上打开CL? 信息:一段时间以来,我一直在试图找出如何安装打开CL在我的桌面上,如果可能的话,我的上网本。 有几个教程在那里,我已经尝试,但似乎没有工作。 而且,他们都只是一步一步地解释为什么,甚至更糟糕的是他们是特定于IDE的,所以你必须学习IDE才能做任何事情。 所以我在我的台式机上安装了NVIDA GX465,在我的上网本中安装了集成显卡。 我的优先级当然是我的桌面,上网本只是一个方便的开发目的(都运行Ubuntu的11.04,并将运行11.10一出来)。 有人可以为我说明究竟需要什么来获得它,所以我实际上可以编译代码并运行它。 如果你也可以解释一下每件作品是什么,那么我可以理解它的重要性。
我即将编写一个堆栈软件。 因此,我想将一个或多个video文件的帧提取到opencl缓冲区,然后使用opencl kernel处理它们。 但我不知道如何加载video帧,因为我从来没有使用过video。 当我使用opencl时,我的主要焦点是显然的高性能 ! 我知道有像ffmpeg或opencv等库,但由于我没有进入它,我不知道最适合我的需求。 那么你能给我一些build议,哪个库/函数使用最好(最快)与opencl结合使用? 我还没有find有用的东西呢。 我可以从哪里开始? (就像一个简短的ducumentation或教程将是善良的) 提前致谢! 我在Linux下工作(跨平台是不是需要)与NVIDIA卡,我的(首选)编程语言是c++ 。 我更喜欢h264作为video格式,但avi , avi , mp4 ,…也是可能的。
前段时间我用OpenCL写了简单的boids模拟(是学校作业),使用C#,Cloo for OpenCL和OpenTK for OpenGL输出。 我在Windows7上用AMD的CPU执行OpenCL和朋友的NVidia进行了testing。 现在我在Linux上试了一下(Ubuntu 12.04)。 我安装了AMD应用SDK和英特尔SDK。 它编译好了,参考CPU实现工作正常,graphics输出。 但是,当我尝试运行OpenCL版本时,它运行了大约1秒(显示什么看起来像在OpenGL中有效的输出),然后被SIGXCPU杀死。 试图谷歌一些已知的问题,但没有发现。 所以我试图捕捉并忽略这个信号,但每次我尝试,程序都挂起。 当我设置单声道来捕捉一些不同的信号(如SIGPIPE)时,它运行正常(当opencl时减去这个杀死)。 在单声道,我试过Mono.UnixSignal中所述的常见问题解答 Mono.Unix.Native.Stdlib.SetSignalAction ( Mono.Unix.Native.Signum.SIGXCPU, Mono.Unix.Native.SignalAction.Ignore); 那么不挂,但也不帮助: Mono.Unix.Native.Stdlib.SetSignalAction ( Mono.Unix.Native.Signum.SIGXCPU, Mono.Unix.Native.SignalAction.Error); 乃至 ignore (0); Mono.Unix.Native.Stdlib.signal(Mono.Unix.Native.Signum.SIGXCPU, new Mono.Unix.Native.SignalHandler (ignore)); 同 static void ignore(int signal) { } 即使当我从主体中删除其他所有东西时,它仍然会在“触摸”那个信号之后挂起。 更奇怪的一件事: Mono.Unix.Native.Stdlib.SetSignalAction ( Mono.Unix.Native.Signum.SIGXCPU, Mono.Unix.Native.SignalAction.Default); 在Application.EnableVisualStyles()后面用SIGXCPU杀死应用程序。 当我把它设置之前,这次甚至没有碰到OpenCL。 有没有我在单音中错过的东西? 它在内部的某个地方是否使用了这个信号,是否会影响到OpenCl?
我有这个职位上完全相同的问题: OpenCL简单的“Hello World!” 程序编译正确,但执行时吐出垃圾 但我实际上已经安装了Nvidia驱动程序。 我想得到这个程序的工作: http : //www.fixstars.com/en/opencl/book/OpenCLProgrammingBook/first-opencl-program/ 所以我得到了来自https://www.khronos.org/的头文件 我编译它是这样的: gcc -I / usr / include / hello.c -L / usr / lib64 -lOpenCL 这是输出: hello.c:在函数'main'中: hello.c:56:1:警告:不推荐使用“clCreateCommandQueue”(在/usr/include/CL/cl.h:1359声明)[-Wdeprecated-declarations] hello.c:75:1:警告:不推荐使用“clEnqueueTask”(在/usr/include/CL/cl.h:1373声明)[-Wdeprecated-declarations] 如果我运行程序,我会得到: – 这是我的设置: OpenSuse 12.3 通过yast安装的Nvidia驱动程序: nvidia-computeG03 340.65-32.1 glxinfo |的输出 grep -i供应商: 服务器glx供应商string:NVIDIA公司客户端glx供应商string:NVIDIA公司OpenGL供应商string:NVIDIA公司 输出lspci -nnk | grep -i vga -A3 03:00.0 VGA兼容控制器:NVIDIA公司GF119 [Quadro NVS 310] [10de:107d](rev […]
我试图在Linux上安装OpenCL(AMD),但是我被卡在最后一步(安装ICD) 看起来好像ICD已经被安装在/ etc / OpenCL / vendor上,但是我没有对计算机的root权限。 有没有办法让OpenCL在没有安装ICD的情况下工作? (或者通过一个环境variables来添加ICD文件的searchpath?) 当ICD文件path被硬编码时,对于像我们这样的人来说,这似乎真的很不方便。
在最终设法让我的代码与OpenCL编译后,我似乎无法得到输出二进制运行! 这是在我的Linux笔记本电脑上运行Kubuntu 13.10 x64 我得到的错误是(打印从cl ::错误): ERROR: clGetPlatformIDs -1001 我发现这个post,但似乎没有一个明确的解决scheme。 我join了自己的video组,但这似乎并不奏效。 关于ICDconfiguration文件…我不知道我需要做什么 – 不应该包含在cuda工具包中吗? 如果没有,我可以在哪里下载? 编辑 :看来我有一个ICD文件在我的系统下/usr/share/nvidia-331/nvidia.icd。 它包含以下文本: libnvidia-opencl.so.1 我的系统中唯一类似于此的文件是: /usr/lib/nvidia-331/libnvidia-opencl.so.331.20 我的ICD档案有问题吗? 有谁知道一个方法来解决它?
我只是试图让自己熟悉OpenCL,但当互联网上的每个人都在谈论下载一个Vendor特定的OpenCL SDK时,我完全糊涂了。 为什么我需要这个? 我对使用OpenCL的理解如下: 下载Khronos OpenCLregistry中由Kronos维护的OpenCL头文件,并将其提供给您的编译器。 编译您的代码并链接到OpenCL.dll。 之所以混淆我,是因为我认为OpenCL应该抽象出供应商特定的实现。 如果我现在下载一个供应商特定的SDK是不是这个优势被破坏? 有人可以请清楚吗?
我在OpenCL中发现了host-client float标准的一个问题。 问题是在x86中编译时,由Opencl计算的浮点数与我的visual studio 2010编译器不在同一个浮点数限制内。 但是,当在x64编译它们是在相同的限制。 我知道它必须是, http://www.viva64.com/en/b/0074/ 我在testing过程中使用的源代码是: http : //www.codeproject.com/Articles/110685/Part-1-OpenCL-Portable-Parallelism当我在x86中运行程序时,它会给我202个相等的数字,内核和C ++程序占用了1269760个数字的平方。 然而在64位构build中,1269760个数字是正确的,换句话说是100%。 此外,我发现opencl和x86 c ++的计算结果之间的误差是5.5385384e-014,这个数字是一个非常小的部分,但是不足够小,这个数字的小数部分是2.92212543378266922312416e-19。 这是因为,错误需要比epsilon小,以便程序可以将这两个数字识别为一个单一的相等数字。 当然,通常情况下,人们永远不会比较本地的花车,但是很高兴知道浮动限制是不同的。 是的,我试图设置flt:静态,但得到了同样的错误。 所以我想对这种行为进行一些解释。 在此先感谢所有的答案。
使用Mingw和Nvidia SDK可以编译OpenCL吗? 我知道,它没有正式的支持,但没有任何意义。 不是作为静态链接库提供的库吗? 我的意思是一旦用任何可能的编译器进行编译,并成功链接,那么问题是什么? 我设法编译并成功地将我的代码链接到Nvidia SDK提供的OpenCL库,但是可执行程序在clGetPlatformIDs这是我的代码中第一个OpenCL调用)抛出Segmentation Fault。 这是我的编译命令 x86_64-w64-mingw32-g++ -std=c++11 File.cpp \ -L"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.0\lib\x64" \ -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.0\include" \ -gcoff -lOpenCL -lkernel32 -luser32 -lgdi32 -lwinspool -lcomdlg32 -ladvapi32 \ -lshell32 -lole32 -loleaut32 \ -luuid -lodbc32 -lodbccp32 -luser32 -lgdi32 -lmingwex -m64 \ -DWIN32 -D_DEBUG -D_CONSOLE 请注意,这些库是从示例OpenCL代码的.sln文件中获取的。 我试过这些库的各种组合,似乎没有任何工作。 还有一种方法可以使用Mingw进行编译并使用别的链接进行链接? 我不确定别的可能是什么。
我在nVidia Quattro 6000设备上运行一个长期运行的内核。 内核涉及一个有数万次迭代的循环。 当我运行内核,2秒后屏幕变黑,Windows重新启动GPU驱动程序,并且clFinish返回一个错误。 所以我给了自己一张第二张显示卡,现在2秒超时不适用。 内核计算了50秒,然后出现了这些错误(以“GPU ERROR”为前缀的行是由clCreateContext错误callback打印的错误): GPU ERROR: CL_OUT_OF_RESOURCES error executing clFinish on Quadro 6000 (Device 0). Computation finished, took 50 seconds (00:00:50) GPU ERROR: CL_OUT_OF_RESOURCES error waiting for idle on Quadro 6000 (Device 0). clFinish() returned CL_OUT_OF_RESOURCES GPU ERROR: CL_OUT_OF_RESOURCES error waiting for idle on Quadro 6000 (Device 0). 我能做些什么呢? 为了简单起见,这是这个内核的简化版本。 实际上,它在曲面上执行整合,这就是为什么我需要一个循环 […]