شما می توانید با ارسال ایمیل خود ، بصورت رایگان مشترک شده و از بروزسانی مطلع شوید.

ایمیل خود را وارد کنید:

بایگانی برای مرداد ۷م, ۱۳۸۷

کنکور و انتخاب رشته

۳ نظر

بازم نتایج کنکور آمد و بحث بسیار سخت انتخاب رشته. یادمه سال ۷۸ که با رتبه‏ی خوبی قبول شده بودم، اصلا نمی‏دونستم توی دانشگاه چه رشته‏هایی هست تا اینکه چشمم به دفترچه‏ی انتخاب رشته افتاد. قبلا اطلاعات اندکی از برخی از دانشگاه‏ها مثل تهران و امام صادق به دست آورده بودم ولی کلا میشه گفت صفر کیلومتر بودم طوری که فرق دانشگاه عباسپور و شریف رو نمی‏فهمیدم! و اگر کمک یک انسان شریف از دیار گرمسار نبود، شاید به جای شریف در عباسپور لیسانس می‏گرفتم. ماجراش خیلی جالبه، دانشگاه عباسپور آن زمان به صورت نیمه متمرکز دانشجو می‏گرفت و سر زبانها بود که اگر به این دانشگاه‏ها بروی حتما در آینده استخدام می‏شی…ما هم جوگیر شده و انتخاب ششم را برق عباسپور زدم (بماند که اول می‏خواستم انتخاب اول بزنمش!) و برای مصاحبه همراه برادرم رفتم تهران. مدارک مثبته را تحویل بخش مصاحبه دادم و چون یکی دو ساعتی طول می‏کشید که نوبتم شود. رفتیم توی حیاط دانشگاه. آنجا با یک آدم خوش اخلاق مسن برخورد کردیم که با ما گرم گرفت و از رتبه‏ام پرسید. گفتم ۱۵ منطقه ۳٫ گفت خوب اینجا چیکار می‏کنید؟ گفتم برای مصاحبه اومدیم. این بنده‏ی خدا هم که یک فرزندش کامپیوتر شریف می‏خواند و دیگری در امیر کبیر و سومیش هم در عباسپور، به انتخاب ما خندید و گفت وسایلتونو جمع کنید و برید. شریف رو ول کردی می‏خوای بیای عباسپور. با رتبه‏ی ۱۵ شما حتما برق شریف قبولی. برو آقا اصلا مصاحبه نکن که یکوقت پات گیر می‏شه و… ما هم تحت تاثیر حرفهای این آقا حتی مدارکمان را از دانشگاه نگرفتیم و فرار کردیم!
در مورد رشته هم که توی شهر کوچک ما کسی نبود که در رشته‏های فنی قبول شده باشه و من بتونم از او اطلاعات بگیرم. در حد وسع خودم تلاش کردم که اطلاعات کسب کنم ولی در نهایت به دیگران اقتدا کردم! دیدم از قدیم هر کسی که رتبه‏اش خوب می‏شه می‏زنه برق. حالا اصلا نمی‏دونستم این برق، برق ساختمونه یا نیروگاه! به هر حال برق شریف قبول شدم (تازه فهمیدم یک برق دیگری هم هست!) و البته از رشته‏ام راضی بودم هر چند احساس می‏کنم کامپیوتر بیشتر به گروه خونم می‏خورد و در نهایت هم با توسل به پردازش تصویر در دوره‏ی فوق‏لیسانس و دکتری از سخت افزار فرار کردم!
امسال ظاهرا دفترچه‏های راهنمای انتخاب رشته به دانش‏آموزان می‏دن که واقعا کار خوبیه. چون انتخاب رشته یعنی انتخاب آینده‏ی شغلی و شخصیتی.


پردازنده‏های چند هسته‏ای بخش ۳ – Multicore processors part 3

۴ نظر

