Re: [問題] 關於MATLAB 2008b 用四核心跑程式的問題已回收
我也有在寫平行處理的程式
根據我的經驗以及一些書籍
其實要把task分割給不同的thread也是需要一點時間的
我目前手邊沒MATLAB可以測試
或許可以將迴圈的長度改大再試試看?
※ 引述《Gwaewluin (神無月 孝臣)》之銘言:
: ※ 引述《joeytseng (:))》之銘言:
: : 要有平行處理的部份
: : 隨便寫一個簡單的範例:
: : matlabpool open local 4 % 取得資源
: : parfor (ii= 1:100000) % parallel-for-loop
: : ii;
: : end
: : matlabpool close
: 精華區裡面有講到多執行緒的效能變化
: 並不只是對parfor有作用
: 以前學第稍微測試過多直行緒對於的cpu使用率
: 發現並不是全部指令都會用到多直行緒去跑的
: 至於後來看到了parfor
: 當年我也是感到挺有興趣
: 電腦換了E8400後
: help看一看,然後拿裡面的範例來跑跑
: 首先一開始就是在平行運算項目裡面getting started裡的內容
: 裡面舉了兩個例子
: 一個是一般迴圈的寫法
: clear A;
: for i=1:1024
: A(i) = sin(i*2*pi/1024);
: end
: plot(A);
: 一個是使用parfor的跑法
: matlabpool open;
: clear A;
: parfor i=1:1024
: A(i) = sin(i*2*pi/1024);
: end
: plot(A);
: matlabpool close;
: 看到這兩個,我就做點小修改,加上計時和拿掉plot
: 來看看使用parfor到底可以讓效能提升多少,把程式碼改成這樣
: clear A;
: tic
: for i=1:1024
: A(i) = sin(i*2*pi/1024);
: end
: toc
: matlabpool open;
: clear A;
: tic
: parfor i=1:1024
: A(i) = sin(i*2*pi/1024);
: end
: toc
: matlabpool close;
: 而跑出來結果如下
: Elapsed time is 0.001109 seconds.
: Starting matlabpool using the parallel configuration 'local'.
: Waiting for parallel job to start...
: Connected to a matlabpool session with 4 labs.
: Elapsed time is 0.316509 seconds.
: Sending a stop signal to all the labs...
: Waiting for parallel job to finish...
: Performing parallel job cleanup...
: Done.
: 而且是跑了好幾次的結果都0.001x秒和0.3x秒
: 才剛試用parfor就看到這樣的結果
: 之後我就再也沒有任何想要去碰平行運算相關內容的念頭了
: 不是說我不喜歡平行運算
: 只是一開始在起頭時就給我一個看起來好像沒有任何改善的結果(還變差了)
: 這實在很難讓我再有動力去研究平行運算的其他內容......-___-
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.113.129.171
→
05/01 02:04, , 1F
05/01 02:04, 1F
推
05/01 08:11, , 2F
05/01 08:11, 2F
推
05/12 18:12, , 3F
05/12 18:12, 3F
→
05/12 18:13, , 4F
05/12 18:13, 4F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 5 之 5 篇):
MATLAB 近期熱門文章
PTT數位生活區 即時熱門文章