با سلام!
توابعی که در محاسبات موازی به کار گرفته می شود باید این قابلیت را داشته باشند که بخشی از محاسبه را در محدوده ی تعیین شده انجام دهند. با توجه به مثال پست اول؛ تابع پویش گر اعداد اول طوری برنامه ریزی می شود تا اعداد را در یک بازه ی خاص بررسی کند. کد نویسی تابع بدین صورت است:
کلاس SimpleClass (شامل (NumScan بر روی هسته ی محاسباتی قرار می گیرد و با توجه به آرگومان تابع، اعداد طبیعی بین firstno و lastno را بررسی می کند. اعدادی که در این بین اول باشند در ArrayList تعریف شده وارد می شوند.کد:Imports System.Math Public Class SimpleClass Inherits MarshalByRefObject Dim adder As Boolean Public Function NumScan(ByVal firstno As Long, ByVal lastno As Long) As ArrayList Dim comparr As New ArrayList() comparr.Add(2) For i As Integer = 3 To Int(Sqrt(lastno)) adder = True For j As Integer = 0 To comparr.Count - 1 If Int(Sqrt(comparr(j))) >= i Then Exit For If i Mod comparr(j) = 0 Then adder = False Exit For End If Next If adder = True Then comparr.Add(i) Next For i As Long = firstno To lastno adder = True For j As Integer = 0 To comparr.Count - 1 If Int(Sqrt(comparr(j))) >= i And comparr(j) <> i Then Exit For If i Mod comparr(j) = 0 Then adder = False Exit For End If Next If adder = True Then NumScan.Add(i) Next End Function End Class
الگوریتم یافتن اعداد بر اساس غربال اراتستن است. در این روش برای بهبود سرعت پردازش، ابتدا یک حلقه برای یافتن مقسوم علیه های اول در نظر گرفته شده است. حلقه ی دوم عمل اصلی را انجام می دهد.
هسته ی اصلی می تواند با توجه به تعداد هسته های محاسباتی، بازه های تفکیک شده به دست آورد و سپس هر بازه را با توجه به رابطه ی زیر به یک محاسبه گر نسبت دهد:
[First, Last] => ScanNum(First As Long, Last As Long)
در نهات با ارسال دستور، محاسبات موازی آغاز می شوند. در ادامه در مورد نحوه ی تعامل هسته ها در شبکه بحث می کنیم.برای مشاهده این لینک/عکس می بایست عضو شوید ! برای عضویت اینجا کلیک کنید






پاسخ با نقل قول
Bookmarks