پردازنده‏های چند هسته‏ای بخش ۳ – 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)

Share

انواع فرشته‌ها

در جایی خواندم که فرشته‌ها بر سه نوع‌اند، گروه اول حاجتهای بندگان را به خداوند می‌رسانند، گروه دوم پاسخ خداوند را به بندگان می‌دهند و گروه سوم منتظر جوابی از سمت بندگان هستند که با گفتن یک “الهی شکر” پاسخ را به پروردگار می‌رسانند؛ واین گروه اخیر از همه بیکارترند.

خیلی از داشته‌های امروز ما، آرزوهای دیروز بوده‌اند. پس خدایا تو را شکر برای همه‌ی آرزوهایی که برآورده کرده‌ای…

Share

قورباغه‌ی زشت!

قورباغه سبز، چشم‌های درشتش رابا غروربست وبه

قورباغه کوچک کفت‌: من واقعا خوشــرنگ و درخشانم‌؛
نه‌؟
قورباغه کوچک کفت‌: بله‌. واقعا خوشرنگی‌!
قورباغه سبز گفت‌: و تو خاکسـتری و کدر و بدرنکی‌؛
نه‌؟
قورباغه کوچک بلند گفت‌: بله‌، کاملا واضح اســـت که
من بدرنگ و کدر و خاکستری‌ام‌!
قورباغه سبز گفت‌: من کاملا رشــد کرده‌ام‌؛ درشت و
خوش‌هیکل و تپلم اما تو کاملا لاغر و مردنی هستی‌.
قورباغه کوچک گفت‌: راست می‌گویی‌؛ من واقعا لاغرم
و رشد نکرده‌ام‌. خیال می‌کنـم از یک مریضی لاعلاج رنج
می‌برم‌.

قورباغه ســبز گفت‌: دلم برایت می‌ســوزد، تو زشت و
درنگ و لاغری‌. بیچاره‌، واقعا بدبختی‌!

قورباغه کوچک گفت‌: من زشــت و بدرنگ و لاغرم اما

واقعا احساس خوشبختی می‌کنم که مثل تو نیستـم‌.
قورباغه سبز گفت چرا؟
– قورباغه کوچک گفت‌: چون یــک ماهی‌خوار بی‌رحم
ان بالانشســته که عاشـق خوردن قورباغه‌های سبو و
چاق و بزرگ است‌ا

——————————————————————————
در مطب دکتر نشسته بودم و مجله‌ی خانواده را می‌خواندم چشمم به این طنز بامزه افتاد، با n95 چند بار عکس گرفتم تا یکیشون مناسب برای OCR در بیاد. وقتی رسیدم خونه برای امتحان عکسها رو به نویسه‌‌خوان سپردم و نوشته‌ای که در بالا می‌بینید نتیجه‌ی خواندن خودکار عکسها توسط نویسه‌خوان و بدون ویرایش و غلطیابی است. من که خیلی حال کردم!…

Share

زرنگار و زندگی

داشتم دنبال قلمهای قدیمی می‏گشتم که پشتیبانی از آنها را برای OCR فراهم کنم که به مطالب جالبی در مورد زرنگار، نرم‏ افزار قدیمی و زیبای تایپ فارسی، برخورد کردم. جالبترینشون مربوط به خاطرات دکتر محمد صنعتی، بنیانگذار شرکت نرم‏افزاری سینا، بود. بخشی از آن را در زیر می‏خوانید.

زرنگار متولد می‌شود