در بخش قبل یک روش نه چندان آسان معرفی شد که با استفاده از آن می‏توان از حداکثر توان پردازنده‏های چند هسته‏ای استفاده کرد. امروز قصد دارم کتابخانه‏ای را معرفی کنم که با استفاده از آن به سادگی می‏توان حلقه‏های for سنگین را با استفاده از چند هسته‏ی پردازنده سریعتر اجرا کرد. کتابخانه‏ی OpenMP یک کتابخانه‏ی C/C++ است که توسط میکروسافت و به منظور تسهیل برنامه‏نویسی برای پردازنده‏های چند هسته‏ای تهیه شده است. اگر ویژوال استودیوی ۲۰۰۸ را نصب کنید، نسخه‏ی ۲ این کتابخانه نیز به صورت خودکار نصب می‏شود. برای استفاده از این کتابخانه باید ابتدا در تنظیمات پروژه، گزینه‏ی OpenMP Support را به Yes تنظیم کنید (شکل زیر).
فعال سازی OpenMP
سپس فایل omp.h را به لیست فایلهای سرآیه اضافه کنید. برای شروع کار بهتر است مثال قبلی را این بار با این کتابخانه امتحان کنیم. با استفاده از دستور omp_set_num_threads می‏‏توان تعداد رویه‏های مستقل برای استفاده توسط این کتابخانه را تعیین کرد. مقدار پیش فرض به تعداد هسته‏های پردازنده است. یکی از پرکاربردترین عبارات(هر چی فکر کردم معادل directive یادم نیومد!) این کتابخانه عبارت parallel هست که می‏توانید قبل از حلقه‏ی for به صورت زیر از آن استفاده کنید.

به همین سادگی؛ حالا اگر برنامه را اجرا کنید، حلقه‏ی for به طور خودکار در ۴ رویه‏ی مستقل اجرا خواهد شد. با استفاده از این دو خط برنامه شما می‏توانید به راحتی تعداد رویه‏هایی که باید در اجرای حلقه کمک کنند را تعیین کنید. مثال جلسات قبل را با استفاده از این کتابخانه اجرا کردم، زمان اجرا برای حالتی که از دو ریسمان استفاده شد ۵٫۵ ثانیه و برای ۴ ریسمان ۲٫۸۵ ثانیه شد که تقریبا مشابه حالتی است که خودمان ۲ یا ۴ ریسمان را تولید کنیم. حتما استفاده از این کتابخانه راحت تر است! برای یادگیری بیشتر این کتابخانه و امکانات جالب آن به MSDN (راهنمای ویژوال استودیو) مراجعه فرمایید.

In the previous paper, I introduced an approach based on threads to use the maximum power of multicore processors in our programs. Here I introduce a handy library from Microsoft which makes programming for multicore CPUs an amazing work. OpenMP is an efficient library with several directives and functions which helps us to write or migrate codes for multi core CPUs simply by adding some line of codes. If you are using visual studio .net 2005 or 2008, this library is already installed and you can use it. To demonstrate this library we consider the example of the previous paper. To add support of OpenMp in our project, we must open “Project Settings” and change the value “OpenMP Support” to “Yes”. This makes visual studio to load required libraries for OpenMP.
Enable OpenMP support in MSVC
Then we should add header file omp.h at the beggining of our cpp file. Using “omp_set_num_threads” we are able to set the number of threads which should be used by OpenMp library. The default value is equal to the number of CPU cores. One of the most important directive in this library is the “parallel” directive which can be used before heavy “for” loops to tell that the following loop must be shared between several cores of the processor. You can use it as follows:

How to use Open MP

Thats all! you have not to create separated threads and manage them, all of the works will be done by OpenMP. Using this code with omp_set_num_threads(2) the program takes about 5.5 seconds on Q6600 processor and with omp_set_num_threads(4) about 2.85 seconds. These values are almost the same as in the previous paper which we created threads mannualy. But I think OpenMP is easier!. For more information on OpenMP see MSDN (Visual Studio Help)