было бы интересно посмотреть на чей либо реальный опыт с PDL
Недавно переписывал питоновскую утилиту для работы c GAN-сеткой с numpy на PDL. Мне понравилось — и по скороссти, и по ресурсоёмкости. Когда раскладывал вектора в обычные перловые массивы — оно выжирало все 32 Гб памяти моментально, а в PDL скромненько так 3 Гб съел (при том, что там не сильно оптимально наполнение было сделано), и быстро всё переварил
Недавно переписывал питоновскую утилиту для работы c GAN-сеткой с numpy на PDL. Мне понравилось — и по скороссти, и по ресурсоёмкости. Когда раскладывал вектора в обычные перловые массивы — оно выжирало все 32 Гб памяти моментально, а в PDL скромненько так 3 Гб съел (при том, что там не сильно оптимально наполнение было сделано), и быстро всё переварил
Я не бенчмаркал, это чисто pet project, ну и интересно было с PDL поиграться. Код там очень простой, буквально несколько операций надо большими матрицами
Это нормализация двух пространств и поиск ближайшего соответствия (там очень мало PDL-кода, хотя он очень много делает в пяти строчках, а основная лапша — это параллелизация)
Вот здесь я не придумал, как грузить матрицу целиком. Оно делает перловый массив PDL-векторов и потом делает из этого массива векторов PDL-матрицу при помощи cat(). Это явный оверхед по памяти в два раза, но у меня было мало времени, чтоб с этим разбираться, и я сходу не придумал, как делать аналог push в матрицу (потом уже дошло, что slice() возвращает lvalue и можно этим воспользоваться, но оставил так)