Разница между потоковым портом и параллельной аннотацией в потоках инфосферы IBM
Я пытаюсь понять разницу между многопоточным портом и аннотацией @parallel в потоках IBM info-sphare, я искал много мест, но не смог получить ответы, насколько я понимаю, оба они полезны для создания оператора многопоточности, но я не уверен, когда и где их использовать, и можно ли их использовать вместе для повышения производительности. Может ли кто-нибудь подтвердить их использование примерами.
Благодарю.
1 ответ
Резьбовые порты - это прежде всего параллелизм конвейера Когда вы указываете резьбовой порт на оператора config
предложение, вы говорите среде выполнения, чтобы этот оператор выполнялся с потоком, отличным от потока, выполняющего оператор восходящего потока. Мы называем этот конвейер параллелизмом, потому что операторы в конвейере могут выполняться одновременно. Если операторы в вашем конвейере достаточно дороги в вычислительном отношении, это может улучшить пропускную способность.
@parallel
аннотация в первую очередь о параллелизме данных. Когда вы применяете @parallel(width=N)
аннотации к вызову оператора, Streams будет копировать этот оператор N
раз. Ваше работающее приложение будет иметь N
копии этого оператора, каждый из которых получает различное подмножество общего числа кортежей. Мы называем это параллелизмом данных, потому что мы обрабатываем разные данные (которые в случае потоков являются кортежами) одновременно путем репликации оператора. Когда у вас есть оператор, который требует больших вычислительных ресурсов, и можно обрабатывать входящие кортежи не по порядку, @parallel
может улучшить пропускную способность.
На практике, используя @parallel
аннотация иногда вводит многопоточные порты в ваше приложение, чтобы обеспечить параллельное выполнение реплицированного оператора. Это, как побочный эффект, также вводит некоторый конвейерный параллелизм.
Это приложение демонстрирует как резьбовые порты, так и @parallel
: streamsx.demo.logwatch. Это исходный код приложения, разработанного в презентации Optimizing Streams Applications.