Gép matematikára. (megvan, hasít mint a rakéta)

Fórumok

Update:
Először is mindenkinek köszönöm a jótanácsokat, az eredménye lentebb listázva. Gentoo-t raktram fel rá (mert azt ismerem), és ehhez kapcsolódik a kérdésem. Az előző gépem lomha volt az eclipse-cdt megismeréséhez, és nem tudtam érdemben használni. De ilyen csomag a gentoo alá nincs. Biztosan megoldotta már valaki, hogy használja az említett ide-t. Van valamelyik overlay-ban, vagy található hozzá valami jófajta ebuild?

Mégegszer mindent köszönök
A gép:
00:00.0 Host bridge: Intel Corporation Device 0100 (rev 09)
00:01.0 PCI bridge: Intel Corporation Device 0101 (rev 09)
00:16.0 Communication controller: Intel Corporation Cougar Point HECI Controller #1 (rev 04)
00:1a.0 USB Controller: Intel Corporation Cougar Point USB Enhanced Host Controller #2 (rev 05)
00:1b.0 Audio device: Intel Corporation Cougar Point High Definition Audio Controller (rev 05)
00:1c.0 PCI bridge: Intel Corporation Cougar Point PCI Express Root Port 1 (rev b5)
00:1c.2 PCI bridge: Intel Corporation Cougar Point PCI Express Root Port 3 (rev b5)
00:1c.3 PCI bridge: Intel Corporation Cougar Point PCI Express Root Port 4 (rev b5)
00:1c.4 PCI bridge: Intel Corporation 82801 PCI Bridge (rev b5)
00:1c.5 PCI bridge: Intel Corporation Cougar Point PCI Express Root Port 6 (rev b5)
00:1c.6 PCI bridge: Intel Corporation Cougar Point PCI Express Root Port 7 (rev b5)
00:1c.7 PCI bridge: Intel Corporation Cougar Point PCI Express Root Port 8 (rev b5)
00:1d.0 USB Controller: Intel Corporation Cougar Point USB Enhanced Host Controller #1 (rev 05)
00:1f.0 ISA bridge: Intel Corporation Device 1c46 (rev 05)
00:1f.2 SATA controller: Intel Corporation Cougar Point 6 port SATA AHCI Controller (rev 05)
00:1f.3 SMBus: Intel Corporation Cougar Point SMBus Controller (rev 05)
01:00.0 VGA compatible controller: nVidia Corporation Device 1245 (rev a1)
01:00.1 Audio device: nVidia Corporation Device 0bee (rev a1)
05:00.0 PCI bridge: Device 1b21:1080 (rev 01)
06:03.0 FireWire (IEEE 1394): VIA Technologies, Inc. VT6306 Fire II IEEE 1394 OHCI Link Layer Controller (rev c0)
07:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168B PCI Express Gigabit Ethernet controller (rev 06)
08:00.0 IDE interface: Device 1b4b:91a0 (rev 12)
08:00.1 IDE interface: Device 1b4b:91a4 (rev 12)
09:00.0 USB Controller: Device 1b21:1042

CPU:
vendor_id : GenuineIntel
cpu family : 6
model : 42
model name : Intel(R) Core(TM) i5-2500 CPU @ 3.30GHz
stepping : 7
cpu MHz : 3301.000
cache size : 6144 KB

Sziasztok!

7-éve nem vásároltam új gépet, (csak notit, de az nem alkalmas erre), és most úgy érzem, hogy a jelenlegi konstrukcómat erősen kinőttem (amd 3000+ athlon64 1G ram nvidai 7300 GT), kénytelen vagyok befektetni egy gépbe. Az anyagi háttér erősen limitált ~100eft. Elkezdtem nézegetni gépeket, de ezen idő alatt olyan szintem megváltozott minden, hogy nem akarok befürödni a vásárlással. Így a hozzáértőktől segítséget szeretnék kérni.
Leírom mire lesz használva.
Linux alatt szeretnék dolgozni (Gentoo. Ehhez szoktam, de ha kell akkor bármi más, ha hatékonyabb... distro háborút nem akarok), Játszani nem szoktam, Alapvetően 2-fajta munkám van.
1. Gigantikus képek feldolgozása (10k*10k+ pixelméret nem ritka, sőt az a gyakoribb, ezen a gépen nem is nagyon tudok hatékonyan 5k*5k fölé menni), ezeken minden féle-fajta mátrixművelet végrehajtása (fft, konvolúció ami végtére is ugyanaz, egyéb komplex/valós függvényű integrálok, differenciltak......)
2. Differenciálegyenletek megoldása numerikusan. Többnyire "sokrészecskés" problémákkal foglalkozom ami nem mindíg tekintendő annak, mivel az esetek többségében elhanyagolható a részecske-részecske kölcsönhatás, pl.: töltött részecskék mozgása mágneses, elektromos térben (rosszabb esetben Maxwell-egyenletek, de többségében csak Newtoni dinamika).

