Мое приложение состоит из двух компонентов, работающих на одном компьютере :
1) Тонкий Java-модуль, который обрабатываетпростые задачи работают как устойчивость БД, обработка запросов ... и т. д.
2) Модуль C ++, который выполняет тяжелые вычисления с использованием OpenCV и CUDA
Скажем, оба компонента запускаются независимо.
Шаг 1: метод init () Java Layer вызывает метод init () модуля C ++, который будет считывать тысячи изображений из S3, выполнять некоторую обработку изображений и сохранятьрезультаты в GPU memory.init () вызывается только один раз, и эти данные остаются неизменными в памяти GPU.
Шаг 2: Последовательные вызовы calc () на уровне Java вызывают calc () метод в модуле C ++, который выполняет некоторую обработку с использованием переданных аргументов, используя данные в памяти графического процессора, и результат отправляется на уровень Java.
Мой вопрос заключается в том, как достичь этого IPC между процессом Java и C ++ с меньшими издержками?
Один очевидный способ - использовать TCP-сокеты (возможно, использовать GRPC)
Можно ли использовать JNI (или SWIG) для такого типа связи IPC?