Download - Contemporary Languages in Parallel Computing
![Page 1: Contemporary Languages in Parallel Computing](https://reader035.vdocuments.us/reader035/viewer/2022062218/56816335550346895dd3c052/html5/thumbnails/1.jpg)
Contemporary Languages in Parallel ComputingRaymond Hummel
![Page 2: Contemporary Languages in Parallel Computing](https://reader035.vdocuments.us/reader035/viewer/2022062218/56816335550346895dd3c052/html5/thumbnails/2.jpg)
Current Languages
![Page 3: Contemporary Languages in Parallel Computing](https://reader035.vdocuments.us/reader035/viewer/2022062218/56816335550346895dd3c052/html5/thumbnails/3.jpg)
Standard Languages• Distributed Memory Multiprocessors
MPI
• Shared Memory Multiprocessors OpenMP pthreads
• Graphics Processing Units CUDA OpenCL
![Page 4: Contemporary Languages in Parallel Computing](https://reader035.vdocuments.us/reader035/viewer/2022062218/56816335550346895dd3c052/html5/thumbnails/4.jpg)
MPI• Stands for: Message Passing Interface• Pros
Extremely Scalable Portable Can harness a multitude of hardware setups
• Cons Complicated Software Complicated Hardware Complicated Setup
![Page 5: Contemporary Languages in Parallel Computing](https://reader035.vdocuments.us/reader035/viewer/2022062218/56816335550346895dd3c052/html5/thumbnails/5.jpg)
MPI
![Page 6: Contemporary Languages in Parallel Computing](https://reader035.vdocuments.us/reader035/viewer/2022062218/56816335550346895dd3c052/html5/thumbnails/6.jpg)
OpenMP• Stands for: Open Multi-Processing• Pros
Incremental Parallelization Fairly Portable Simple Software
• Cons Limited Use-Case
![Page 7: Contemporary Languages in Parallel Computing](https://reader035.vdocuments.us/reader035/viewer/2022062218/56816335550346895dd3c052/html5/thumbnails/7.jpg)
OpenMP
![Page 8: Contemporary Languages in Parallel Computing](https://reader035.vdocuments.us/reader035/viewer/2022062218/56816335550346895dd3c052/html5/thumbnails/8.jpg)
POSIX Threads• Stands for: Portable Operating System Interface Threads• Pros
Portable Fine Grained Control
• Cons All-or-Nothing Complicated Software Limited Use-Case
![Page 9: Contemporary Languages in Parallel Computing](https://reader035.vdocuments.us/reader035/viewer/2022062218/56816335550346895dd3c052/html5/thumbnails/9.jpg)
POSIX Threads
![Page 10: Contemporary Languages in Parallel Computing](https://reader035.vdocuments.us/reader035/viewer/2022062218/56816335550346895dd3c052/html5/thumbnails/10.jpg)
CUDA• Stands for: Compute Unified Device Architecture• Pros
Manufacturer Support Low Level Hardware Access
• Cons Limited Use-Case Only Compatible with NVIDIA Hardware
![Page 11: Contemporary Languages in Parallel Computing](https://reader035.vdocuments.us/reader035/viewer/2022062218/56816335550346895dd3c052/html5/thumbnails/11.jpg)
CUDA
![Page 12: Contemporary Languages in Parallel Computing](https://reader035.vdocuments.us/reader035/viewer/2022062218/56816335550346895dd3c052/html5/thumbnails/12.jpg)
OpenCL• Stands for: Open Compute Language• Pros
Portability Heterogeneous Platform Works with All Major Manufacturers
• Cons Complicated Software Special Tuning Required
![Page 13: Contemporary Languages in Parallel Computing](https://reader035.vdocuments.us/reader035/viewer/2022062218/56816335550346895dd3c052/html5/thumbnails/13.jpg)
![Page 14: Contemporary Languages in Parallel Computing](https://reader035.vdocuments.us/reader035/viewer/2022062218/56816335550346895dd3c052/html5/thumbnails/14.jpg)
Future Languages
![Page 15: Contemporary Languages in Parallel Computing](https://reader035.vdocuments.us/reader035/viewer/2022062218/56816335550346895dd3c052/html5/thumbnails/15.jpg)
Developing Languages• D • Rust• Harlan
![Page 16: Contemporary Languages in Parallel Computing](https://reader035.vdocuments.us/reader035/viewer/2022062218/56816335550346895dd3c052/html5/thumbnails/16.jpg)
D• Performance of Compiled Languages• Memory Safety• Expressiveness of Dynamic Languages• Includes a Concurrency Aware Type-System• Nearing Maturity
![Page 17: Contemporary Languages in Parallel Computing](https://reader035.vdocuments.us/reader035/viewer/2022062218/56816335550346895dd3c052/html5/thumbnails/17.jpg)
Rust• Designed for creation of large Client-Server Programs on the Internet• Safety• Memory Layout• Concurrency• Still Major Changes Occurring
![Page 18: Contemporary Languages in Parallel Computing](https://reader035.vdocuments.us/reader035/viewer/2022062218/56816335550346895dd3c052/html5/thumbnails/18.jpg)
Harlan• Experimental Language• Based on Scheme• Designed to take care of boilerplate for GPU Programming• Could be expanded to include automatic scheduling for both CPU and
GPU, depending on available resources.
![Page 19: Contemporary Languages in Parallel Computing](https://reader035.vdocuments.us/reader035/viewer/2022062218/56816335550346895dd3c052/html5/thumbnails/19.jpg)
Questions?