Vinyót, tápot, és házat kaptam, ezek nem kellenek. A videokártát mennyire tudom megúszni? Mert hallottam olyanról, hogy APU(nem a fateromra gondoltam :D). Ezekkel mennyire használható a videokártyák magjaira használt matematikai nyelvek?

Előre is mindenkinek köszönöm, az segítőkész hozzászólásokat.

Hozzászólások

Egy középkategóriás processzor, meg egy középkategóriás dedikált videókártya (AMD Radeon HD 6750-et javaslom), ami GPGPU-ra is használható ki kell elégítse az igényeidet.

Az egészhez vegyél még legalább 8 GB memóriát, az most nem kerül sokba, később meg amikor majd többet tudsz költeni feltétlenül egy SSD meghajtót.

A Catalyst ma már sokkal kiforrottabb, nincsenek vele problémák, a hardveres videógyorsítás és a GPGPU támogatás (AMD Accelerated Parallel Processing, korábban Stream SDK elérhető OpenCL támogatással) teljeskörű.

Ha kizárólagosan CUDA-ra van szükséged akkor az Nvidia a megfelelő választás.

Azoknak az anyázásoknak a zöme a 8-10 évvel ezelőtti tapasztalatokra alapulnak.
Akkor szenvedett vele és egy életre elkönyvelte az ATi vacak, nem megy, szenvedés és kín. Hajrá nVidia!
És ez az általános megmondom a tutit, gyakran nem csak az ATI - nVidia kérdésre vonatkozik, hanem sok.sok másra is.
--
Tertilla; Tisztelem a botladozó embert és nem rokonszenvezem a tökéletessel! Hagyd már abba!; Dropbox

javasolnék egy i5-2500k -t, 8 vagy 16G rammal, és egy bármilyen alaplappal és vga-val, ha nem akarod/tudod a számításokat a vga-ra terhelni.

(2x) http://www.argep.hu/trend/4GB1/4GB-1600MHZ-Kingmax-DDRIII-RAM.html
http://www.argep.hu/trend/AMDP/AMD-Phenom-II-X6-1100T-AM3-BOX-cpu.html
http://www.argep.hu/product_1266297.html (GIGABYTE GA-880GMA-UD2H)

A Giga lapban van egy HD 4250 VGA, de a 100-ba még belefér a 6750 ha kevésnek találod. Mondjuk ez a lap csak 16GB RAM-ot fogad (remélem, a 4GB-os 1600-as Kingmaxt is).

http://www.argep.hu/trend/AMDR/AMD-Radeon-HD-6750-1-GB.html

Én ezeket venném ennyiért, de persze ez nem jelent semmit. :)

Ja, a 100 az bruttó? Mert ha nettó, akkor 990-es lapot.

Hasonló alaplapom van integrált HD4250-nel és kb csak képet tud kitolni, másra nem igazán jó. Ugyan elvileg húdefasza már a Catalyst, de amint volt rá lehetőségem vettem egy nvidia kártyát (GT440), mert még mindig fényévekkel jobb. Ráadásul nem 'csak' open cl-t tud, hanem ott a saját CUDA-juk.

(Mondjuk jobban belegondolva, ha lehet hinni a CPU Benchmarknak, a fentebb említett i5-2500k proci ütősebb.)

Konkrét típusokat nem tudok ajánlani, csak néhány elvet:

a) Érdemes NVIDIA kártyát venni, a CUDA csudákat tud művelni, még egy ma gyengének számító NVIDIA kártyával is. De az is lehet, hogy most nem veszel ilyet, inkább erősebb alapgépre költesz és később, amikor lesz még pénzed veszel bele egy GPU-t.

b) Más numerikus modellezésben utazom, de én azt láttam, hogy a mai gépek közt a legnagyobb különbséget nem is annyira a CPU elvi teljesítménye, mint inkább a memóriával való kommunikáció teljesítménye okozza. Szerintem érdemes minél nagyobb sebességű memóriát szerezni be és persze a cache sem mindegy, de ott nem pusztán a méret/sebesség a lényeg, hanem az is, hogy a külön processzormagok ne osztozzanak még a külső cache-en sem, ha lehet. Divat ma mondjuk egy 4 core-ú CPU-hoz 8 MB külső cache-t adni, de úgy, hogy ezen osztozik az összes core. Na, az ilyen gépek nálam nem jöttek be. A futó számoló processz teljesítményét szépen le tudja ilyenkor húzni egy mellékes processz csak azzal, hogy használja a külső cachet. Arra meg nincs módod, hogy megmondd a CPU-nak, hogy ez és ez a processz a lényeges, ennek az adatait ha lehet, ne pakolja ki a cache-ből.

