расширение Python c / демон opencl - PullRequest
0 голосов
/ 22 февраля 2012

Я работаю над проверкой концепции базы данных в памяти. Я знаю о таких вещах, как redis и люблю такие вещи, как пересекающиеся множества, но этого недостаточно. Я хочу узнать, как реализовать сервис, подобный базе данных Parstream или решениям drawtoscale. И поэтому мне нравится иметь демона, который хранит вещи в памяти. Я сделал прототип с pyro, который делает то, что должен: генерирует случайный индекс растрового изображения и принимает битовую маску в качестве входных данных от pyro-клиента и возвращает все первичные ключи, которые соответствуют растровой маске. Но итерации по индексу слишком медленны на несколько величин, что очевидно, поскольку это python. Я хотел бы использовать расширение C, которое выполняет сканирование индекса. Поэтому индекс растрового изображения должен храниться в памяти внутри расширения c. Следующим шагом было бы сохранить те же данные в оперативной памяти gpu внутри моего gpu.

Не имея опыта написания расширений c и pyOpenCL, у меня вопрос такой: могу ли я хранить данные внутри расширения C и использовать python (pyro daeomon или, возможно, даже flask / tornado) только для получения и возврата запросов, не копируя весь индекс растрового изображения все время?

С уважением Christian

1 Ответ

0 голосов
/ 29 февраля 2012

Да, расширения C могут иметь выделенные внутренние структуры, но при необходимости обязательно уничтожайте ваши данные.Вы также можете написать свой код в виде C / C ++ DLL и использовать расширение Python ctypes для прямого доступа к функциям C и передачи им переменных C (ints, char * и т. Д.).

...