Я пытаюсь обдумать наиболее эффективный способ работы с массивами неопределенного размера в качестве выходных данных ядер RS. Я бы отправил индекс последнего соответствующего слота массива в выделении, но я узнал в ответ на мой предыдущий вопрос, нет хорошего способа передать глобальный код обратно в java после выполнения ядра. Я решил снова «уменьшить масштаб» процесса, что привело меня к шаблону ниже.
Например, предположим, что у нас есть входное распределение, содержащее структуру (или структуры), которая содержит два массива полярных координат; что-то вроде set_pair из ниже:
typedef struct polar_tag{
uint8_t angle;
uint32_t mag;
} polar;
typedef struct polar_set_tag{
uint8_t filled_slots;
polar coordinates[60];
} polar_set;
typedef struct set_pair_tag{
polar_set probe_set;
polar_set candidate_set;
} set_pair;
Мы хотим найти похожие пары координат между наборами, поэтому мы настраиваем ядро, чтобы решить, какие (если есть) полярные координаты похожи. Если они похожи, мы загружаем их в выходное распределение, которое выглядит примерно как «matching_set»:
typedef struct matching_pair_tag{
uint8_t probe_index;
uint8_t candidate_index;
} matching_pair;
typedef struct matching_set_tag{
matching_pair pairs[120];
uint8_t filled_slots;
} matching_set;
Является ли создание выделений с помощью таких инструкций, как «filled_slots», наиболее эффективным (или единственным) способом обработки такого неопределенного ввода-вывода с помощью RS, или есть лучший способ?