( Nyosigomboc | 2020. 02. 29., szo – 11:50 )

Ha a problemadnal a teljes adatmennyisegen belul sem, es a kulonbozo parameterekkel sem parhuzamosithato (mert minden mindennel osszefugg), akkor mas nyelven sem ersz semmit a sok maggal. Ha igen, akkor mar lehet megoldas.

Volt egy kutyu, ami rengeteg csatornan olvasott ADC-bol jovo ertekeket (neuronok elektromos jelet), ennek a feldolgozo programjat irtam. A csatornak - ezen a szinten - fuggetlenek voltak, az egy csatornan egymas utan jovo idoszeletek viszont fuggtek egymastol. A feladat savszures volt, es utana egy adaptiv csucskereses (spike-nak hivjak, amikor egy neuron aktivalodik, es ad egy impulzust), a csucskereso algoritmus mindenfele parametere fuggott a korabbi ertekektol.

Ezt ugy parhuzamositottam, hogy a multiprocessing pool-jat hasznaltam. Volt egy dictionary-m (visszagondolva, lehetett volna object is), ami az adott csatorna belso allapotat tarolta, a feldolgozo fuggvenyem egy ilyen state-et es egy idoszeletet kapott, a visszateresi erteke meg az uj allapot volt a feldolgozas eredmenye mellett. A poolt mindig az epp aktualis allapottal, es a megfelelo idoszelettel etettem, igy a 32 magos gepet 768 ADC csatornaval eleg jol ki lehetett hasznalni (par magot fenntartottam a program tobbi reszere, de 28 mag is gyorsabb volt, mint ha egy magon fut minden).

Valami hasonlot te is csinalhatsz, es viszonylag keveset kellett atirni, hogy tobb magon fusson.