Multicore program v gcc na holém železe

leon

Multicore program v gcc na holém železe
« kdy: 22. 03. 2015, 22:31:33 »
Ahoj,
nasměrujte mne prosím:

Je možné (a jak) vytvářet programy v C/C++, které by na holém multicore CPU dokázaly využít více jader?

Myslím BEZ OS!

Příklad: chci napsat program pro vývojový kit s Cortexem a čtyřjádrem, přeložit gcc a nahrát přes SWD do holého CPU.

Nemám namysli make -j4 apod. - kompilace mne nezajímá. Jde mi o to, jak napsat holý SW, kde bych třeba výpočet lineární separabilní transformace urychlil využitím více jader.

Situace s OS a plánovačem a knihovnou pthread je samozřejmě elementární, ale na to se neptám.


RDa

  • *****
  • 2 465
    • Zobrazit profil
    • E-mail
Re:Multicore program v gcc na holém železe
« Odpověď #1 kdy: 22. 03. 2015, 22:50:30 »
Podivej se jak se inicializuje vice jader v linuxovem kernelu. V zdrojacich najdes kod ktery aktivuje dodatecne jadra a ty pak take zacnou vykonavat instrukce, vzdy totiz boot probiha na jednom jadru. Ostatne, nejaky technical reference by te k tomu mel navest.

Muzu se zeptat jaky to je presne hw/cpu ?

Kolemjdoucí

Re:Multicore program v gcc na holém železe
« Odpověď #2 kdy: 22. 03. 2015, 22:51:22 »
Ahoj,
nasměrujte mne prosím:

Je možné (a jak) vytvářet programy v C/C++, které by na holém multicore CPU dokázaly využít více jader?

Myslím BEZ OS!

Příklad: chci napsat program pro vývojový kit s Cortexem a čtyřjádrem, přeložit gcc a nahrát přes SWD do holého CPU.

Nemám namysli make -j4 apod. - kompilace mne nezajímá. Jde mi o to, jak napsat holý SW, kde bych třeba výpočet lineární separabilní transformace urychlil využitím více jader.

Situace s OS a plánovačem a knihovnou pthread je samozřejmě elementární, ale na to se neptám.

Takže si chcete naprogramovat vlastní OS a plánovač? V tom vám samozřejmě nikdo nemůže bránit, ale dnes se k tomuto účelu obvykle používá Linux, právě proto aby to každý nemusel programovat znovu. A pro ty zarputile neodraditelné je Linux open source, takže je možné si zdrojáky nastudovat a předělat k obrazu svému.

fvesfesrgzdsf

Re:Multicore program v gcc na holém železe
« Odpověď #3 kdy: 22. 03. 2015, 23:20:55 »
bud chce tazatel psat kernel a pak najde mnoho informaci na webu a ve zdrojakach linuxu.
nebo chce psat paralelni vypocty, pak at to dela nad operacnim systemem.
michat tyhle dve urovne by totiz byl docela velky a zbytecny boj.

e3k

Re:Multicore program v gcc na holém železe
« Odpověď #4 kdy: 22. 03. 2015, 23:36:18 »
dal som do googlu: c++ parallel computing a prve dva linky boli microsoft!


mt

Re:Multicore program v gcc na holém železe
« Odpověď #5 kdy: 22. 03. 2015, 23:40:16 »
dobrej zdroj k tomuhle muze bejt osdev wiki: http://wiki.osdev.org/Multitasking_Systems

Kolemjdoucí

Re:Multicore program v gcc na holém železe
« Odpověď #6 kdy: 23. 03. 2015, 08:24:28 »
Je možné (a jak) vytvářet programy v C/C++, které by na holém multicore CPU dokázaly využít více jader?

Je to možné, ovšem musíte si nastudovat mnoho dokumentace k CPU a udělat mnoho věcí, aby se tak stalo.
Zjednodušeně se to dělá tak, že druhé a další jádro si musíte spustit ručně.

Takže si chcete naprogramovat vlastní OS a plánovač? V tom vám samozřejmě nikdo nemůže bránit, ale dnes se k tomuto účelu obvykle používá Linux, právě proto aby to každý nemusel programovat znovu.

Nepotřebuje celé dopravní letadlo, stačí mu papírová vlaštovka ;)

TiB

Re:Multicore program v gcc na holém železe
« Odpověď #7 kdy: 23. 03. 2015, 13:47:33 »

VB

Re:Multicore program v gcc na holém železe
« Odpověď #8 kdy: 23. 03. 2015, 14:02:13 »
Zkus openMP

Pan Jan

Re:Multicore program v gcc na holém železe
« Odpověď #9 kdy: 23. 03. 2015, 16:15:23 »
Tak on napíše "BEZ OS!" a vy mu tu doporučujete různé OS.  :)

fvesfesrgzdsf

Re:Multicore program v gcc na holém železe
« Odpověď #10 kdy: 23. 03. 2015, 18:31:06 »
my ho chcem presvedcit, ze to je blbost bez zisku.


kyklopecek

Re:Multicore program v gcc na holém železe
« Odpověď #12 kdy: 23. 03. 2015, 20:16:55 »
Tak to si musis proste stahnout nejakej manual k te dane procesorove architekture. Treba pro x86 je to ten intel system architecture manual nebo tak nejak. Tam musis nastudovat, jestli jsou nejake specializovane instrukce apod. Jak ale rikaji ostatni, proste se pokousis vytvorit cast operacniho systemu. Jenom tak napsat nejaky program, ktery si to bude sam resit a bude bezet treba na linuxu se ti asi nepodari, protoze z user space programu se ti to tezko podari.

fvesfesrgzdsf

Re:Multicore program v gcc na holém železe
« Odpověď #13 kdy: 23. 03. 2015, 21:05:29 »
mozna ze nejjednodussi metoda je kouknout se na tasky, ktere se provadi uvnitr linuxoveho jadra a vyrobit si vlastni task.
ze by to nebezelo v user-space, ale v kernelu, ale pro nejake vypocty to nema smyslu, zas je problem s float a knihovnama pro vypocty,
ktere jsou psane pro user-space.

RDa

  • *****
  • 2 465
    • Zobrazit profil
    • E-mail
Re:Multicore program v gcc na holém železe
« Odpověď #14 kdy: 23. 03. 2015, 21:47:02 »
V linux kernelu FPU ani pouzivat nejde.