A helyedben tehát én egy olyan gépet vennék, mely RAM-sebességben erős és olyan CPU-t, melyben a legkülső cache nem az összes core közt van megosztva. (Ha már két csoportra van osztva, az egyikk core-csoportot leválaszthatod az oprendszerről és csak a futtatásokat pakolhatod rá.) És persze, ameddig a pénzed futja, legyen nagy a proci órajele, cache-mérete, cache-sebessége.

GPU-ra talán tartogass későbbre, ha most csak 100kFt-od van. (Úgyis idő azt kiismerni.)

OFF: Mindig piszkálta a csőrömet, hogy lehet "cachre optimalizálni". Még a bonyolultabb matematikai algoritmusoknál is van egy-két eljárás amit mindenképpen a cacheben kellene tartani. Gondolom te ezzel behatóan foglalkoztál(?) - ezek szerint a cache -ben tárolt kódra nincs lehetőség optimalizálni?
(Az egész olyan misztikus, valaminek csak szabályoznia kell a cache tartalmát, annak cseréjét, de még nem találkoztam olyan lehetőséggel, hogy ezt a programozó kezelhesse. Szomorú, de még mindig ott tartunk, hogy valami MMU az úr, sőt a gyártók elmagyarázzák, hogy ez nekünk milyen jó? A kommersz számítógép megoldások között mind máig nem jelennek meg azok az eszközök mik "csak úgy" odacsapják a sok gigás, lineáris memóriát?)

* Én egy indián vagyok. Minden indián hazudik.

Nem vagyok cache szakértő, csak tapasztalatból tudok pár dolgot, mert gyorsítani akartam a kódjaimon. Meg persze olvastam azért utána.

Sajnos, a mai gépek nem adnak rá eszközt, hogy gazdálkodjon az ember a CPU-cache területtel. Ellentétben a virtuális memória kezeléssel, ahol ugye megmondhatom egy memóriaterületről, hogy ezt sose swappeld ki, kedves oprendszer. Jó volna hasonló a CPU cache-re, legalább a legkülsőre, de nincs ilyen tudtommal.

Ellenszerem:
a) néhány core-t kiszedek a scheduler hatálya alól az "isolcpus" kernel paraméterrel. (Pl. "isolcpus=1,3" az 1-es és 3-as core-t úgy állítja be, hogy a Linux nem ad ki rá semmit magától. Egy 4 core-os gépen marad az oprendszernek a 0 és 2 sorszámú.)
b) A védendő programot "schedtool"-lal futtatom. (Pl. "schedtool -a 3 -e ./szamolosprogram" a 3-as core-on futtatja a szamolsoprogram-ot.)

Persze, hogy ez hatásos legyen, meg kell nézni, melyik core-ok osztoznak a cache-eken, de ez a /sys/devices/system/cpu/ -ből kideríthető.

A programírás része már kicsit összetettebb, ezt most nem tudnám egy fórum-hozzászólásban összefoglalni. De baromira nem mindegy pl. a memóriaműveletek sorrendje sem. Nem csak az számít, hogy a használt adatok férjenek bele a cache-be.

Ez érdekelne. Tudsz valamit linkelni, hogy hogyan kell értelmezni amit itt találok:

> meg kell nézni, melyik core-ok osztoznak a cache-eken, de ez a /sys/devices/system/cpu/ -ből kideríthető

Szerk. Találtam egy ilyet:


$ cat /sys/devices/system/cpu/cpu0/cache/index3/shared_cpu_list 
0-3

Ez azt jelenti, hogy a legkülső (0-3-ig indexelve a 3-as) szintű cache az összes mag között osztva van? Ennél lenne jobb, ha ez a külső cache magonként, vagy legalább kettesével külön lenne?

Ha találomra rákeresek egy CPU-ra, akkor honnan látom, hogy milyen a cache topológiája? Nem találok ilyen információt sehol.

"Ez azt jelenti, hogy a legkülső (0-3-ig indexelve a 3-as) szintű cache az összes mag között osztva van?"

