NET 3.5. وپردازش موازی …

speedup یکی از مشکل هایی که تو فعالیت های ریسرچ ام داشتم این بود که گاهی حجم محاسبات زیاد می شد و حتی وقتی روی دستگاه های قوی تر مثل Xeon ها اجراشون می کردم، به دلیل اینکه برنامه ذاتا برای Parallel Computing (پردازش موازی) طراحی نشده بود، باز هم لنگ می زد و کند بود ولی NET 3.5. این مشک روحل کرده و برای پشتیبانی از پردازش موازی، دستورات جدیدی رو اضافه کرده مثلا :

   1: // حالت عادی
   2: for (int i = 0; i < 100; i++) 
   3: { 
   4:   a[i] = a[i]*a[i]; 
   5: }
   6:  
   7: // پشتیبانی از پردازش موازی
   8: Parallel.For(0, 100, delegate(int i) 
   9: { 
  10:   a[i] = a[i]*a[i]; 
  11: });
  12:  


یا :

   1: // حالت عادی
   2: void SeqMatrixMult(int size, double[,] m1, double[,] m2, double[,] result) 
   3: {
   4:   for (int i = 0; i < size; i++) {
   5:     for (int j = 0; j < size; j++) {
   6:       result[i, j] = 0;
   7:       for (int k = 0; k < size; k++) {
   8:         result[i, j] += m1[i, k] * m2[k, j];
   9:       }
  10:     }
  11:   }
  12: }
  13:  
  14:  
  15: // پردازش موازی
  16: void ParMatrixMult(int size, double[,] m1, double[,] m2, double[,] result)
  17: {
  18:   Parallel.For( 0, size, delegate(int i) {
  19:     for (int j = 0; j < size; j++) {
  20:       result[i, j] = 0;
  21:       for (int k = 0; k < size; k++) {
  22:         result[i, j] += m1[i, k] * m2[k, j];
  23:       }
  24:     }
  25:   });
  26: }
  27:  


میزان بهبود زمان عملکرد هم بسیار قابل توجهه :

fig02  

امیدوارم بدبیاری های فعلی سریع تر تموم شه تا انشاءا… اگر متقاضی بود Workshop آشنایی با پردازش موازی و مفاهیم وابسته رو بتونم برگزار کنم… Praying

دیدگاهتان را بنویسید