簡體   English   中英

OpenCl代碼在一台機器上工作,但我在另一台機器上獲得了CL_INVALID_KERNEL_ARGS

[英]OpenCl code works on a machine but I am getting CL_INVALID_KERNEL_ARGS on another

我有以下代碼,它在一台機器上運行良好,但是當我嘗試在另一台具有更好顯卡的機器上運行它時,我收到錯誤:

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_ARGS
Error @ clWaitForEvents: CL_INVALID_KERNEL_ARGS

不知道是什么問題?

你傳遞的緩沖區對象有多大? __constant參數是從單獨的內存空間分配的,而不是從全局內存中分配的,因此您可能已經耗盡了常量內存。

規范規定,在完整配置文件中,設備必須至少支持4個__constant參數,總大小為64kB。 在嵌入式配置文件中,它降至1kB。

您可以使用clGetDeviceInfo檢查CL_DEVICE_MAX_CONSTANT_BUFFER_SIZE來查詢可用的常量內存量。 您的設備很可能支持超過此最低要求的方式。

在大多數情況下,如果能夠使用常量緩沖區,則通常它比全局內存快得多。

將來您應該提供有關您的問題的更多信息。 因為如果錯誤是CL_INVALID_KERNEL_ARGS那么確實需要知道內核的參數是什么。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM