Šta je novo?

Intel Larrabee = 32 core Pentium P54C

33% brzi kod od ionako sporog GCC-a i to je sve. Nigde vektorizacije, nigde paralelizacije -- jednom recju i dalje rudimentarno i retardirano u odnosu na ICL.

jel ti citas linkove koje ostavljam?

jel ovde lepo pise http://developer.apple.com/hardwaredrivers/ve/index.html (uradi search) o auto vektorizaciji... ?

to sam ti ostavio pre par meseci da procitas, ocigledno nisi, ali si poceo na sva zvona da pises kako te prozivam da nikada nisi cuo za AltiVec!...

Apple prica o OpenCL/u, Grand Central... napravio je SIMD pre intela. to nije nista novo, da Apple vuce pricu napred.
 
Nije Apple napravio AliteVec SIMD, nego Motorola. :D Usput, SIMD je postojao mnogo pre nego sto se pojavio u mikroprocesorima na desktopu.
 
Koliko se secam, a secam se jako dobro, pocetkom devedesetih na PowerPC projektu su radili Motorola, IBM i Apple i tada je osmisljen AltiVec (koncept preuzet od Cray i CDC mainframe-ova).

Pozdrav.
 
Nije Apple napravio AliteVec SIMD, nego Motorola. :D

nije nego!!! - Apple je dizajnirao AltiVec - dva kljucna software engineer-a Appla su u saradnji sa Motorolom napravili AltiVec - ljudi su rekli sta im sve treba da ubrzaju Mac OS X UI ... ostavljao sam vec linkove o ovome!!

ako hoces uradi search na moje poruke, "alitvec", "apple" ...

Usput, SIMD je postojao mnogo pre nego sto se pojavio u mikroprocesorima na desktopu.

naravno da je SIMD postojao mnogo pre nego sto se pojavio u procesorima za desktop - isto kao i hardwerska enkripcija (IBM Power 5, cini mi se... a danas novi VIA CPU...) u svakom slucaju x86 samo kopira vec ranije ismisljenja i plasirana resenja. nista novo pod suncem poslednjih 30 godina...

@nesha_70 AltiVec je kasnije dodat, tek je PowerPC G4 doneo altivec, a u IBM Power proceserima Power 6.
taj AltiVec nije menjan godinama, intel je dostigao funkcionalnost AIM resenja tek nekoliko godina kasnije sa SSE2. Apple je od samog start koristio SIMD (AltiVec) za ubrzanje GUI-a dok M$ to nikada nije ucinio sa MMX/SIMD/3Dnow ...
 
Poslednja izmena:
Evo sta je larrabee:
heise.de je napisao(la):
What's unique (so far) about Larrabee is that it's entirely made up of x86 processing cores. The Larrabee is likely to have 32 x86 processing cores. Here's a surprise: These processing cores are based on the design of Pentuim P54C, a 13+ year old x86 processor. This processor will be miniaturised to the 45nm fabrication process, they will be assisted by a 512-bit SIMD unit and these cores will support 64-bit address. Gelsinger says that 32 of these cores clocked at 2.00 GHz could belt out 2 TFLOPs of raw computational power. That's close to that of the upcoming AMD R700. Heise also reports that this GPU could have a TDP of as much as 300W (peak).

http://www.heise.de/ct/08/15/022/
 
Poslednja izmena:
opa nedjo!! poceo si da pratis i c't!!! otkud to? :p
 
ovo je sa techpowerupa ;)
 
Poslednja izmena:
jel ovde lepo pise http://developer.apple.com/hardwaredrivers/ve/index.html (uradi search) o auto vektorizaciji... ?

Rec "auto" ne postoji na toj strani. Takodje ni rec "vectorization".

Jedino sto ja vidim na toj strani, a da ima neke veze sa tim sto ti pricas je ovo:

Optimize for SSE!
Vector programming doesn't stop with PowerPC. Learn how to do SIMD vector programming for MacOS X for Intel.

Drugim recima "nauci kako to da radis pesaka posto tunjavi GCC kompajler jos uvek ne moze to umesto tebe kao sto nikad nije mogao ni za AltiVec".

Ako ti i dalje nije jasno sta je auto-vektorizacija dacu ti primer.

Ovo je prosta C++ funkcija koja mnozi svaki element u nizu array velicine count elemenata zadatom vrednoscu factor:

Kod:
void scale(float *array, int count, float factor)
{
	for (int i = 0; i < count; i++) {
		array[i] *= factor;
	}
}

GCC kompajler ce od toga napraviti priblizno ovakav asemblerski kod (pod uslovom da mu kazes da koristi SSE):

Kod:
	mov	eax, dword ptr [array]
	mov	ecx, dword ptr [count]
scale:
	movss	xmm0, dword ptr [eax]
	mulss	xmm0, dword ptr [factor]
	movss	dword ptr [eax], xmm0
	add	eax, 4
	sub	ecx, 1
	jnz	scale

Postoji vise nacina da se napise ova petlja, ovde se broji od count do nule, a moze od nule navise pa da se brojac koristi kao index u niz, itd no to je sve irelevantno za sam primer.

Sustina je da je ovo SSE kod, ali skalarni (MOVSS, MULSS, MOVSS) -- da bi radilo ~4x brze moras da ga vektorizujes.

Intelov kompajler ce od toga napraviti priblizno ovakav asemblerski kod:

Kod:
	mov	eax, dword ptr [array]
	mov	ecx, dword ptr [count]
	movss	xmm1, dword ptr [factor]
	shufps	xmm1, xmm1, 0
	mov	edx, ecx
	shr	ecx, 2 ; count / 4
	and	edx, 3 ; ostatak
scale:
	test	ecx, ecx
	jz	scale_tail

	movaps	xmm0, dword ptr [eax]
	mulps	xmm0, dword ptr [factor] ; mnozi 4 elementa odjednom
	movaps	dword ptr [eax], xmm0

	add	eax, 16
	sub	ecx, 1

	jmp	scale

scale_tail:
	test	edx, edx
	jz	scale_end

	movss	xmm0, dword ptr [eax]
	mulss	xmm0, dword ptr [factor]
	movss	dword ptr [eax], xmm0

	add	eax, 4
	sub	edx, 1
	jmp	scale_tail

scale_end:
	...

Ako ti asembler nije jasan evo C++ ekvivalenta vektorizovane petlje:

Kod:
void scale(float *array, int count, float factor)
{
	for (int i = 0; i < (count & -4); i += 4) {
		array[i + 0] *= factor; // ovo
		array[i + 1] *= factor; // se
		array[i + 2] *= factor; // izvrsava
		array[i + 3] *= factor; // paralelno
	}
	for (int i = (count & -4); i < count; i++) { // ovo je "rep"
		array[i] *= factor; // za slucaj da count nije deljiv sa 4 bez ostatka
	}
}

Znaci Intel kompajler ce automatski da uradi celu transformaciju za tebe i to cak i za mnogo slozenije funkcije nego sto je ova prosta koju sam naveo. Ne samo sto ce vektorizovati petlju, nego ce je i razmotati i uraditi gomilu drugih trikova ako je neophodno da bi se dobio sto efikasniji kod. GCC ne ume da uradi te transformacije i samim tim programi prevedeni GCC kompajlerom iskoriscavaju samo 1/4 potencijala procesora osim ako nemaju kriticne delove napisane rucno u asembleru.

@Nedjo:
Ne vidim zasto si podvukao "could be peak" 300W TDP kada ce i AMD R700 imati toliko za taj broj TFLOPS-a (HD4870 160W TDP x2)?

U svakom slucaju lakse ce biti Intelu da optimizuje za Larrabee sa svim postojecim x86 softverom, alatima i bibliotekama nego AMD-u i NVIDIJI za CUDA i FireStream.
 
Poslednja izmena:
Postoji samo jedan problem sa intelom, koji znacajno ubija performanse primer
Vector v[10000];

