Hybrid programming
මොකක්ද මේ hybrid programming කියන්නෙ ?programming languages වල එකතුවක් කියල සරලව කියන්න පුලුවන්.ඒ කියන්නෙ parallel programming model combining වෙලා තමා හැදෙන්නෙ.
OpenMP කියන්නෙ මොකක්ද කියලා අපි ඉලගට බලමු. multithreaded shared memory parallelization සදහා පාවිච්චි කල හැකි API එකක්.උදා :
• Fortran 77/9X and C/C++ are supported.
එක් වරකදී වැඩසටහනේ එක් කොටස සමාන්තරකරණයට ඉඩ සලසයිopenMP වලදි
OpenMP API එක අවයවයන් 3 කින් සැදි තියේ.
1)Compiler directives(සංයුක්තකාරක නියෝග)
• Expresses shared memory parallelization(හවුල් මතක සමාන්තරකරණය ප්රකාශ කරයි)
• Preceded by sentinel, can compile serial version(පෙරවදන විසින් පූර්වාපේක්ෂීව අනුවර්තිත අනුවාදයක් සම්පාදනය කළ හැකිය)
2)Runtime library routines (Runtime පුස්තකාල නිත්ය පිළිවෙත)
• Small number of library functions.
Example: get number of threads, get rank of thread..
• Can be discarded in serial version via conditional compiling (සම්පිණ්ඩන සම්පාදනය හරහා අනුක්රමික අනුවාදයෙන් බැහැර කළ හැක)
3)Environment variables (පාරිසරික විචල්යයන්)
• Bind threads to cores .
• Specify number of threads.
A simple OpenMP program:F95
PROGRAM demo1
USE omp_lib
INTEGER::omp_rank
!$omp parallel private(omp_rank)
omp_rank=omp_get_thread_num()
WRITE(*,*) "thread is ",omp_rank
!$omp end parallel
END PROGRAM demo1
>export OMP_NUM_THREADS=2
>ftn -mp demo1.f95
>aprun -n 1 ./a.out
thread is 0
thread is 1
A simple OpenMP program: C
#include <stdio.h>
#include "omp.h“
int main(int argc,char *argv[])
{
int omp_rank;
#pragma omp parallel private(omp_rank)
{
omp_rank=omp_get_thread_num();
printf("thread is %d\n",omp_rank); } }
>export OMP_NUM_THREADS=2
>cc -mp demo1.c
>aprun -n 1 ./a.out
thread is 0
thread is 1
අපි ඉදිරියෙදි තවත් ලිපියකින් OpenMP ගැන කතා කරමු.ඉලග ලිපියෙන් ඉදිරියෙදි හමුවෙමු.
(OpenMP in detail) සමග....
No comments:
Post a Comment