۱۳۸۸/۰۸/۱۹

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

خیلی بد است که یک پردازندهٔ ۴ هسته‌ای (QUAD Core CPU) داشته باشی، کلی محاسبات سنگین هم در MATLAB یا هر جای دیگر داشته باشی، آن وقت فقط یک هسته مشغول باشد و باقی هسته‌‌ها از بیکاری چرت بزنند.
ظاهراً نسخه‌های جدید MATLAB امکانات موازی سازی، محاسبات توزیع‌شده و چندنخی (Multithreading) خوبی دارند ولی در نسخه MATLAB 7.3 R2006b که من استفاده می‌کنم این امکانات به صورت کامل وجود ندارد و امکان استفاده از توان کامل سی‌پی‌یوهای چندهسته‌ای وجود ندارد. با این حال برای انجام یک سری از عملیات جبرخطی امکاناتی وجود دارد که برای استفاده از آنها باید تنظیماتی را انجام داد. فرض کنید چهار هسته داریم، تنظیمات زیر را انجام دهید:
1. Right click on “My Computer” and select “Properties”.
2. Click on the “Advanced” tab.
3. Click on the “Environment Variables” button.
4. Create or edit the following "System variables":
Variable Value
---------- ----------
BLAS_VERSION mkl.dll
OMP_NUM_THREADS 4


برای اطلاعات بیشتر و نحوه استفاده در لینوکس اینجـــا را ببینید. البته ظاهراً Mathworks ایران را تحریم کرده است و باید از فیلترشکن استفاده نمایید.

نتیجه اجرا جالب بود. من کد زیر را که یک تجزیه QR است، در هر دو حالت (با و بدون انجام تنظیمات فوق) روی سی‌پی‌یوی Intel® Core™2 Quad Processor Q8200 اجرا کردم:

tic;a=magic(2001);qr(a); toc

بدون تنظیمات فوق ۳.۲ ثانیه زمان می‌برد و پس از تنظیم فوق ۱.۸۶ ثانیه به طول انجامید و هر ۴ هسته فعال شدند. یعنی کاهش بیشتر از ۴۰ درصدی زمان اجرا. خیلی خوب بود.

جابجایی Repository مربوط به SVN

مخزن مربوط به Visual SVN را که به همراه TortoiseSVN برای کنترل ورژن استفاده می‌کنم، از یک دستگاه به دستگاه دیگری منتقل نموده بودم. فایلها قابل استفاده نبودند، چرا که نام سرور عوض شده بود. برای هر مورد، فایل entries را که در شاخه .svn قرار دارد، از حالت فقط خواندنی درآوردم و نام سرور را اصلاح کردم؛ مشکل برطرف شد. اگر نام سرور در هر دودستگاه یکی می‌بود مشکلی بوجود نمی‌آمد. این هم موقعی اتفاق می‌افتد که نام دو دستگاه یکی باشد یا یک نام یکسان (مثلا localhost) به عنوان نام سرور در تنظیمات Visual SVN در هر دو دستگاه درنظرگرفته شود.