اولین بار زرنگار را در سمینار نشررایانه‌ای سازمان برنامه و بودجه نمایش دادیم. در این سمینار نه شرکت، از جمله سینا، حضور داشتند و می‌خواستند راه‌حل‌های خود را برای نشر فارسی عرضه کنند. من در این همایش سخنرانی‌ای کردم که مدت‌ها باعث تفریح خاطر همکارانم در شرکت شد، می‌گفتند من وعده برنامه‌ای دادم که هرگز نوشته نشد! من ابتدا یک ربع از وقت سخنران قبل و بعد خودم را گرفتم و زمان سخنرانی‌ام شد یک ساعت، بعد حین سخنرانی تمام اندیشه‌ها و بلندپروازی‌هایم را به زرنگار نسبت دادم. قابلیت‌هایی که من آن روز به زرنگار نسبت دادم پنج سال بعد در آن گنجانده شد. اما این سخنرانی باعث اشاعه بیشتر کار ما شد، و از یاد نمی‌برم که در نتایج نظرخواهی از شنوندگان آمده بود که بیش از هفتاد درصد سخنرانی مرا علمی‌ترین سخنرانی دانسته بودند. درحالی‌که این سخنرانی اصلا علمی نبود! در واقع معرفی زرنگار بود. بعد از این سخنرانی غرفه ما شلوغ شد، اما ما چیزی در دست نداشتیم. به همکارانم گفتم که حداقل باید به یک دهم از حرف‌هایمان عمل کنیم. به سرعت دست به کار شدیم و بعد از نمایشگاه اولین کلاس زرنگار را راه‌اندازی کردیم که هفده حروفچین در آن شرکت داشتند، هدف ما درآن زمان بیشتر حروفچین‌ها بودند .
این طور شد که زرنگار کم‌کم پا گرفت و نسخه‌های ارتقا یافته آن پی در پی به بازار فرستاده شد (اولین نسخه زرنگار در اردیبهشت سال ۱۳۷۰ عرضه شد). یکی از لذت‌بخش‌ترین کارهای من در آن دوره این بود که بعدازظهر به روزنامه فروشی‌ها می‌رفتم و می‌گشتم تا ببینم کدام مجله یا روزنامه به زرنگار ملحق شده. بعد که تعداد مشتریان بیشتر و بیشتر شد یک شوخی میان ما رایج شد به این مضمون که “بگردید، و ببینیند چه کسی با زرنگار کار نمی‌کند”. ما روش‌های بازاریابی خاصی داشتیم، مثلا آگهی کردیم که شش ماه استفاده رایگان از زرنگار برای همه آزاد است، یا زیر فاکتورهای فروش ذکر می‌کردیم تا شش ماه پس گرفته می‌شود. چون در هر کسبی در هر جای دنیا رضایت مشتری خیلی اهمیت دارد، دستور داده بودم از کسانی که نرم‌افزار را مرجوع می‌کنند هیچ پرس‌وجویی نکنند و فورا پولشان را برگردانند. سواستفاده‌های جزئی هم می‌شد، اما کل ماجرا به نفع شرکت بود. فلسفه‌ام این بود: باید تکلیفمان را با خودمان روشن کنیم، اگر محصولی نوشته‌ایم که به کار مردم نمی‌آید، خوب است برویم دنبال یک کار دیگر! این طور بود که ما در فاصله یازده سال (۱۳۶۴تا۱۳۷۵) بازار نشر رومیزی کشور را قبضه کردیم .

زر رفت، ولی تجربه تولید آن خواهد ماند

