در این مقاله یک روش آسان برای استفادهی بهینه از پردازندههای چندهستهای در برنامههای پردازشی ارائه میکنیم. کد زیر را در نظر بگیرید:
این کد یک حلقهی ساده است که در اکثر برنامههای پردازشی یافت میشود. با اجرای این کد ملاحظه میکنیم که تنها از توان یک هستهی پردازنده استفاده شده و سه پردازندهی دیگر بیکار میمانند. در این حالت اجرای برنامه ۱۰.۶۰ ثانیه زمان میبرد. برای استفاده از چند هسته باید برنامه را به صورت زیر تغییر دهیم:
با این تغییر نصف حلقهی four در یک رویه و نیمهی دیگر آن در رویهی دیگر اجرا میشود. با توجه به اینکه عملیات این دو رویه کاملا از هم مستقل است، سیستم عامل، هر کدام از حلقهها را به صورت خودکار به یکی از هستههای پردازنده میسپارد. به این ترتیب از توان دو هسته به خوبی استفاده میکنیم! و زمان اجرای برنامه به حدود نصف، ۵.۴۸ ثانیه، کاهش مییابد. به همین ترتیب اگر به جای دو رویه از چهار رویه استفاده کنیم، زمان اجرای برنامه به ۲.۸۳ ثانیه میرسد که ۴ بار کمتر از زمان اجرای اولیه است!
کد این برنامه را از اینجا دریافت کنید.
نکتهای که باید توجه داشته باشیم این است که انجام این کار همیشه ساده نیست ، چرا که خیلی اوقات عملیات داخل حلقه به نتایج قبلی پردازش شده در حلقه وابسته است. البته از این هم که بگذریم مدیریت منابع بین رویهها هم ،همیشه کار آسانی نیست. در همین مثال هم برای سادگی متغیرها را سراسری تعریف کردهام. در قسمت بعدی راه سادهتری برای استفاده از چند هسته را بیان خواهیم کرد.
—————————————————————————————————————————————————————————–
In this paper, a simple approach to efficient use of several cores of the processor is escribed. Consider the following code:
This is a simple “for” loop which is frequently used in processing applications.
After running this code, we will see that only one core of the CPU is involved and other three cores were not affected. In this case the execution time is 10.60 seconds. To use the power of two cores we should change the program as follows:
Here we used two threads where each of them is responsible for the half part of the loop. Since these two threads are completely independent, OS sends each of them to specific core of the processor. In this way we used the power of two processors and the execution time is reduced from 10.6 to 5.48 sec. This procedure can be repeated with 4 threads and as expected the execution time will be reduced to 2.83 sec.
Download VC Code
It is important to know that this process is not always so simple. we should share resources carefully within all threads, on the other hand some times the body of “for” loop is not independent from one index to another. In the next part I will introduce a simpler way to use several cores of the processor.
سلام اگه میشه تفاوت سیستم های چند هسته ای از نظر اجرا با یک سیستم چند پردازنده و مقایسه اونها را واسم بگید
با تشکر از جنابعالی