Лучший способ объявить LUT в OpenCL (Intel FPGA)

Мне нужно объявить три LUT в ядре OpenCL, поэтому:

Каков оптимальный способ объявить LUT в Intel OpenCL FPGA?

Я видел примеры по этому поводу, но в примерах использовалась структура switch/case. Я думаю, что лучший способ — объявить массив для каждой LUT, как в следующем примере (пример взят из: как объявить постоянный массив векторов float2?):

__constant float2 foo[2] = {1.0f, 0.0f};

person Diego Ruiz    schedule 21.01.2021    source источник


Ответы (1)


Вам нужно только switch/case, если вы не можете обращаться к элементам в массиве LUT напрямую, т. е. если ваши позиции поиска не следуют за 0,1,2,...,N. Более элегантно реализовать LUT в виде массива и выполнять прямую адресацию с помощью foo[position];. Если LUT достаточно мал и вам нужен только в одном месте, вы можете разместить его в private области памяти внутри ядра. Если LUT больше (более нескольких сотен записей), вам нужно отвлечься на constant области памяти; доступ к элементам остается идентичным.

person ProjectPhysX    schedule 21.01.2021