GATB - Multithreaded iteration of paired banks ?
1
0
Entering edit mode
7.2 years ago
wfd • 0

Hi there,

Is there a way to iterate two banks at the same time in a multithreaded fashion? I tried changing the code snippet: Multithreaded iteration of a bank(Code is from example multithreading6.cpp ) to accept a PairedIterator<Sequence> instead of the standard bank iterator.

Here is what I tried;

ThreadObject<string> correctionOutput_1, correctionOutput_2;

PairedIterator<Sequence> itPair(paired_bank1->iterator(), paired_bank2->iterator());

   ISynchronizer* synchro = System::thread().newSynchronizer();

    dispatcher->iterate(itPair, [&](pair<Sequence, Sequence> &seqPair) {
        LocalSynchronizer sync (synchro);
        string &localCorrection_1 = correctionOutput_1();
        string &localCorrection_2 = correctionOutput_2();
        Sequence &s1 = seqPair.first;
        Sequence &s2 = seqPair.second;
        cout << s1.toString()  << "\t" << s2.toString() << endl;

        // do stuff
    });
    delete synchro;

Nothing is being printed - I am most likely missing something obvious here... Any help is appreciated, thanks!

GATB multithreading • 1.4k views
ADD COMMENT
2
Entering edit mode
7.0 years ago
Rayan Chikhi ★ 1.5k

There was a tricky long-standing bug in GATB where PairedIterator did not work in conjunction with Dispatcher.

I just fixed it, if you update to the master branch of gatb-core, it should work. You can also try the new tools/multithreading8.cpp example that illustrates PairedIterator with Dispatcher.

ADD COMMENT

Login before adding your answer.

Traffic: 1362 users visited in the last hour
Help About
FAQ
Access RSS
API
Stats

Use of this site constitutes acceptance of our User Agreement and Privacy Policy.

Powered by the version 2.3.6