Sivu 1/1

G5-optimointi, asiaa myös Intel-ohjelmoijille

Lähetetty: 9.11.2011 klo 11.17
Kirjoittaja teroyk
Olisi kiva kun ohjelmoijat muistaisivat vielä huomioida PowerPC 970:n eli Apple käyttäjille tutummin G5:n 64-bittisyyden. Ja huomatkaa voit kääntää Intel-macilläkin PowerPC:ssäkin toimivaksi Universal Binaryksi ja minä voin tarvittaessa testata. Ja asia tarvitsee vain valita kääntäessä ja ei sinun ei tarvitse tehdä mitään, mikäli olet alunperin tehnyt ohjelman OS X 10.5:ssä toimivaksi ja jos olet tehnyt OS X 10.4:n kanssa yhteensopivana, niin toimii myös G3:ssa. Tällöin tosin olet vasta tehnyt ohjelman (G3)/G4/G5 yhteensopivaksi, mutta käyttämällä yksinkertaisia GCC flagejä otat jo aimoharppauksen 64-bit optimoinnissa tällöin kannattaa tehdä kolme erillistä käännöstä yksi (G3)/G4, yksi 64-bit optimoitu G5:lle ja yksi Intel-macille ja unohtaa Universal Binary ajattelu.

Kannattaa nähdä vaiva, jos tekee kaupallisen ohjelman, sillä jossain näin luvun, että Apple olisi myynyt yli 10 miljoonaa G5:sta ja suurin osa on edelleen aktiivikäytössä. Se on vaikeampi tietää kuinka paljon on G3- ja G4-Macejä aktiivikäytössä, mutta tuttavapiirin otannalla niitä on jopa enemmän käytössä, kuin Intel-macejä.

Jos taas ohjelmoit PowerPC-koneella, niin CodeWarrior tekee joidenkin mittausten mukaan jopa kaksi kertaa tehokkaampaa koodia, kuin Xcode, mutta joidenkin käännösten maksimi käyttöjärjestelmä on OS X 10.4.11 ja Universal Binaryjen teko ei ole mahdollista. Mutta yllättäen OS 9 ja Windows XP-ohjelmaksi kääntäminen on voi olla helppoa.

Huomasin, että jotain tietoja Applen sivuilta olikin jo hävinnyt. Joten keräsin tähän jotain sieltä hävinnyttä:

== G5-Related Flags for GCC ===
-mcpu=970
This allows the compiler to use instructions only available on the G5 (also known as 970) processor.

-mtune=970
This tells the compiler to tune code as optimally as it can for the G5. This flag can be safely used by itself on code that may run on processors other than the G5, because code compatibility is not changed.

-mpowerpc64
In combination with the above flags, this flag tells the compiler to enable the G5's native 64-bit long long support for greatly enhanced performance when working with long longs. At times, the -force_cpusubtype_ALL flag may also be needed.

== Linkkejä, osa ei enää toimi mutta auttavat tiedon etsimistä muualta internetistä, jos löydätte niin ilmoittakaa uusi linkki tännekkin ===
Optimizing for the Power Mac G5
<http://developer.apple.com/performance/ ... ation.html> ):
Technical Note TN2086: Tuning for the G5: A Practical Guide
<http://developer.apple.com/technotes/tn/tn2086.html>
Technical Note TN2087: PowerPC G5 Performance Primer
<http://developer.apple.com/technotes/tn/tn2087.html>
Technical Note TN2090: Driver Tuning on Panther or G5 (Of interest only if you have written a device driver)
<http://developer.apple.com/technotes/tn/tn2090.html>
Power Mac G5 Performance White Paper (PDF)
http://www.apple.com/powermac/pdf/Power ... 071503.pdf

Re: G5 optimointi, asiaa myös Intel ohjelmoijille

Lähetetty: 9.11.2011 klo 11.43
Kirjoittaja teroyk
Codewarriorista enemmän kiinnostuneille, niin päivitykset löytyvät täältä:
http://www.freescale.com/webapp/sps/sit ... PDATES_MAC
Ja vaikka Mac versiota ei enää myydäkkään virallisesti, niin kuulemma lisenssejä on voinut ostaa kyselemällä osoitteesta license@freescale.com. Eli jostain sitten vain itse kaivamaan asennus tiedostot.

Re: G5 optimointi, asiaa myös Intel ohjelmoijille

Lähetetty: 9.11.2011 klo 12.18
Kirjoittaja teroyk
Ja meinasi unohtua ihan 128-bittisten G5-ohjelmien teko ja huom! näitä voi ohjelmoida G3/G4 ja Intel-maceilläkin, mutta toki kääntyy sitten G3 ja Intel-maceissä 32-bittiseksi koodiksi, mutta G4:ssa käyttää hyödyksi sen 128-bittisiä Altivec-käskyjä:

Eli ainakin seuraavat Xcode-kirjastot kääntyvät edellä kuvatulla tavalla:
vDSP.h kirjastossa:
Fast Fourier Transform (FFT)
Convolution and Correlation
FIR filters
dot products

cblas.h kirjastossa:
Full BLAS (MacOS X.2 and later)
LAPACK (MacOS X.2 and later)

vBLAS.h kirjastossa:
Partial BLAS

