Java and Parrallel Programming

Член од
28 мај 2008
Мислења
3.966
Поени од реакции
4.073
Ја отварам оваа тема за да видам дали некој се чепка по оваа тема.
Имено, со новите процесори(MultiCore) паралелизмот е се поглавна тема. Прашањето е како да ги паралелизираме постојните програми и тоа во Јava???
Како прво малку запознавање со паралелно програмирање односно некои концепти.
Постојат два концепти за паралелизам и тоа:
1. ShareMemory- Овој концепт е базиран така да многу процесори користат една заедничка меморија. Овој принцип "смрди" во пракса и многу ретко е имплементиран. Причината е тоа што ретко може да се најде проблем кој што нема независни инструкции. Таков е на пример проблемот на собирање на матрици каде нема никаква зависност.
Во овој концепт се користат методи кои ако наиде на некоја зависна операција треба да се чека на неа како на пример, lock и unlock, за да може да се обезбеди конзистентност на системот.
2. Мessage-Passing Interface- Овој концепт е базиран така што се во системот се креираат повеќе процеси со сопствена меморија и процесите комуницираат меѓусебе за размена на податоци. Овде процесите може да се креираат и на едно процесорска машина. Инаку ако се креираат на повеќе процесори тогаш процесите се делат на колку процесори има, тоа е во зависност од реалната имплементација.
Во пракса многу се применува овој концепт и има свои реализации како MPI но претежно ова е во C или C++.
За Јava има некои имплементации како на пример Green Tea(имплементација е еден слој на RMI), но нема нешто посериозно.
Ако може некој да ми каже повеќе за некои имплементации во библиотеки кои се доста конзистентни и се во поголема примена.

Чекам пораки....

:bilokojzbor:
 

back_rest

ex mod coder
Член од
19 јули 2006
Мислења
1.590
Поени од реакции
106
Паралелното програмирање почнува да се најавува на голема врата. Java сега засега е потенцијален лидер поради тоа што има супериорен систем за нитки, message-passing како и compiler во развој (додуша не знам до каде, можно е и да има нешто готово веќе) кој од обични линеарни кодови ќе бара паралелизам и како таков ќе го имплементира.
Сега засега програмирањето се засновува на друг концепт, нешто како втора димензија на досегашното програмирање. Бара многу тупење, рачно пронаоѓање на паралелизам, имплементирање и кубење коси при дебагирање. Има многу фрки. Како што знае multi-thread апликација да тргне лошо, никој друг неможе да и парира.

А од Microsoft дури пред една недела излегоа со изјавата: паралелното програмирање е иднината. Еурека! :)
 
Член од
28 мај 2008
Мислења
3.966
Поени од реакции
4.073
Multi-thread во сегашната смисла нема п од паралелизам. Се прашувате зошто. Па со досегашната имплементација на JVM таа се извршува на едно јадро или еден процесор и кога ќе кажете
креирај нова нишка таа нишка се креира на тој ист процесор што значи имаме пак симулација на паралелизам како во еднојадрените процесори.
На пример во Erlang со командата spawn нов процес се креира на некој нов слободен процесор.
 

Kajgana Shop

На врв Bottom