LinuxDNA: kernel fordítás az Intel C/C++ fordítójával

Címkék

Érdekes hírek érkeznek a LinuxDNA háza tájáról, amely nemrég sikeresen fordított le egy egészen új Linux kernel verziót az Intel C/C++ fordítójával (ICC). A művelet nem egyszerűen csak egy hibaüzenet nélküli fordítás volt. Az eredményként kapott - legnagyobb részt működő - kernel bootolható, kompatibilis Linux kernel, amely képes egy bebootolni egy teljes Linux rendszerbe.

A "teljes Linux rendszer" Gentoo Linux-ra épül és a 2.6.22-es kernelt használja. A (LinuxDNA) projekt célja egy Intel C/C++ compiler kompatibilis kernelforrás-fa karbantartása a mainline kernellel párhuzamosan. Egyelőre vizsgálat alatt van néhány olyan probléma, amelyet meg kell oldani ahhoz, hogy mozdulhassanak a 2.6.23 és az annál újabb kernelkiadások felé.

Egyesek feltehetik a kérdést, hogy "jó, de minek fordítanám a kernelt a gcc-n kívül mással"? A válasz: a teljesítmény.

A teljes cikk itt olvasható.

Hozzászólások

A művelet nem egyszerűen csak egy hibaüzenet nélküli fordítás volt. Az eredményként kapott - legnagyobb részt működő - kernel bootolható, kompatibilis Linux kernel, amely képes egy bebootolni egy teljes Linux rendszerbe.

Hű apám, bámulatos hol tart már a Linux... FreeBSD 2003 óta támogatja az ICC-vel való fordítást.

Ahogy emlékszem, már a 90-es évek végén képesek voltak Linux kernelt fordítani ICC-vel. Hogy miért nem lett nagyon folytatása? Valószínűleg igény nem volt rá, illetve hátráltathatta az a tény, hogy az Intel fordítót csak saját célra lehetett (és talán még most is így van) ingyenesen használni (FIXME). Itt az újdonság nem az (kivéve az LJ írójának), hogy le tudták fordítani a kernelt, hanem inkább az, hogy van egy projekt, amelyik egy kernelfát tartana karban az ICC-hez folyamatosan a mainline kernel mellett.

--
trey @ gépház

Hát én a lentebb említett 3-4 éve próbáltam, és úgy emlékszem, hogy voltak vele olyan problémák, amiken nem jutottam túl (nem is próbáltam mondjuk túl erősen).
Ellenben a FreeBSD make buildkernelével.

