Logo 
Search:

C Programming Articles

Submit Article
Home » Articles » C Programming » Parallel Processing ProgramsRSS Feeds

Program for block scheduling technique to solve following expression x[i]=x[i+1]

Posted By: Benjamin Bouchard     Category: C Programming     Views: 1376

Program for block scheduling technique to solve following expression x[i]=x[i+1].

Code for Program for block scheduling technique to solve following expression x[i]=x[i+1] in C Programming

#include<stdio.h>
#include "shared.h"
#include "forkjoin.h"
#include "barrier.h"int main()
{
        int  *x, nproc, pid, *imin, *imax, *bar, *xsave, step, npts, i, size;
        int sh1, sh2, sh3, sh4, sh5;

        printf("Enter the size of the array :: ");
        scanf("%d",&size);

        printf("Enter the total number of processes :: ");
        scanf("%d", &nproc);

        x=(int *)create_memory(2*size, &sh1);
        imin=(int *)create_memory(2*nproc, &sh2);
        imax=(int *)create_memory(2*nproc, &sh3);      
        bar=(int *)create_memory(4*2, &sh4);
        xsave=(int *)create_memory(2*nproc, &sh5);

        barrier_init(bar, nproc);

        npts = (size/nproc);
        step = size%nproc;

        for(i=0;i<size;i++)
                x[i] = i+1;

        pid = create_process(&nproc);

        if(step==0)
        {
                imin[pid]=pid*npts;
                imax[pid]=imin[pid]+npts-1;
        }
        elseif(pid<step)
        {
                imin[pid]=pid*(npts+1);
                imax[pid]=imin[pid]+npts;
        }                              
        else
        {
                imin[pid]=pid*npts+step;
                imax[pid]=imin[pid]+npts-1;
        }
        xsave[pid]=x[imax[pid]+1];
        barrier(bar);

        for(i=imin[pid];i<imax[pid];i++)
                x[i]=x[i+1];

        if(i!=size-1)
                x[i] = xsave[pid];

        join_process(&nproc, &pid);

        printf("\nThe resultant array is :: ");
        for(i=0;i<size;i++)
                printf("\n%d",x[i]);

        cleanup_semaphore(&bar[3]);
        cleanup_memory(&sh1);
        cleanup_memory(&sh2);           
        cleanup_memory(&sh3);
        cleanup_memory(&sh4);
        cleanup_memory(&sh5);
        printf("\n");
        return 0;
}                          


/* OUTPUT */
Enter the size of the array :: 12 Enter the total number of processes :: 5 The resultant array is :: 2 3 4 5 6 7 8 9 10 11 12 12
  
Share: 



Benjamin Bouchard
Benjamin Bouchard author of Program for block scheduling technique to solve following expression x[i]=x[i+1] is from Montreal, Canada.
 
View All Articles

Related Articles and Code:


 
Please enter your Comment

  • Comment should be atleast 30 Characters.
  • Please put code inside [Code] your code [/Code].

 
No Comment Found, Be the First to post comment!