У меня все еще была проблема с кодом, где рабочие узлы регистрируются, только если eks был установлен только для общедоступных подсетей.
module "eks" {
subnets = ["${module.vpc.public_subnets}"]
}
Я не хотел, чтобы мои работники были в общедоступных подсетях. Я изменил
module "eks" {
subnets = ["${module.vpc.private_subnets}"]
}
module "vpc" {
single_nat_gateway = false
}
kubectl получить узлы
NAME STATUS ROLES AGE VERSION
ip-10-0-1-247.us-east-2.compute.internal Ready <none> 17m v1.11.5
ip-10-0-1-75.us-east-2.compute.internal Ready <none> 17m v1.11.5
ip-10-0-2-225.us-east-2.compute.internal Ready <none> 17m v1.11.5
ip-10-0-3-210.us-east-2.compute.internal Ready <none> 17m v1.11.5
Взгляните на Intel IPP (Integrated Performance Primitives) (ссылка на Wiki лучше, чем у Intel ...), она также работает на AMD и имеет функции изменения размера образы (билинейные, ближайший сосед и т. д.) и работает в Linux и Windows.
Это не бесплатно (но это не сломает банк), но это самый быстрый способ, который вы можете найти.
Если IPP выполняет то, что вам нужно (например, функция Resize в разделе 12), то я сомневаюсь, что вы найдете значительно более быстрый код x86 где-нибудь еще. , Имейте в виду, что он может вернуться к более медленным «эталонным реализациям» при работе на процессорах AMD.
Если процессор не соответствует вашим требованиям к производительности, вы можете рассмотреть возможность изменения размера на графическом процессоре с помощью OpenGL (простейшая реализация с использованием наложение текстуры выиграет от аппаратных интерполяторов, для более сложной фильтрации используйте код шейдера GLSL). Способность графического процессора делать такие вещи примерно в сто раз быстрее, чем процессор (плюс-минус ноль), должна быть сопоставлена с относительно медленной передачей данных на карту и с карты (обычно гигабайт или два в секунду максимум).
Если вы ищете открытый исходный код, как насчет FreeImage? Для рекламы я использую Snowbound. Оба они довольно быстрые и поддерживают множество различных форматов изображений и алгоритмов изменения размера.
@Chris Becke's comment:
"think for just a moment about that statement. What part of doing it in a single (complicated) step is going to make it any faster? The image decoding routines still need to decode every pixel in order for the filter routines to filter them."
That isn't always the case. For example, when decoding a JPEG you can ask the JPEG library to give you a 1/2, 1/4, 1/8 size image (or something like that; it's a while since I've looked in detail) which it can do without having to decode the extra detail at all, due to the way JPEG works. It can be much quicker than a full decode + scale.
(Obviously you may need to scale a bit afterwards if the smaller image isn't the exact size you want.)
(Sorry I can only post this reply as a comment due to no reputaton. First time I've tried to post anything here. If someone wants to repost this or something similar as a comment and delete my answer, feel free!)
Хорошо, я нашел другой алгоритм: псевдоним метода (также упоминается в этом ответе ). По сути, он создает такое разделение вероятностного пространства:
n
разделов, все одинаковой ширины r
st nr = m
. . 12113] каждый раздел содержит два слова в некотором соотношении (которое сохраняется вместе с разделом). w i
, f i = ∑ разделы тс. tw i ∈ t r × ratio (t, w i )
Поскольку все разделы имеют одинаковый размер, выбор того, какой из разделов, может выполняться в постоянной работе (выберите случайный индекс из 0 ... n-1
), и коэффициент раздела затем можно использовать для выбора того, какое слово будет использоваться в постоянной работе (сравните число в формате pRNG с соотношением между двумя слова). Таким образом, это означает, что выбор p
может быть выполнен в O (p)
работе с таким разделом.
Причина, по которой такое разделение существует, состоит в том, что существует слово w i
st f i
w i '
st f i '> r
, поскольку r - это среднее значение частот.
Учитывая такую пару w i
и w i '
, мы можем заменить их псевдословом w' i
частоты f ' i = r
(что представляет w i
с вероятностью f i / r
и w i '
с вероятностью 1 - f i / r
) и новым словом w' i '
настроенной частоты f' i ' = f i' - (r - f i )
соответственно. Средняя частота всех слов по-прежнему будет r, и по-прежнему действует правило из предыдущего абзаца. Поскольку псевдослово имеет частоту r и состоит из двух слов с частотой r, мы знаем, что если мы итерируем этот процесс,
Это действительно работает, если количество разделов q> n
(вам просто нужно доказать это по-другому). Если вы хотите убедиться, что r является целым, и вы не можете легко найти множитель q
из m
st q> n
, вы можете заполнить все частоты в n
, поэтому f ' i = nf i
, что обновляет m' = mn
и устанавливает r '= m
, когда q = n
.
В любом случае, этот алгоритм требует только O (n + p)
работы,
Взгляните на VIPS. Это самый быстрый, который я нашел на данный момент.