Nagy büszkeségre amúgy sajnos nincs ok, "kicsit" le van maradva a port, és talán az amd64-es patchek sincsenek rajta. :(

a thread elejen replaced a linux kernelt fikazta, hogy nem lehet uj gcc-vel leforditani,
te viszont gcc hibara hoztal peldat, mert ha a gcc felreforditja a jo kodot, az nem a kernel hibaja (igen, ilyen idorol-idore elofordul).
szoval beszeld meg replaced-del hogy most linuxot vagy gcc-t fikaztok, de persze lehet mind a kettot is.

- Use the Source Luke ! -

Sajnos legfőbb játszópajtásodat nem fogod megtalálni, mert neki nagyon bonyolultnak tűnt ez az IRC-s dolog, hogy hogyan is kell írni a másiknak, de azért egyszer megpróbálta:

[09-01-09|00:54:31] {denes} denes: mi van hunger meg ebren vagy?
[09-01-09|00:54:56] {denes} s/denes/Hunger

Ha több, mint 10 éve forgatod azt a Linux kernelt már minden oldaláról kellett, hogy lásd. Tíz-tizenkét éve a kernel.org-os kernelhez külön patchek kellettek például, hogy SPARC-on le tudd fordítani.
És akkor még csak lefordult, de nem biztos, hogy be is bootolt. És ha beboobolt is imádkozhattál, hogy ne b....a szét a futó rendszered.
És hiába imádkoztál, néha szétb...ta.

De egészen biztosan vannak most is olyan dolgok, hogy bizonyos részek nem működnek itt, vagy ott, ha 5 architektúrán (ugye nem PC, x86, x86-64, amd64, IA-32?) használtad már, neked is kellett ilyennel találkoznod.

elte pszichologia szak, ZH, kerdes:

"Ha Denes es Turul16 harmincas eveiben jaro informatikusok egy szakmai vitaban azt hozzak fel ultimate ervnek h o 10 eve forgatnak kernel akkor vajon milyen komplexussal rendelkeznek?"

a, csak siman down kor
b, kisebbsegi komplexus
c, komplex szemelyiseg zavar
d, mindharom egyutt

--
.

A lenyeg az volt, hogy eleg sokszor lattam, hogy az franya gcc leforditja azt a franya kernelt. 99.9% feletti success rate -el (gcc vs. linux problema nelkul), valtozo korulmenyek kozott.

Ha azt mondom, hogy 10 szer lefordult az utobbi hetekben az keves.

Mas esetben en is utalom, ha valaki ilyemivel hozakodik elo.

Amit nem lehet megirni assemblyben, azt nem lehet megirni.

A cikk azonban nem sikerult teljesen hiba nelkul:

sikeresen fordított le egy egyészen új Linux kernel verziót

Bocs, de most nincs kedvem levelezt fogalmazni...

Kulonben a Gentoo-nal korabban is hallottam mar pletykakat, hogy lehetove akarjak tenni, hogy a gcc teljesen kicserelheto legyen icc-vel a default toolchain-ben. Ezek szerint a hir igaz.
--


()=() Ki oda vagyik,
('Y') hol szall a galamb
C . C elszalasztja a
()_() kincset itt alant.

Nem tudtam szerkeszteni mar, szoval kerdes:

Miert ne lehetnenek ezek a patchek a mainline kernel reszei? Avagy az icc kompatibilitast elosegito foltok rongaljak a gcc-vel valo kompatibilitast?
--


()=() Ki oda vagyik,
('Y') hol szall a galamb
C . C elszalasztja a
()_() kincset itt alant.

Hmm... ez megint olyan kerdes, hogy ha ugy veszem, a Linux desktopra is minimalis az igeny, megis egy csomo desktop rendszert segito feature van mar a kernelbe. Miert nincs helyette kulon linux-desktop kernelfa/patchset? Mert nem csinalunk minden kis vacak valtozashoz forkot. Oke, ez nem olyan kicsi valtozas, de senki nem mondta, hogy az icc a jovoben nem fog jobban elterjedni. Akkor meg mar nem lesz olyan kicsi.
--


()=() Ki oda vagyik,
('Y') hol szall a galamb
C . C elszalasztja a
()_() kincset itt alant.

PGO az en mereseim szerint gcc -nel jobb volt.

Amit nem lehet megirni assemblyben, azt nem lehet megirni.

"Egyesek feltehetik a kérdést, hogy "jó, de minek fordítanám a kernelt a gcc-n kívül mással"? A válasz: a teljesítmény."

Gyorsabb a forditas vagy gyorsabb a kod ?

huha, mekkora fejlodes!

btw: erdekes, hogy ennyire tapsol mindenki hozza, ha egy oligopol ceg zart forrasu termekevel forditanak linuxkernelt, de egy masik nyilt forrasu fordito project az szar, hulyeseg es "mar van gcc, akkor meg minek"...

--
When in doubt, use brute force.

_Szerintem_ az Intel fordítója úgy képzi a kódot, hogy a lehető legjobban fusson a saját processzorain, amit természetesen ő ismer a legjobban, így e tekintetbe a gcc vagy akármi nem fogja utolérni teljesítményben.

Más kérdés az hogy ez mondjuk a beépített intel rendszereken kívül miért is jó nekünk? Bár nem próbáltam, lehet sokkal gyorsabb desktop-on is az új fordítóval, de nem hiszem hogy nagy lenne a differencia.

FreeBSD-s tapasztalataim vannak, 3-4 évvel ezelőttről. A kernelnél én nem éreztem számottevő különbséget, viszont a userspace programoknál igen.
Konkrétan binddal nyűglődtem akkor, és ha gcc helyett icc-vel fordítottam volt, hogy 30%-os növekedés is előjött a teljesítményében (qps).

Most arról beszélünk, hogy egy license trollkodós compiler-e vagy sem. Ezért jöttem Stallman-nel, akit most _nem_ mint a GCC megalkotóját hoztam fel, hanem mint a szabad szoftveres mozgalom atyját, vagy mi, ami ugye a GPL mögött is áll.
(Jó a haversráckodás, de mindenáron? (c) trey)
"no video codec le a win32vel", de "Gentoohoz lehet meg tul fiatal vagy"

De ettől még gyúrhat, hogy a sokat fikázott gcc nyomába érjen. Hiába a fáraók írták.

Ezt egy percig sem vitattam, másrészt meg szerintem nem akarja a GCC-t (== GNU Compiler Collection) lenyomni, csupán bionyos területeken akarja lecserélni, erről thuglife-fal beszéltünk itt régebben.
"no video codec le a win32vel", de "Gentoohoz lehet meg tul fiatal vagy"

Pl. a BSD-k alaprendszere, így kisebb lesz a kódbázis, meg a licenc is jobb lesz (akit ez érdekel), l. itt (egyébként ebben a cikkben is van ilyen 'why another C compiler?'). A csomagkezelőnek úgyis az lesz az első, hogy feltol egy GCC-t, mert rengeteg 3rd party app csak azzal fordul le.
"no video codec le a win32vel", de "Gentoohoz lehet meg tul fiatal vagy"

Először is használj ékezetet, kezdd a mondatot nagybetűvel, és tegyél pontot a végére. :-P Utána meg gondolkozz el azon, hogy a PCC nem a Nagy Szabadszoftveres Műhely égisze/licence alatti FOSS, tehát lehet ellene hangulatot kelteni.
"no video codec le a win32vel", de "Gentoohoz lehet meg tul fiatal vagy"

http://www.freebsd.org/doc/en/articles/p4-primer/index.html
Ezt nem akarjatok lecserelni valami jobb licensure ?

Amikor megkerdeztem egy hupon kivuli FreeBSD -st a valasza valami ilyesmi volt:
Mi nem fogalkozunk license kerdesekkel,mi dolgozunk , ezert mukodik es fejlodik a FreeBSD.

Lehet nem a FreeBSD az a rendszer ahol a felhasznalok/fejlesztok "fuu de BSDL-esek vagyunk" -at kialtoznak, csak itt hupon vannak paran.

Amit nem lehet megirni assemblyben, azt nem lehet megirni.

Engem nem izgat a licenc, meg nem is értem, miért nekem mondod, mikor én csak használom a BSD-ket. Egyébként ez a p4 szerintem is egy baromság, talán még nagyobb, mint a Subversion-re váltás. Egyébként nem tudom, mit rágódsz még mindig ezen a licenc-témán, meg mit offolsz a perfoce-szal, de hát én vagyok a troll...
"no video codec le a win32vel", de "Gentoohoz lehet meg tul fiatal vagy"

Miert lesz jobb pcc ? Mert pcc-sek azt mondtak, hogy jobb lesz azert, mert nem az a gcc amit gonosz hozzanemerto GNU -sok babralnak? ROTFLAMO

Arhitekturalisan mi garantalja, hogy jobban fog tudni x86/amd64,ia64 -re IS optimalizalni ?
Miert kell az egesz gcc-t kidobni ennek erdekeben ? llvm.org-osok vajon miert dontottek, ugy ujrahasznalnak kodot a gcc -bol, es megis miert tudtak sokkal kecsegtetetobb dolgokat irni ?

License oldalrol:
Mit eredmenyezhet egy gcc -vel versenykepes sok platformot tamogato BSDL licenses fordito?
FACT: gcc sok kereskedelmi termekkel egyutt szallitjak, modositott kodot kiadjak.
Egy BSDL -esnel mi lenne ? Alapvetoen en aki nem akarok zart forraskodu C forditot eladni rosszabbul jarok csak a letezese miatt, mivel kevesebb javitas , enchantment jut el hozzam.

Amit nem lehet megirni assemblyben, azt nem lehet megirni.

Miert lesz jobb pcc ?

Ki mondta, hogy jobb lesz? Kit érdekel, hogy jobb lesz-e egyáltalán? Itt egyedül te csinálod a nagy ész osztást és hatalmas jövendöléseket a témában, nem tűnt még fel?

Ráadásul megint terelsz olyan irányba, amiről szó sem volt eddig és szájába adsz a BSD usereknek olyan kijelentéseket, amiket meg sem tettek. A licenc trollkodást egyedül te vitted végbe és senki más nem írogatta, hogy a pcc-t azért fejlesztik, mert BSDL, ugyanúgy ahogy senki se írta rajtad kívül azt sem, hogy amiatt lenne jobb, mert BSDL...

Figyi, FreeBSD-nel is van olyan irany, hogy icc-vel fordithatova tettek a rendszert. Lehet, hogy closed source compiler, de tudhat valamit, ha a vaskalapos BSD-sek megtesznek egy ilyen lepest (jo, mondjuk az is igaz, hogy a FreeBSD talan a legliberalisabb valamennyi kozt). En nem vagyok compiler-szaki, de egy tesztet megerne mindenkepp. Gentoo-n legalabbis.
--


()=() Ki oda vagyik,
('Y') hol szall a galamb
C . C elszalasztja a
()_() kincset itt alant.