Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define N 6000
- #define M 3000
- #define P 1000
- int A[N][M];
- int B[M][P];
- int C[N][P];
- typedef struct {
- int threadNum;
- int maxThreads;
- } multParam
- void *multiplier(void *param){
- int i,j,k, currentRow = 0;
- multParam *threadData = (multParam *) (param);
- for(i = threadData->threadNum; i < N; i+= threadData->maxThreads){
- for(j = 0; j < P; j++){
- C[i][j] = 0;
- for(k = 0; k < M; k++){
- C[i][j] += A[i][k] * B[k][j];
- }
- }
- }
- return 0;
- }
- int main(){
- pthread_t tid[6];
- int i = 0;
- // creating array A
- for(int i = 0; i < N-1;i++){
- for(int j = 0; j < M-1; j++){
- A[i][j] = i*j;
- }
- }
- // creating array B
- for(int i = 0; i < M-1; i++){
- for(int j = 0; j < P-1; j++){
- B[i][j] = i+j;
- }
- }
- for(i = 0; i < maxThreadCount; i++){
- paramArray[i] = malloc(sizeof(multParam));
- }
- for(x = 1; x < 6; x++){
- for(i = 0; i < threadCount; i++){
- paramArray[i]->threadNum = i;
- paramArray[i]->maxThreads = threadCount;
- pthread_create(tid[i], &attr, multiplier, paramArray[i]);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement