草庐IT

c++ - clEnqueueNDRangeKernel 触发 CL_INVALID_MEM_OBJECT (-38)

我正在为OpenCL使用C++绑定(bind),当我的一个内核入队时,我得到一个cl::Error,它说-38(CL_INVALID_MEM_OBJECT)forclEnqueueNDRangeKernel.此错误未列为clEnqueueNDRangeKernel的可能错误之一.通知功能给我以下输出:CL_INVALID_MEM_OBJECTerrorexecutingCL_COMMAND_NDRANGE_KERNELonGeForceGTX560(Device0).我还没有找到展示这种行为的最小示例。在调用这个函数时,什么会导致这种错误?使用谷歌我只找到了这个answer然而。它声明

c++ - cl.exe 在通过 MSBuild 调用时无限期挂起

我正在尝试在我的(主要是C++)项目上运行MSBuild(想象一个非常庞大的代码库)。VisualStudio2015是有问题的工具集(Windows7SP1和VS2015Update2)。即使使用/m:1(并因此强制它只使用一个处理器),我发现一些完全随机的项目在编译阶段不断挂起。例如,发生此问题时,如果我查看有问题的项目及其包含的文件,我可以看到已为每个翻译单元成功创建.obj文件。然而,系统永远不会进入链接阶段。我看到两个cl.exe实例闲置在任务管理器上,什么也不做。也许在30分钟左右之后,当我杀死其中一个实例时,我得到类似的东西:cl:CommandlineerrorD804

c++ - Visual Studio 2017 - 错误 MSB6006 : "CL.exe" exited with code 2

使用VisualStudio2017构建项目时遇到此错误:errorMSB6006:"CL.exe"exitedwithcode2.这是我的代码:intmain(){constintWIDTH=800;constintHEIGHT=600;Bitmapbitmap(WIDTH,HEIGHT);unique_ptrhistogram(newint[Mandelbrot::MAX_ITERATIONS+1]{0});unique_ptrfractal(newint[WIDTH*HEIGHT]{0});//intfractal[WIDTH*HEIGHT]{0};for(inty=0;y问题似

c++ - 从 cmd 运行 cl.exe

我已经使用C++安装了VisualStudioCommunity2017。我想从cmd使用它的编译器。我可以从VS2017开发人员命令提示符使用它,但我无法从普通cmd使用它。我尝试通过右键单击->以管理员身份运行来运行vsvarsall.exe。但是没有任何反应。好像我必须手动设置环境变量。每当我尝试运行命令时clhello.c它说hello.c(1):fatalerrorC1034:stdio.h:noincludepathset 最佳答案 VisualStudio包含一个为您准备环境的批处理文件(实际上,开发人员命令提示符在后

c++ - cl::vector 与 std::vector:不同的迭代器行为

编辑:按照PlasmaHH的建议添加了带有内存位置的调试输出。我不明白cl::vector在OpenCL的C++绑定(bind)中的不同行为。考虑以下代码:标题Top.hpp:classTop{public:voidsetBool(boolb);boolgetBool();private:boolstatus;};来源Top.cpp:#include"Top.hpp"voidTop::setBool(boolb){std::cout使用上面的:#define__NO_STD_VECTOR#include#include"CL/cl.hpp"#include"Top.hpp"usingn

c++ - 设置 cl.exe 的输出路径

我正在使用命令行参数Fo,命令行是这样的:file1.c/ZI/nologo/W3/WX-/Od/Oy-/D"WIN32"/D"_DEBUG"/D"_CONSOLE"/D"_UNICODE"/D"UNICODE"/Gm/EHsc/RTC1/GS/fp:precise/Zc:wchar_t/Zc:forScope/Gd/analyze-/errorReport:queue/bigobj/FdDebug\vc100.pdb/FoDebug\/FaDebug\但有些文件仍然会在Debug文件夹之外生成(exe、ilk、pdb)我做错了什么? 最佳答案

c++ - OpenCl 代码在一台机器上工作,但我在另一台机器上得到 CL_INVALID_KERNEL_ARGS

我有以下代码,它在一台机器上运行良好,但是当我尝试在另一台配备更好显卡的机器上运行它时,我遇到了错误:global[0]=512;global[1]=512;local[0]=16;local[1]=16;ciErrNum=clEnqueueNDRangeKernel(commandQueue,myKernel,2,NULL,global,local,0,NULL,&event);错误:Error@clEnqueueNDRangeKernel:CL_INVALID_KERNEL_ARGSError@clWaitForEvents:CL_INVALID_KERNEL_ARGS知道问题出在

c++ - 带有 C++ 包装器的 OpenCL - 如何将 cl::CommandQueue 转换为 cl_command_queue?

我将OpenCL与CL/cl.hppc++​​包装器一起使用。所以我有C++对象,例如cl::CommandQueue而不是cl_command_queue。我还想使用AMD的BLAS库clAmdBlas。那里的函数需要一个cl_command_queue作为它们的参数之一。如何从cl::CommandQueue获取cl_command_queue? 最佳答案 要获取cl_command_queue对象,您只需使用()运算符:cl::CommandQueuecppQueue;...cl_command_queuequeue=cppQ

c++ - 为什么我会收到 CL_MEM_OBJECT_ALLOCATION_FAILURE?

我在GPU上分配一个cl_mem缓冲区并对其进行处理,在超过一定尺寸之前效果很好。在那种情况下,分配本身会成功,但执行或复制不会。我确实想使用设备的内存来加快操作速度,所以我分配如下:buf=clCreateBuffer(cxGPUContext,CL_MEM_WRITE_ONLY,buf_size,NULL,&ciErrNum);现在我不明白的是大小限制。我正在复制大约16MB,但应该可以使用大约128MB(参见CL_DEVICE_MAX_MEM_ALLOC_SIZE)。为什么这些数字相差如此之大?这是oclDeviceQuery的一些摘录:CL_PLATFORM_NAME:NVID

c++ - Visual Studio 2017 找不到 cl.exe

我最近安装了VisualStudio2017,需要更改C++项目中的某些内容。但是当我尝试构建时,它说缺少cl.exe。在线提供的解决方案似乎都不起作用。我有一个cl.exe,但它位于此路径下:C:\ProgramFiles(x86)\MicrosoftVisualStudio\2017\Enterprise\VC\Tools\MSVC\14.10.25017\bin\HostX64\x64我也试过运行vcvars32.bat,但似乎没有任何改变。而且我已经安装了“使用C++进行桌面开发”。 最佳答案 我通过运行vcvars.bat