پایان زرنگار سال ۱۳۷۵ بود. در واقع زرنگار مغلوب Word شد، چون همیشه رسم رایج رابطه شرکت‌های بزرگ و کوچک این طور بوده است. زمانی که یک غول اقتصادی مانند مایکروسافت به بازار حمله می‌کند مثل بهمن بر سر بازار فرو می‌ریزد. از شرکت‌های بزرگ شروع می‌کند و پس از این که تک‌تک آنها را شکست می‌دهد به سراغ شرکت‌های کوچک می‌رود. این اتفاق در همه جای دنیا افتاد، از “Word Prefect” توانمند تا زرنگار ما. کسی که در بازار امریکا پیروز می‌شود، پیروزی در بازارهای دیگر برایش چندان دشوار نیست. شرکت‌ها زمانی بزرگ می‌شوند که یا شرکت‌های دیگر را به زانو در آورند یا آنها را بخرند و در خود ادغام می‌کنند. این قضایا صرفا به ایران برنمی‌گردد، کشورهای دیگر هم درگیر آن هستند .
از یک نظر دیگر هم می‌شد به قضیه نگاه کرد. من در آن مقطع همیشه از خودم می‌پرسیدم که آیا دوست دارم پسرم از نرم‌افزاری استفاده کند که دنیا از آن استفاده می‌کند، یا از زرنگار؛ و پاسخ من زرنگار نبود. نمی‌خواستم که کاربران ایران در زرنگار حبس شوند و از دنیا عقب بیفتند .
ولی تصور کنید که ما می‌خواستیم با Word مقابله کنیم، با چه امکانات و چه بودجه‌ای؟ مایکروسافت Word را عرضه می‌کند برای تمام زبآنها و تمام نسخه‌های ویندوز، ما چه کار می‌خواستیم بکنیم؟ نظر من این بود که ما باید دنبال کار دیگری برویم. یک سری از قابلیت‌های زرنگار هیچ وقت در Word نخواهد بود، اما می‌توان این قابلیت‌ها را به آن اضافه کرد .
توجه داشته باشید که نمی‌خواهم با این حرف‌ها در دل جوانان یاس بیندازم، ما اگر آن کار را ادامه ندادیم، تجربه‌ها در محصولات دیگری شکوفا خواهند شد. روش کار ما شاید به اندازه محصول‌مان مهم بود. در سینا قواعد خاصب داشتیم: اکثر کسانی که جذب سینا می‌شدند، الزاما سابقه یا تحصیلات رایآنهای نداشتند، اما بدون استثناء بسیار هوشمند بودند. سعی داشتیم کارمندان را کاملا تامین کنیم که سرشان صرفا به کارشان مشغول باشد. بعید می‌دانم آن مجموعه، با تمام استعدادها و قابلیت‌هایی که داشت؛ اگر در جای دیگری فعالیت می‌کرد چنین نتیجه‌ای حاصل می‌شد. مهم‌ترین کار ما تولید زرنگار نبود، مشکل‌ترین کار، جمع شدن چهل‌پنجاه نفر در یک ساختمان و فعالیت تحت یک مدیریت بود. تا زمانی که سینا محکم سرجایش بود، کسی از آن جدا نشد. بعد از آن، قضیه مهاجرت به کانادا رخ داد و …، این در حالی است که خیلی گروه‌های با استعداد تشکیل شدند و پس از مدتی بدون عرضه محصولی از هم پاشیدند. من یقین دارم هر زمانی چنین جمعی با چنین ویژگی‌هایی تشکیل شود، کارهای مهمی خواهد کرد .

متن کامل را در اینجا ببینید.

Share

انرژی مثبت را دریافت کنید

از غیبت‌، تهمت‌، قضاوت نسنجیده در مورد افراد یا حوادث‌، حسادت‌، کینه‌، دروغ‌، جر و بحث کردن با دیگران و رنجاندن آنها به شدت پرهیز کنید. زیرا با انجام دادن این گونه اعمال به دور خودتان تراکمی از نیروهای منفی جمع آوری می‌کنید و کسی که از این مقدار زیاد نیروهای منفی عذاب می‌کشد، خودتان هستید.
زمانی که به دیگران خوبی و کمک می‌کنید، تجمعی از نیروهای مثبت را به دور خودتان فراهم می‌آورید و این نیروهای مثبت باعث آرامش و شادی شما می‌شوند.

برای افزایش نیروهای مثبت خود می‌توانید در یک وان حمام‌، پر از آب و نمک به مدت ۲۰ دقیقه قرار بگیرید، در بطری‌های رنگی آب خوراکی بریزید و به مدت ۲ ساعت در معرض نور خورشید قرار دهید، سپس آنها را در یخچال بگذارید و از آن بنوشید.
خورشید منبع سرشاری از انرژی مثبت است‌. بدون کفش و جوراب روی چمن راه بروید. زیرا که طبیعت منبع پر انرژی نیروهای مثبت است.

هنگامی که وضو می‌گیرید، الکتریسته‌های ساکن را به سطح بدن می‌آورید. آب رسانا است و شما امواج آرام بخش را تولید می‌کنید. با کشیدن مسح سر، این امواج را به کورتکس مغز انتقال می‌دهید و باعث می‌شوید که ناحیه شلوغ ذهن آرام گیرد. با مسح پا، انتقال امواج آرام بخش را در اندام‌های پایینی سرعت می‌بخشید. منطقه‌ای که در روی کره زمین‌، بیشترین مقدار این امواج را داراست‌، کعبه است‌. زمانی که شما نماز می‌خوانید و در جهت خانه خدا قرار می‌گیرید و ۷ قسمت بدن با زمین تماس پیدا می‌کند، امواجی را دریافت می‌کنید که باعث آرامش شما می‌شوند.

منبع۱، منبع ۲

Share