Кіріспе

Параллельді сұрыптау алгоритмі

Bitonic mergesort – сұрыптау үшін қолданылатын параллельді алгоритм. Ол сонымен қатар сұрыптау желісін құру әдісі ретінде де пайдаланылады. Алгоритмді Кен Батчер ойлап тапқан. Нәтижедегі сұрыптау желілері салыстырғыштардан тұрады және олардың кідіріс уақыты , мұнда – сұрыпталатын элементтердің саны. Бұл оны, әсіресе әдеттегі GPU сияқты, синхронды түрде көптеген параллель өңдеу блоктарын қамтитын архитектурада көптеген элементтерді сұрыптау үшін танымал таңдауға айналдырады. Сортталған тізбек – монотонды түрде өспейтін (немесе кемімейтін) тізбек. Битондық тізбек – бұл кейбір үшін тізбек немесе осындай тізбектің шеңберлік ығысы.

Күрделілігі

Келіңіз және . Салыстыру алгоритмінен, параллель салыстыру раундтарының саны келесімен беріледі: . Осыдан, салыстырғыштардың саны (бұл мән 2-нің дәрежесі болған кезде нақты болады) шектеулі. Абсолютті салыстырулардың саны Батчердің тақ-жұп сұрыптауынан көбірек болғанымен, битондық сұрыптаудағы көптеген тікелей операциялар деректерге жақындық қасиетін сақтайды, бұл орындалуды кэш үшін қолайлы және практикада тиімді етеді.

Баламалы өкілдік

Жоғарыдағы диаграммадағы әрбір жасыл қорап көк қораппен бірдей операцияны орындайды, бірақ сұрыптау бағыты кері. Сондықтан, әрбір жасыл қорап көк қораппен және содан кейін барлық сымдардың орналасуы қарама-қарсы болатын кроссовермен алмастырылуы мүмкін. Бұл барлық жебелердің бір бағытта көрсетілуіне мүмкіндік береді, бірақ көлденең сызықтардың түзу болуына кедерес жасайды. Дегенмен, ұқсас кроссовер кез келген қызыл блоктан шығатын сигналдардың төменгі жартысының оң жағына орналастырылуы мүмкін, ал сұрыптау бұрынғысынша дұрыс жұмыс істейді, себебі битоникалық тізбектің керісі де битоникалық болып табылады. Егер қызыл қораптың алдында және артында кроссоверлер болса, онда оны ішкі жағынан қайта құруға болады, нәтижесінде екі кроссовер бір-бірін жояды және сымдар қайтадан түзу болады. Осылайша, келесі диаграмма жоғарыдағы диаграммамен эквивалентті, онда әрбір жасыл қорап көк қорап пен кроссовердің қосындысына айналады, ал әрбір қызыл қорап екі мұндай кроссоверді сіңіретін қызыл қорапқа айналады. Жебелердің ұштары бейнеленбеген, себебі әрбір салыстыру бір бағытта сұрыптайды. Көк және қызыл блоктар бұрынғыдай операцияларды орындайды. Қызыл блоктар, кірісінің және шығысының төменгі жартысы үшін реттіліктің кері тізбегіне ие қызыл блоктармен эквивалентті. Бұл битоникалық сұрыптау желісінің ең көп қолданылатын бейнесі. Бұрынғы түсіндірмеден айырмашылығы, элементтер логикалық тәртіпте сақталады, сондықтан бұл бейнені екінің дәрежесі емес жағдайларға дейін кеңейту оңай (әр салыстыру және алмастыру үлкен индекс ауқымнан шығып кеткен жағдайларды ескермейді).