본문 바로가기

Study/서울대 천둥을 이용한 병렬처리

스터디 문제

다음 코드의 결과를 쓰시오

#include<stdio.h>

#include<omp.h>


int main()

{

#pragma omp parallel num_threads(4)

        {

                printf("Hello World!\n");

        }

        return 0;

}


 

다음 코드의 결과를 쓰시오




#include<stdio.h>

#include<omp.h>


int main()

{


        int x=0;

        printf("main area x: %d\n",x);

        omp_set_num_threads(2);

#pragma omp parallel private(x)

        {

                if(omp_get_thread_num()==0)

                        x=1;

                else

                        x=2;

                printf("Num %d thread area x : %d\n",omp_get_thread_num(),x);

        }

        printf("main area x: %d\n",x);

        return 0;

}


 

다음 코드의 결과를 쓰시오


#include<stdio.h>

#include<omp.h>


int main()

{

        omp_set_num_threads(2);

#pragma omp parallel

        {

#pragma omp sections

                {

#pragma omp section

                        {

                                printf("first work:%d thread\n",omp_get_thread_num())    ;

                        }


#pragma omp section

                        {

                                printf("second work:%d thread\n",omp_get_thread_num()    );

                        }


#pragma omp section

                        {

                                printf("third work:%d thread\n",omp_get_thread_num())    ;

                        }

                }

        }

}

 

 

다음 코드의 문제점을 체크하고 수정하시오


#include<stdio.h>

#include<omp.h>


int main()

{

        int count=0;

#pragma omp parallel num_threads(10)

        {

                count++;

        }

        printf("The number of threads : %d\n",count);

        return 0;

}



다음 코드의 문제를 서술하고 수정하시오


#include<stdio.h>

#include<omp.h>


int main()

{

        const int MAX = 1000;

        float* Data;

        Data=(float*)malloc(sizeof(float)*MAX);


        int i=0;

        for(i=0;i<MAX;i++)

                Data[i]=i;


        float max=0;


#pragma omp parallel for

        for(i=0;i<MAX;i++)

        {

                if(max<Data[i])

                        max=Data[i];

        }


        printf("max value: %.3f\n",max);


        delete Data;


}



 


다음 코드를 아래 결과가 나오도록 수정하시오



#include<stdio.h>

#include<omp.h>


int main()

{

        int i=0;


#pragma omp parallel

        {

#pragma omp for

                for(i=0;i<10;i++)

                {

                        printf("%d ",i);

                }

        }

        return 0;

}


// 0 1 2 3 4 5 6 7 8 9


 

 

 

다음 코드의 결과를 쓰시오

#include<stdio.h>

#include<omp.h>


int A[2]={1,1};


#pragma omp threadprivate(A)


int main()

{

        A[1]=2;

#pragma omp parallel num_threads(4)

        {

                printf("%d %d\n",A[0],A[1]);

        }

        printf("\n");

        A[0]=3;

#pragma omp parallel num_threads(4)

        {

                A[1]=4;

                printf("%d %d\n",A[0],A[1]);

        }

        printf("\n%d %d\n",A[0],A[1]);

        return 0;

}

 


 

다음 코드의 결과를 쓰시오


 

#include<stdio.h>

#include<omp.h>


int main()

{

        float A[5]={1,2,3,4,5};

        printf("thread:%.1f %.1f %.1f %.1f %.1f\n",A[0],A[1],A[2],A[3],A[4]);

#pragma omp parallel private(A)

        {

                A[0]=7;A[1]=7;


                printf("thread:%.1f %.1f %.1f %.1f %.1f\n",A[0],A[1],A[2],A[3],A[4]);

        }


        printf("thread:%.1f %.1f %.1f %.1f %.1f\n",A[0],A[1],A[2],A[3],A[4]);

        return 0;

}

'Study > 서울대 천둥을 이용한 병렬처리' 카테고리의 다른 글

스터디문제3  (0) 2013.10.02
스터디문제2  (0) 2013.10.02
13.09.30 스터디 준비  (0) 2013.09.30
끄적끄적  (0) 2013.09.26
13. 09. 25 스터디 문제  (0) 2013.09.25