MPI
MPI (Message Passing Interface) je standard za čije je korištenje potrebno imati neku implementaciju. U izvorniku standard definira sintaksu za Fortran i C, no danas postoje implementacije koje podržavaju C++, Javu, python... pa čak i C# ;).
Daljnje informacije:
- preporučene interne upute za postavljanje okoline MPI
- MPI standard: http://www.mpi-forum.org/
Korisni linkovi:
- MPI implementacije: MPICH (http://www.mpich.org/), MS-MPI (https://docs.microsoft.com/en-us/message-passing-interface/microsoft-mpi), Open MPI (https://www.open-mpi.org/)
- postavljanje MSMPI za Visual Studio: https://docs.microsoft.com/en-us/archive/blogs/windowshpc/how-to-compile-and-run-a-simple-ms-mpi-program
- MPI Tutorial (http://www.mcs.anl.gov/mpi/tutorial/, https://rookiehpc.org/mpi/index.html)
- "Designing and Building Parallel Programs", I. Foster, Addison-Wesley (online) (http://www.mcs.anl.gov/~itf/dbpp/)
- High Performance Computing Training (https://hpc.llnl.gov/training/tutorials)
- "Introduction to Parallel Computing: 6", *, Addison-Wesley (https://www.cs.purdue.edu/homes/ayg/book/Slides/chap6_slides.pdf)
OpenCL/CUDA
Kako biste upogonili neki OpenCL/CUDA program, dovoljno je imati instalirane ažurne drivere grafičke kartice (ili specijalizirane pomoćne programe za druge vrste uređaja).
Za potrebe izrade OpenCL programa, moguće je instalirati cjelokpuno razvojno okruženje koje nudi odgovarajući proizvođač, npr:
- AMD APP SDK,
- Nvidia OpenCL,
- Intel SDK, ...
Ovaj pristup se preporuča jer se u okruženju nalaze gotovi projekti s preko nekoliko primjera korištenja.
Alternativno, moguće je uz postojeće drivere iskoristiti samo minimalni paket programskih datoteka i statičkih biblioteka dostupnih ovdje (pripremljeno za 64-bitno okruženje) ili putem OpenCL SDK projekta (https://github.com/KhronosGroup/OpenCL-SDK).
U repozitoriju su pripremljeni i neki primjeri s predavanja uz minimalni host program.
Korisni linkovi:
- OpenCL wrapper sa značajno pojednostavljenom uporabom: https://github.com/ProjectPhysX/OpenCL-Wrapper; dodatno pojašnjenje ovdje: https://stackoverflow.com/questions/56858213/how-to-create-nvidia-opencl-project/
- postavljanje OpenCL-a u Visual Studiu: https://medium.com/@pratikone/opencl-on-visual-studio-configuration-tutorial-for-the-confused-3ec1c2b5f0ca
Reference:
- OpenCL specifikacija: https://www.khronos.org/registry/OpenCL/specs/3.0-unified/html/OpenCL_API.html
- OpenCL Guide s odjeljkom "Getting started": https://github.com/KhronosGroup/OpenCL-Guide
- CUDA Programming guide: https://docs.nvidia.com/cuda/cuda-c-programming-guide/index.html
- AMD ROCm OpenCL guide: https://rocmdocs.amd.com/en/latest/Programming_Guides/Opencl-programming-guide.html