Język do programowania na superkomputerach

0

Mam wątpliwości co do kategorii forum, ale nie bardzo wiedziałem gdzie to umieścić...
Do rzeczy, pytanie bardziej ogólne. Oglądałem program o superkomputerach (kilkaset procesorów, TB RAM itd...) tematy dla mnie czysto teoretyczne. Zastanowiła mnie jednak wypowiedź gościa, który stwierdził, że do programowania na takich maszynach uzywa się głównie C i Fortran. Nie wiem czemu ten ostatni mocno mnie zaskoczył.
Dlatego zadaje pytanie, może ktoś miał styczność z programowaniem na takie maszyny i podzieli się doświadczeniem. Nie chce jakiś szczegółów mega technicznych, ale dowiedzieć się więcej jak bardzo różni się to od "normalnego" programowania?

3

Z takich maszyn korzystają naukowcy, ludzie zajmujący się fizyką/chemią/... komputerową, obliczeniami i symulacjami. C i Fortran są dla nich wystarczająco proste i niegdyś powszechnie nauczane. Korzysta się z OpenMP i OpenMPI, mające świetne wsparcie w owych językach.

Myślę, że to kwestia przyzwyczajenia, pragmatyzmu i dostępności sprawdzonych narzędzi.

0

Od paru lat domowe komputery posiadają procesory wielordzeniowe – aby wykorzystać ich pełną moc programy w C, C++ należy pisać z wykorzystaniem OpenMP bo inaczej nasz program będzie korzystał tylko z jednego rdzenia.
http://www.embedded.com/desig[...]multicore-applications-Part-1

2

Używa się C/C++/Fortran.
Fortran to w sumie mogę tylko gdybać - pewnie ze względu na liczbę kodu który już jest w tej dziedzinie napisany.
C - ponieważ do tego najłatwiejszego do optymalizacji kodu wykorzystuje się głównie tablice i pętle. Taki kod można przyspieszyć na tej samej maszynie nawet 100x odpowiednio rekonfigurując i zrównoleglając kod.
C++, Python - też się stosuje - ale to już naprawdę trzeba się wysilić żeby zoptymalizować pod cluster. Im więcej klas tym będzie trudniej.
Intel ostatnio promuje swoją dystrybucję Pythona zrobioną pod tym kątem: https://software.intel.com/en-us/intel-distribution-for-python

Jakie rozwiązania poza językami?

1) OpenMP - podstawa dla Fortran / C:

2) MPI (Intel MPI, OpenMPI, ETH MPI) - przetwarzanie na wielu kompach

3) Przetwarzanie na GPU lub mieszane:

  • OpenACC
  • OpenCL
  • CUDA

4) Intel TBB, Cilk

  • Cilk został wciągnięty przez Intela, fajnie wspiera przetwarzanie całych tablic w kompilatorze C/C++ (bez dodatkowych dyrektyw)
  • Intel TBB - tego jeszcze dobrze nie poznałem, ale wielowątkowa pula pamięci wygląda obiecująco

Jak interesuje Cię ta tematyka to Colfax prowadzi darmowe wykłady z 2-tygodniowym dostępem do prawdziwego (chociaż minimalnego) clustra zawierającego Xeon E5 i Xeon Phi.
Jest jeszcze otwarta rejestracja na maj.

Możesz też się tym pobawić w domu na PC lub na Raspberry Pi:

0

Używa się przede wszystkim Fortrana i C w wersjach rozszerzonych, umożliwiających zrównoleglenie obliczeń i wielowątkowość. Na superkomputerach Cray wykorzystuje się również język Chapel.

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0