for (int i=0;i<10000;i++)
if (v.x<v.w)
{
v.y = sin(v.x*v.z);
...
}
else
{
v.xyzw = normalize (v.xyz);
}

sta ces tu sa sse da radis
znaci problem je divergencija u uslovima.. kada ceo paket od 4 ili koliko vec floatova prodje isti uslov onda ok... ako ne prodje onda zavisi sta se posle radi sa podacima... nekad moze da se izvrda pa da se napravi nesto sa maskama 0xFFFFFFFF kojima se propustaju rezultati posle cmp instrukcije a nekad nema sanse posebno ako je visestruko grananje jos recimo u petlji . tad sa vektorskog prelazis na skalarno izvrsavanje


druga stvar je da za sse mnogo bolje lezi SoA nego AoS pri cemu je prvi mnogo nezgodniji za rad

p.s.
Dobrodoso nazad AUDIO :)
 
Poslednja izmena:
sta ces tu sa sse da radis

Pa ovako na prvi pogled radicu verovatno isto sto i GPU -- izracunacu obe varijante i odbaciti onu koja mi ne treba.

Dobrodoso nazad AUDIO :)

Hvala.


Pa sto ne dade odmah link?

A feature introduced in GCC 4.0.1 is the ability to automatically generate AltiVec (Velocity Engine) or SSE instructions for some types of scalar code.

Vidim napredovali su. Nazalost, tek 4.3.0 podrzava SSE4 koliko znam, a vec odavno imas Macove sa Penryn procesorima.

Inace jos ne umeju da vektorizuju ovakve petlje:

Kod:
for (int i = 0; i < N; i++) {
	a[i] = i;
}

Nije mi bas jasno sto im je indukcija problem (ICC to vektorizuje).
 
Izborih se nekako sa onim tekstom. :)

Sve u svemu, definitivno će biti sačinjen od jezgara baziranih na P1 arhitekturi. S tim da će tim jezgrima, kao što je već bilo reči, biti pridodata 512bitna vektorska jedinica, podrška za 4-way SMT (Hyperthreading), 64KB (32 I i 32 D) L1 cachea i 256KB L2 cachea.
Finalni broj jezgara se još ne zna, ali se zna da će biti umnožak broja 8. Anand špekuliše da bi se mogao kretati između 24 i 64. Takođe, zna se da će interno jezgra biti povezana ring-bus magistralom.
S druge strane, ne zna se koliko će biti široka veza sa eksternom memorijom, Anand pretpostavlja da bi ta širina mogla biti 128 ili 256 bita.
Podrška za DirectX i OpenGL će biti softverski implementirana, kao što je bilo najavljeno. Takođe, Larrabee će softverski obavljati i rasterizaciju. S tim da će koristiti drugačiji pristup nego nVidia i AMD. Koristiće tile based rasterizaciju poput Kyro čipova (ako se neko seća istih), što će donekle umanjiti potreban bandwidth i količinu izračunavanja kasnije u pipelineu.
 
eto savrsenog CPU-a za sledeci Xbox :d

"Larrabee could help create a new wellspring of research, experimentation and techniques for real-time graphics, the likes of which have not been seen since the mid-to-late 1990s." - eto vise nam ni DirectX ni OpenGL ne trebaju po Anandu :D

samo jedna stvar: pored Larrabee ti treba i klasican x86 CPU (npr. Nehalem u buducnosti)??
 
Poslednja izmena:
Al sam se napalio, baš sam se napalio!
 
THG ima bolje podatke:

- 8 do 48 jezgara (32 do 192 threada sa SMT)
- 1024-bit wide bi-directional ring network (512-bit in each direction)
- VPU (16 32-bit ops per clock)
- 64-bit extensions
- sophisticated prefetching
- puna podrska za IEEE single i double precision

Intel tvrdi da se Larrabee skalira skoro linearno sa brojem jezgara -- 16 jezgara daju 2x bolje performanse od 8 jezgara (cela jezgra, ne SMT), 24 jezgra 3x bolje performanse, itd. Pritom "skoro linearno" znaci "linearno u okviru 10%".

