| | |
| Stránka: 1 z 1
| [ Príspevkov: 3 ] | |
Autor | Správa |
---|
Registrovaný: 29.08.06 Prihlásený: 18.12.15 Príspevky: 32 Témy: 16 | Napísal Peet51: 22.08.2009 10:53 | |
|
Zdravím, ide asi o toto: Mám cca 15 miliónov vstupných vzoriek uložených v RAM sú to floaty - premenná X. Výstupné vzorky sú v premennej Y. Je to popis FIR filtra v časovej oblasti, klasická diferenčná rovnica. Premenná H, to sú koeficienty tej diferenčnej rovnice a teda filtra. Jednoduchý kód, ktorý som použil pre jadro výpočtu je asi takýto:
for(int k=t;k<n;k++) //n je pocet vzoriek, cca 15 milionov
{
for(int j=0;j<t;j++) // t je 2816
{
Y[k]+=X[k-j]*H[j];
}
}
Čo by sa dalo urobiť, aby to šlo rýchlejšie? Hore uvedený kód je čosi cez 40 milárd MAD inštrukcií pre daný počet vzoriek. Pamäte mám DDR2 800 a CPU ATHLON 64 X2 2,7 GHz AM2. Keďže sú to floaty, je využitých len 32bitov?Myslím, že niektoré SSE inštrukcie by využili 4 floaty a tak sa vlastne využije 128bitov. Neviem. Je to akýsi reference program oproti CUDA aplikácii. Vďaka za každý podnet.
|
|
Registrovaný: 25.11.08 Prihlásený: 24.01.10 Príspevky: 25 Témy: 1 |
cau. zaujimavy vypocet.
aby ti to pocitalo rychlejsie, si si sam dal odpoved, cize ja len tie podnety
moje podnety: mas viac moznosti ako to urychlit (podla mna!).
1. ist k niekomu kto ma vykony pocitac s vykonnou grafikou
2. pouzit cuda soft ako si uz spomenul, ak mas grafiku od nvidie ktora to podporuje, nezaujimal som sa o to nikdy, ale cital som o tom uz viac krat, asi trepnem z brucha, ale zda sa mi ze 8800-ka s jadrom G80 ma vypoctovy vykon 10! nasobne vacsi ako nadpriemerny procesor. je kopec navodov ako dat cuda napriklad aj do VS.
3. spomenul si ram pamat. ak chces aby to spotrebovalo menej, jednoducho si sprav aby ti to napriklad po 10 000 vysledkov ulozilo na disk a dalej pokracovalo. windows si pokial viem (mozno sa mylim) sam rozdeluje procesy a prideluje ich jadram procesoru. dalo by sa spravit, aby ti jedno vlakno pocitalo s tym ze bude vyuzivat prve jadro procesora, a druhe vlakno s nejakym oneskorenim (napr. desat vypoctov) by ukladalo na disk, plus mazalo co uz ulozilo. tuto "Science fiction" teoriu mozno automaticky prideluje win, ale nemam znalosti ako to prinutit robit natvrdo.
4. ist za herrym potterom, on ma carovny prutik, na tuto metodu by som ale spoliehal najmenej.
neviem ci som ti vobec trosicku pomohol, ale chcel si aj podnety.
|
|
Registrovaný: 29.08.06 Prihlásený: 18.12.15 Príspevky: 32 Témy: 16 | Napísal autor témy Peet51: 24.08.2009 9:30 | |
|
Diky za odpoved, ide o to, ze ja som uz CUDA pouzil. Mam dve 9800 GTX+. Kupil som ich ako investiciu do CUDA, kedze som sa tomu chcel venovat. Zo vsetkych doterajsich GPU mali tie unifikovane shadery najvyssi takt - 1836 MHz. A oproti inym grafikam bol pomer cena ku vykon velmi dobry. Dalo mi to dost roboty, kym som z toho vytrieskal 260 krat vyssi vypoctovy vykon oproti spominanej aplikacii. Navyse sa do toho rata aj cas kopirovania dat z videopamati do RAM! Cela aplikacia je tak urobena, ze najprv vsetky data natiahne do RAM a potom sa uz z HDD nic necita. Kedze mam viac paralelnych vstupov - kanalov - az 20, ktore na sebe nie su zavisle, urobil som primitivny multitasking. Som vytvoril 2 .exe subory, no kazdy pracoval nad inymi datami. Potom som ich spustil oba naraz, manualne. A otvorim task manager a obe CPU jadra na 100%. To bolo maximalne vyuzitie CPU. To iste som urobil pre GPU - 2 skompilovane execka, obe s rozdielnymi vstupnymi datami a urcene pre rozdielne GPU, co CUDA podporuje. Spustil som ich naraz a linearny narast vykonu, to ma potesilo. To co jedno CPU jadro pocitalo vyse 1,5 hod pre 300 milionov vstupnych vzoriek som mal na dvoch 9800 gtx+ za 8 sekund. V mojej apikacii vnasa vacsiu chybu do vysledku povaha filtra, nez nepresnost s typom float, ta vysla na cca 1e-6. Navyse G200 maju uz aj double precision, aj ked mensi pocet. Takze ja som chcel vylepsit uz len tu CPU aplikaciu.
|
|
| Stránka: 1 z 1
| [ Príspevkov: 3 ] | |
Podobné témy | Témy | Odpovede | Zobrazenia | Posledný príspevok |
---|
| program na kvadraticku rovnicu v Assembler, C, C++, Pascal, Java | 2 | 554 | 09.05.2011 9:54 petos | | Ako vyriesit rovnicu v Assembler, C, C++, Pascal, Java | 0 | 459 | 15.04.2018 11:19 Navi12 | | Program pre strihanie a uprava videa pre zaciatocnika v Video programy | 10 | 3023 | 04.01.2024 16:10 mtr | | Grafika pre program v Assembler, C, C++, Pascal, Java | 3 | 486 | 07.04.2011 20:15 hradecek | | PostgreSQL pre program v Databázy | 2 | 573 | 27.11.2011 11:02 borisko27 | | Program pre HP v Ostatné programy | 0 | 464 | 20.05.2011 22:11 Krtko1992 | | Program pre Lan v Sieťové a internetové programy | 4 | 516 | 05.03.2012 16:58 Denco1 | | program pre projektantov v Grafické programy | 0 | 622 | 22.07.2012 23:45 alkex | | program pre zaciatky v HTML, XHTML, XML, CSS | 15 | 743 | 04.02.2014 15:37 mango | | program pre webkameru v Ostatné programy | 0 | 3027 | 26.01.2009 21:22 dsljohn | | Animačný program pre videoprojekciu v Video programy | 0 | 866 | 16.12.2009 18:41 quatermain | | Aky program pre kameru? v Video programy | 1 | 984 | 12.04.2008 21:14 Mandy | | Napalovaci program pre Ubuntu v Operačné systémy Unix a Linux | 19 | 2783 | 17.12.2006 0:46 johny128 | | Program pre internetovu kaviaren v Sieťové a internetové programy | 2 | 431 | 08.07.2011 23:02 matolog | | program pre tvorbu banera v Webdesign | 10 | 4061 | 28.08.2007 13:20 shaggy | | program pre zosilenie basov v Audio programy | 4 | 687 | 18.06.2010 21:16 kuupkoo563 |
| Nemôžete zakladať nové témy v tomto fóre Nemôžete odpovedať na témy v tomto fóre Nemôžete upravovať svoje príspevky v tomto fóre Nemôžete mazať svoje príspevky v tomto fóre
|
|