Если он не слишком большой, попробуйте определить глобально фильтр в файле .cl.
Там вы можете попытаться разместить его либо в __ константе , либо __ локальном пространстве и сравнить, какое из них быстрее. Но не все SDK поддерживают глобальные переменные в адресном пространстве __local (я смотрю на вас ATI).
Если вы все еще хотите передать фильтр в качестве аргумента ядра, рассмотрите возможность вызова его SetKernelArg (0, ...) только один раз . Нет необходимости вызывать SetKernelArg () 1000 раз, если значение или индекс аргумента ядра не изменяются. Хотя это может не оказать ощутимого влияния на производительность, оно все же будет чище.