Za vise informacija moracete da sacekate da se vratim sa IDF-a. ;)
 
bravo, napravili su (tj. napravice :d) ono sto je IBM napravio 2005. u 2009. (ista prica kao i ona sa AltiVec i SSE...)

a to sto se skalira linearno, znaci gledacemo 2010. realtime raytracing (kao onaj na CB-u) sa 20 Larrabee procesora :d

i niko ne rece da li je Larrabee-u potreban i klasican x86 CPU... ??
 
bravo, napravili su (tj. napravice :d) ono sto je IBM napravio 2005. u 2009. (ista prica kao i ona sa AltiVec i SSE...)

a to sto se skalira linearno, znaci gledacemo 2010. realtime raytracing (kao onaj na CB-u) sa 20 Larrabee procesora :d

i niko ne rece da li je Larrabee-u potreban i klasican x86 CPU... ??

Teorijski sistem u npr. device manageru moze da vidi svako Larabee jezgro ponaosob - npr. karta sa 12 jezgara bi se prikazivala i u device manageru kao 12-core sistem.

Teorijski Larabee moze da izvrsava oba tipa koda: Direct3D/OpenGL i x86 kod. Neka vrsta SOC resenja velike racunarske snage.

Pitanje je naravno koliko ce in-order jezgra biti efikasna za svakodnevne poslove, pa je zato pretpostavka da ce drajveri onemogucavati sistem da vidi jezgra Larabee-ja, ali ce ih biti moguce uposliti za zadatke za koje se zahteva velika racunarska snaga - nesto kao nVidia CUDA, ali bez potrebe da se kod prepisuje, jer je u pitanju klasican x86 kod (C++ npr.)
 
da ali klasican x86 kod je pravljen za klasicne x86 procesore.... ako ti znaci nesto nacin lokovanja i unlokovanja i pristup memoriji, deljenje podataka nema veze u poredjenju sa klasicnim.. i larabi ne podrzava koliko videh nista osim pentium I a sad je sve sse 1234 tako da opet portovanje...
 
Poslednja izmena:
Po toj logici korisnici koji imaju Pentium 1 ne bi mogli da pokrenu novi softver. Cip je kompatibilan sa X86 kodom, a nije problem dodati SSE podrsku u Pentium 1/M jezgro...
 
Poslednja izmena:
pa ne mogu photoshop CS 3 i gomilu koja eksplicitno zahteva SSE a sad po defaultu se stvari prave sa sse podrskom... i to isto znaci da nista od x64 koliko sam ja skontao... tako da dzabe kompatibilnost kad opet moras da se vracas unazad... Tj.. sve audiove optimizacije za sse sada mora da se obrisu i pisu iznova sto je ekvivalentno prebacivanju na drugaciju paradigmu
 
cek, pa Larrabree ima SSE !?! i sta bi sa x64? :D :D

(sve je ovo smece kad pogledas kako to IBM radi...)
 
pokrenucemo Windows na grafickoj :S
 
Podržava x64.
Za SSE je već pitanje da li će vektorska jedinica koristiti neku ekstenziju SSEa ili neki potpuno novi instruction set (po meni ono prvo ima više logike).
 
Hm, koliko ja vidim, pola tog cipa ce biti dekoder instrukcija sto je super jer znaci manje mesta za racunanje... ali sam siguran da ce za 3 godine kad bude nova najava larabija da izjave da su nesto promenili... u svakom slucaju najbolje se reklamira proizvod koji ne postoji...
 
@genuine :beat:

Podržava x64.
Za SSE je već pitanje da li će vektorska jedinica koristiti neku ekstenziju SSEa ili neki potpuno novi instruction set (po meni ono prvo ima više logike).

ako je ovo drugo onda intel po prvi put "sece" kompatibilnost sa prethodnim CPU, zar ne? - ali sa druge strane - ovo nije CPU... :d
 
Poslednja izmena:
pa nije ni GPU
 
Nema smisla pricati da to ne podrzava SSE kad se zna da je AVX superset SSE-a.
 
Nazad
Vrh Dno