Logo 
Search:

C Programming Articles

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

Program to overcome forward dependency using block scheduling.

Posted By: Easy Tutor     Category: C Programming     Views: 2720

Write a program to overcome forward dependency using block scheduling (Copy arr[i+1] to arr[i] )

Code for Program to overcome forward dependency using block scheduling. in C Programming

# include <stdio.h>
# include "/usr/include/sys/types.h"
# include "/usr/include/sys/shm.h"
# include "/usr/include/sys/ipc.h"
# include "/usr/include/sys/sem.h"
# include "forkjoin.h"
# include "sharedlib.h"
# include "spinlock.h"
# include "barrier.h"int main()
{
    // Note that Array Starts from Base 1    int arrSize=9;
    int *arr;
    int arrold[9];            // For Holding boundary Cellsint id;                // Process Identificationint nProc=3;            // Number of Processesint *bararr;            // Barrier Array        int shmidbararr,shmidarr;    // Shmid For Shared Variablesint blocksize = arrSize/nProc;    // Calculating Block Sizeint index,iCount;
    
    arr=(int*)sshared(sizeof(int)*10,&shmidarr);
        
    printf("Original Array ...\n");
    for(iCount=1;iCount<=arrSize+1;iCount++)
    {
        arr[iCount]=iCount;        // Assignning Array Values
        printf("arr[%d] : %d\n",iCount,arr[iCount]);
    }
    bararr=(int*)sshared(sizeof(int)* 4,&shmidbararr);
    
    
    barrier_init(bararr,nProc); // Initialize Barrier Array
    
    id=process_fork(nProc); //Forking Process
    
    arrold[id]=arr[blocksize * (id+1) + 1]; // Copying Boundary Values
    
    barrier(bararr);    // Calling Barrier
    
    index=id * blocksize;    // Calculating Start Index for Each Blockfor(iCount=1;iCount<blocksize;iCount++)
    {
        arr[index+iCount]=arr[index + iCount + 1];
    }

    arr[blocksize*(id+1)] = arrold[id];    //Assigning Boundary Values
    
    process_join(nProc,id);     // Joining Process
    
    printf("After Copy ...\n");
    for(iCount=1;iCount<=arrSize;iCount++)
    {
        printf("arr[%d] = %d\n",iCount,arr[iCount]);
    }
    cleanup_memory(&shmidbararr);
    cleanup_memory(&shmidarr);
    return 0;
}
  
Share: 



Easy Tutor
Easy Tutor author of Program to overcome forward dependency using block scheduling. is from United States. Easy Tutor says

Hello Friends,

I am Free Lance Tutor, who helped student in completing their homework.

I have 4 Years of hands on experience on helping student in completing their homework. I also guide them in doing their final year projects.

I have share many programs on this website for everyone to use freely, if you need further assistance, than please contact me on easytutor.2ya [at the rate] gmail [dot] com

I have special discount scheme for providing tutor services. I am providing tutor service to students from various contries, currently most of my students are from United States, India, Australia, Pakistan, Germany, UK and Canada.

I am also here to expand my technical network to receive more opportunity in my career, make friends to help them in resolving their technical problem, learn and share my knowledge, If you like to be my friend, Please send me friend request.

Thanks,
Happy Programming :)

 
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!