یکی از مشکل هایی که تو فعالیت های ریسرچ ام داشتم این بود که گاهی حجم محاسبات زیاد می شد و حتی وقتی روی دستگاه های قوی تر مثل 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:
میزان بهبود زمان عملکرد هم بسیار قابل توجهه :
امیدوارم بدبیاری های فعلی سریع تر تموم شه تا انشاءا… اگر متقاضی بود Workshop آشنایی با پردازش موازی و مفاهیم وابسته رو بتونم برگزار کنم…