Резьбовые порты в основном о параллелизм трубопроводов. При указании резьбовую порта на config
пункте оператора, вы сообщаете выполнения для выполнения этого оператора с другим потоком из потока, который выполняет оператор вверх по течению. Мы называем этот параллельный параллелизм, потому что операторы в конвейере могут выполняться одновременно. Если операторы в вашем конвейере достаточно вычислительно дорогие, это может повысить пропускную способность.
Аннотации @parallel
в основном о данные параллелизма. Когда вы применяете аннотацию @parallel(width=N)
к вызову оператора, потоки будут реплицировать этот оператор N
раз. В вашем рабочем приложении будет N
экземпляров этого оператора, каждый из которых получает различное подмножество общего количества кортежей. Мы называем этот параллелизм данных, потому что мы обрабатываем разные данные (которые являются кортежами, в случае потоков) одновременно, реплицируя оператор. Когда у вас есть оператор, который вычислительно дорогой, и нормально обрабатывать входящие кортежи не по порядку, @parallel
может повысить пропускную способность.
На практике использование аннотации @parallel
будет иногда включать потоковые порты в ваше приложение, чтобы убедиться, что выполнение реплицированного оператора происходит параллельно. Это, как побочный эффект, также приведет к некоторому параллелизму трубопроводов.
Это приложение демонстрирует как резьбовые порты и @parallel
: streamsx.demo.logwatch. Это исходный код приложения, разработанного в презентации Optimizing Streams Applications.
Спасибо за объяснение, кажется, есть очень тонкая грань между трубопроводом и parallism данных, вы можете дополнительно объяснить или дать некоторые ссылки, чтобы исследовать больше по этой теме. – Sal
В общем, существует четкая линия между конвейером и параллелизмом данных. Однако то, как они реализуются в потоках, означает, что введение параллелизма данных часто также приводит к некоторому параллелизму трубопроводов. Это является естественным результатом модели потокового программирования, поскольку она явно разработана для того, чтобы добиться параллелизма трубопроводов. Для более общих дискуссий см записи Википедии для трубопровода (https://en.wikipedia.org/wiki/Pipeline_(computing)) и данных (https://en.wikipedia.org/wiki/Data_parallelism) параллелизм. –