Ich habe diesen Code, für den ich schon vor einiger Zeit etwas gepostet habe.
Heute habe ich meinen Kernel mit einer typedef-Struktur in einem kleinen Testprogramm laufen lassen, aber clEnqueueNDRangeKernel
gibt einen ungültigen Arbeitsgruppenseitenfehler aus. Dies kann laut der khronos webiste 3 Ursachen haben.
NULL
ist. Meine lokale Arbeitsgröße ist nicht NULL
, es ist 128. Ich habe das Internet für einige Stunden durchsucht, und die meisten Lösungen, die ich gefunden habe, beziehen sich auf clGetKernelWorkGroupInfo
für die maximale lokale Arbeitsgröße. Wenn ich das mache, meldet es auch 1024. Ich habe jetzt wirklich keine Optionen mehr, kann mir jemand helfen? :)
Von Ihrem Pastebin-Link sehe ich:
%Vor%Das bedeutet, dass Sie versuchen, Ihren Kernel mit einer globalen Größe von 16 und einer lokalen Größe von 128 in die Warteschlange zu stellen. Das ist fast sicher nicht das, was Sie wollen. Denken Sie daran, globale Größe ist die Gesamtzahl der Arbeitselemente, die Sie ausführen möchten, und lokale Größe ist die Größe jeder Arbeitsgruppe. Wenn Sie beispielsweise eine globale Größe von 1024 x 1024 und eine lokale Größe von 16 x 16 haben, verfügen Sie über 4096 Arbeitsgruppen mit jeweils 256 Arbeitsaufgaben. Dies kann oder kann nicht gültig sein, abhängig von Ihrem Computer-Gerät.
Im Hinblick auf die Übergabe einer lokalen NULL-Größe: Die CL-Spezifikation besagt, dass die CL-Implementierung was auch immer sie möchte als lokale Arbeitsgruppengröße auswählen kann. Idealerweise wird es versuchen, etwas Cleveres für Sie zu tun, aber Sie haben keine Garantien.
Tags und Links opencl