۱۳۸۹/۰۲/۰۷

MATLAB و پردازنده‌های چند هسته‌ای (۲)

یاد آن روزهایی که با ماشین حساب fx 3600 برنامه می‌نوشتم و وقتی ماشین حساب برای اجرای یک برنامه ۲ دقیقه در کما فرو می‌رفت، به‌خیر. از اینکه می‌توانستم حسابی مشغولش کنم کیف می‌کردم.
حالا هم وقتی نمی‌توانم از تمام ظرفیت پردازشی سیستم -درحالیکه نیاز دارم- استفاده کنم اعصابم خرد می‌شود.
قبلاً در این پســـــت راجع به چگونگی استفاده از چند هستهٔ CPU در MATLAB مطلبی را نوشته بودم و گفته بودم:
ظاهراً نسخه‌های جدید MATLAB امکانات موازی سازی، محاسبات توزیع‌شده و چندنخی (Multithreading) خوبی دارند.
اون موقع هنوز نسخه جدید را نداشتم ولی به تازگی MATLAB نسخهٔ R2009a را نصب کرده‌ام که جعبه ابزار Parallel Computing را دارد. یک دستور اضافه شده در این نسخه، دستور parfor است که برای اجرای عملیات یک حلقه، به صورت همزمان بر روی چند هسته بکار می‌رود. نحوهٔ استفاده از آن هم همانند for است با یک سری محدودیت‌ها. به صورت موازی درآوردن یک الگوریتم نه همیشه شدنی و نه همیشه راحت است؛ لیکن MATLAB جدا از برخی محدودیت‌ها، کار را برای برنامه‌های Single Instruction Multiple Data یا SIMP، بسیار راحت کرده است. نحوهٔ استفاده از این دستور برای اجرای دستوراتی خاص روی چهار هسته در زیر آمده است:
matlabpool('open','local',4)
parfor i=1:4
statements
end

matlabpool('close')
اگر برنامه‌ای را به صورت معمول نوشته باشید و مثلاً ۷۰درصد اوقات سی‌پی‌یوی شما مشغول باشد و با دستورات فوق برنامهٔ خود را برای استفاده از چند هسته اصلاح نمایید، هر چهار هسته صددرصد مشغول بوده و سرعت بیشتری در حصول به نتیجه را شاهد خواهید بود؛ البته باز هم به شرطها و شروطها.
فعلاً به همین معرفی parfor بسنده می‌کنم؛ اشاءالله بعداً بیشتر خواهم گفت.

۱۳۸۹/۰۱/۱۹

آفرین به این مادر

امروز از طریق آقا میلاد و با موضوع زیباترین دانشگاه دنیا با وبلاگ آقای بازرگان آشنا شدم. جدا از مطالبی که در وبلاگ آقای بازرگان هست، یک نکته برایم خیلی جالب بود و آن هم نظارت بر تربیت ایشان توسط مادرشان بود که با ملاحظهٔ مطالب سایت (مانند این پست و این نامهٔ جالب) متوجه می‌شویم که امری مستمر بوده و از بچگی تا الان که ظاهراً ایشان در فرانسه مشغول تحصیل می‌باشند ادامه دارد. و اما نکته اصلی: آقای بازرگان در قسمتی از وبلاگشان به مقولهٔ چندهمسری و زن و مرد در تبلیغات غرب پرداخته‌اند و در ذیل نظرات این پست، نقطه نظراتی از افراد مختلف و منجمله مادرایشان را شاهد هستیم. مادر ایشان با متانت نظرات خودشان را در خصوص موضوع و برخی نظرات دیگران بیان نموده‌اند و در قسمتی خطاب به فرزندشان نوشته‌اند:
چهارم:
باز هم که زدی تو خاکی؟

پنجم:
پسر رفته ای آن جا درس بخوانی
یا دنبال این حرف ها باشی
اگر می خواهی دنبال این حرف ها باشی
داشتن یا نداشتن دکترا فرقی به حالت نمی کند
از راه حق خبری نیست
برگرد بیا خانه
شاید این جا یک زن گرفتی و مشغول به کار شدی
و دیگر دنبال این حرف ها نرفتی
بچه جان دنبال مسیر حق باش
...
هفتم:
no matter whhat
i love you
آفرین بر این مادر که این چنین در تربیت فرزند حساس است. آفرین بر این خانواده، پست مربوط به پدر ایشان نیز خواندنی است. کاش ما هم این چنین باشیم.
یاد صحبت‌های جناب حجت الاسلام نقویان (حفظه‌ الله تعالی) می‌افتم که تاکید فراوانی بر نقش خانواده دارند و هفته گذشته خودم یکی از مصادیق صحبت‌های ایشان را در قطار شاهد بودم. آنجا که از یکی از دو جوان همسفرم پرسیدم «تو چرا سیگار نمی‌کشی؟» و جواب داد: «مادرم راضی نیست». و این «مادرم راضی نیست» عین عبارت یکی از سخنرانی‌های حاج آقا نقویان است.

۱۳۸۹/۰۱/۱۵

فارسی کردن برچسب‌ها در فایلهای eps

بسیاری از ما ممکن است نمودارهای خود را با ابزاری مانند MATLAB و در قالب eps ذخیره نماییم. فارسی کردن برچسب نمودارهای با قالب eps یکی از معضلات تهیه مستندات فارسی و منجمله پایان‌نامه‌هاست.
برای رفع این مشکل من راه‌حلهایی را در این پســــــــت از تالار گفتگوی پارسی‌لاتک پیشنهاد نموده‌ام که آنها را در اینجا نیز ذکر می‌کنم:

۱- اگر فقط فایل eps را دارید: با استفاده از Eps2pgf که مثال و لینک دانلود آن در اینجــــــــــا هست، فایلهای eps خود را به pgf تبدیل نمایید و سپس در فایل تولید شده:
  • آنرا به یونیکد تبدیل نمایید (مثلاً با ++Notepad).
  • عبارات لاتین خود را با معادل فارسی آنها جایگزین نمایید.
  • pgfpicture، را با tikzpicture عوض کنید.
  • دستورات \textsf را حذف نموده و یا به textbf تغییر دهید.
پس از آن فایل pgf را با input داخل محیط figure قرار دهید.
برچسب های شما در خروجی سند زی‌پرشین، فارسی خواهند بود.

۲- اگر MATLAB مولد eps شما بوده و می‌توانید دوباره اجرا کنید،‌ از matlab2tikz برای تولید خروجی tikz به جای eps استفاده کنید. البته برچسب‌ها را باید خودتان فارسی کنید و نیاز به تغییر فایل matlab2tikz هم هست که من با اجازه صاحبش برای خودم تغییر داده‌ام که با نسخه‌های قدیم MATLAB کار کند، ولی با نسخه‌های جدید آن (۲۰۰۸ به بعد) ظاهراً مشکلی وجود ندارد.

۳- اگر با MATLAB یا برنامه دیگری eps را تولید کرده‌اید و قادر به اجرای مجدد هستید، به نحوی برنامه خود را تغییر دهید که مستقیماً کد tikz برای رسم نمودارها را تولید نماید و سپس از نمودارها در لاتک استفاده کنید. اگر برنامه شما توان تولید خروجی فارسی را داشته باشد که فبها وگرنه باید مثل بالا به صورت دستی عبارات لاتین را با معادل فارسی آنها جایگزین نمایید.