vImage.h kirjastossa:
Image processing

vDSP.h and vBLAS.h
Special Purpose Linear Algebra and matrix operations

Jossain muistelen lukeneeni, että matriisi operaatiosta olisi ollut moniprosessori G5 optimoitujakin kirjastoja, mutta en enää löytänyt tietoa. Sehän olisikin vauhtia, kun neljä ydintä rouskuttaisi 128 bittisiä käskyjä yhtäaikaa.

Re: G5 optimointi, asiaa myös Intel ohjelmoijille

Lähetetty: 11.11.2011 klo 10.45
Kirjoittaja teroyk
PowerPC Numerics pdf:kin oli hävinnyt Applen sivuilta. Tiedosto siis sisältää asiaa esim. murtoluvuilla laskemisesta ja muusta tieteellisen tarkasta numeroiden pyörittelystä. Tämä on sitten jo vähän pitemmälle ehtineille.
Onneksi teksti löytyy vielä seuraavalta sivulta:
http://citeseerx.ist.psu.edu/viewdoc/do ... 1&type=pdf

Ja ne jotka taas haluaa tietää kuinka PowerPC tekee Mac OS X kutsuja rekisteritasolla, niin yllättäen löytyi Applen sivuilta ja peräti päivitettynä 17.11.2010. Huom teksti on sitten erittäin pitkälle edenneille koodareilla ja tavallisesti et tarvitse, ellet meinaa aloittaa ohjelmointia suoraan assemblerilla. Eli 64-bit PowerPC Function Calling Conventions:
http://developer.apple.com/library/mac/ ... werPC.html

Re: G5 optimointi, asiaa myös Intel ohjelmoijille

Lähetetty: 19.11.2011 klo 21.27
Kirjoittaja teroyk
Ja sitten Xcode 4:lla ohjelmoineet ovat varmaan huomanneet, että mistäs se PPC-yhteensopivuus valitaankaan. Sehän ei käykkään niin suora viivaisesti. Seuraava vinkki muuten pätee myös jos haluaa 100% Intel yhteensopivuutta Tigerissa tai käännellä vanhoja ohjelmia Snow Leopardille helposti. Tällöin asennat Xcode 3:n rinnalle. Ja tässä ohjeet:
http://stackoverflow.com/questions/5333 ... to-xcode-4

Re: G5 optimointi, asiaa myös Intel ohjelmoijille

Lähetetty: 26.11.2011 klo 14.10
Kirjoittaja teroyk
Tällainen optimointi juttu sattui silmään, joten päätin laittaa sen tänne muistiin:
"
-fastf is an option for GCC (PPC only) that enables the most aggressive optimizations for compliation except for -malign-natural

You can get a slight speedup by replacing -fastf with -fast wich does enable -malign-natural but at the risk of breaking some binaries when linked with C++.
"

Re: G5 optimointi, asiaa myös Intel ohjelmoijille

Lähetetty: 9.1.2014 klo 15.33
Kirjoittaja teroyk
teroyk kirjoitti:Ja sitten Xcode 4:lla ohjelmoineet ovat varmaan huomanneet, että mistäs se PPC-yhteensopivuus valitaankaan. Sehän ei käykkään niin suora viivaisesti. Seuraava vinkki muuten pätee myös jos haluaa 100% Intel yhteensopivuutta Tigerissa tai käännellä vanhoja ohjelmia Snow Leopardille helposti. Tällöin asennat Xcode 3:n rinnalle. Ja tässä ohjeet:
http://stackoverflow.com/questions/5333 ... to-xcode-4
Kyseiseen linkkiin on lisätty myös Lionille asti ohjeita, mutta yhtä ohjetta ei kannata missata:
"You'll also need to set the clock back to a date prior to 31st March 2012 otherwise security certificates will fail validation during installation. You can safely change the date back again after installation obviously!"

Re: G5-optimointi, asiaa myös Intel-ohjelmoijille

Lähetetty: 25.2.2016 klo 22.24
Kirjoittaja teroyk
4-way Universal Binarystä (eli ppc, i386, ppc64 ja x86_64) juttua seuraavan linkin päässä:
https://developer.apple.com/library/mac ... -TPXREF101

Re: G5-optimointi, asiaa myös Intel-ohjelmoijille

Lähetetty: 29.8.2017 klo 21.02
Kirjoittaja teroyk
Tuo Optimizing for the Power Mac G5
<http://developer.apple.com/performance/ ... ation.html>
Löytyy nykyään osoitteesta:
http://mirror.informatimago.com/next/de ... ation.html
Valitettavasti nuo technotet ei löydy sieltä.

Re: G5-optimointi, asiaa myös Intel-ohjelmoijille

Lähetetty: 7.7.2020 klo 15.50
Kirjoittaja teroyk
Parempi myöhään, kuin ei milloinkaan. Apple on laittanut uudestaan saataville ne hukassa olleet technical notesit:

Technical Note TN2086, Tuning for G5: A Practical Guide
https://developer.apple.com/library/arc ... n2086.html

Technical Note TN2087, PowerPC G5 Performance Primer
https://developer.apple.com/library/arc ... n2087.html

Technical Note TN2090, Driver Tuning on Panther or G5
https://developer.apple.com/library/arc ... n2090.html