Igen. Ez tényleg jobb lenne, ha külön volna, legalább kettesével. Pl. az én desktop gépemben 4 Core2-es mag van, ez csak 2 szintű cahce-elésű, de a legkülső is 2-2 core közt oszlik:

cat /sys/devices/system/cpu/cpu0/cache/index2/shared_cpu_list

nálam "0,2"-t ad válaszul, ugyanez "cpu1"-gyel meg "1,3"-t.

Az 1 és 3-as core-t szedem le az oprendszerről, ezeken csak expilcite kézzel indítok programot.

Köszönöm a jótanácsot. Én is arra jutottam, hogy erős CPU, sok ram, mert most az az olcsó, integrált vga-val első körben. Utána majd veszek egy nvidia-kártyát valami erős-közepset. Tudsz olyan cpu-t ajánlani, ami jó árban van, és szerarált a cache?

------
3 fajta matematikus létezik. Aki tud számolni, és aki nem.

Sajnos, nem vagyok otthon a ma kapható konkrét procikban. De elvileg a gyártó (Intel, AMD) honlapján rajt kell legyen a cache-struktúra is.

A RAM-ból meg nem a *sok*, hanem inkább a *gyors* a lényeg. (No persze annyi legyen, mint a problémáid igénye + 1GB a rendszernek, ha ez lesz a desktopod is.)

Kb. 1 éve vettem utoljára gépet, akkor jelentős árkülönbözet volt a DDR2 és DDR3 közt, de én utóbbi mellett döntöttem és nem bántam meg. Főleg a nagy képeid feldolgozásánál lehet ez a kritikus.

Amiket írsz, hogy csinálsz, azok erősen GPU-n optimalizálhatónak tűnnek. Ezeket a számításokat te programozod, vagy meglévő libekkel csináltatod? Miket használsz?

OpenCL-t már belépő szintű kártyák is szokták támogatni, de könnyű a korlátaikba ütközni (például túl kevés lokálisan foglalható memória). Ezért megfontolandó a komoly GPU.

Vegyesen. A képanalízisnél az opencv-t használom előszeretettel. A diffegyenelet megoldásokat magam írom. Általában elég egy RK4, amit azért lekódolni nem túl durva. Lévén nem programozó vagyok, hanem fizikus, így csak C,Cpp-nem tudok programozni + egy kis assembly. Eddig simán cpu-ra írtam a kódokat, a gpu-t nem tudtam eddig használni, részben lustaság, részben anyagi háttér, a jelenlegi kártyám nem támogatja, a cégesen esélytelen, mert integrált intel, amit most veszek az biztosan fogja. Majdf most megtanulom, ha szükséges.

------
3 fajta matematikus létezik. Aki tud számolni, és aki nem.

Up.
------
3 fajta matematikus létezik. Aki tud számolni, és aki nem.

Szia!

A csomag az eclipse-sdk, ha a cdt nincs alapból benne, akkor a beépített csomagkezelőjével kell feltenni.

A legfrissebb sajnos csak 3.5.1, amikor a 3.7 is már kijött, viszont ha simán kicsomagolod a hivatalosat egy könyvtárba a ~-ban, minden faragás nélkül elindul és működik.

Ajánlom mellesleg az app-portage/eix csomagot, iszonyat jól és gyorsan lehet keresni a portage tartalmát.

köszönöm. Az eix nem ismerem, én az equery-t használtam eddig, bár én simán find -el szoktam a portageben keresni (bocsánat :)). Megszoktam. Szerintem akkor csinálok egy saját ebuild-et amit bepakolok a portagem-be. Azért kérdeztem hogy van e már valamelyik overlay-ban vagy mágába a portage-ban eclipse-cdt, mert meg akartam úszni a karbantartását. Köszönöm, a segítséget.

------
3 fajta matematikus létezik. Aki tud számolni, és aki nem.

Az eix képes a layman overlayek között is keresni, most kipróbáltam, és a seden és flora overlayekben van 3.7-es eclipse is. (Általában ezt nem kapcsolom be mert rengeteg találat van.) Hogy ezek felrakják-e a cdt támogatást is, már nem tudom.

És ha már reklámozom a programot, az eix képes egy parancsra syncelni a portage fát a laymanos overlayekkel együtt, és a végén összegezni, hogy mi frissült/került be/lett kidobva. :)

Na jó rábeszéltél. Felpakolom. Köszönöm a jótanácsot. OLvastam a leírásét, és tetszetősnek tűnik. Az eclipse-sdk-nak kifejezetten örülök, mert már ígyis egész nagy az overlay-om, nincs kedvem tovább duzzasztani.

------
3 fajta matematikus létezik. Aki tud számolni, és aki nem.