- 相關(guān)推薦
學(xué)習(xí)方法多核診斷題
學(xué)習(xí)方法多核診斷題
一、請(qǐng)仔細(xì)閱讀每一道題,將題目中所講述的內(nèi)容同自己的實(shí)際情況相對(duì)照,看看符合程度如何,并按照以下評(píng)定標(biāo)準(zhǔn)評(píng)定。
A=完全符合自己的情況 B=大體上符合自己的情況 C=有一些符合自己的情況D=完全不符合自己的情況
1、上課時(shí),我頭腦里往往會(huì)想些別的事,以致于老師講的許多內(nèi)容我都似乎沒有聽到。
2、上課時(shí)我總是聚精會(huì)神地聽老師的講解。
3、某些主要的學(xué)科或一門學(xué)科中我認(rèn)為特別難學(xué)的或特別重要的章節(jié),我總爭(zhēng)取預(yù)習(xí)(在課前或晚上)。
4、我的記憶力還不錯(cuò),背誦一篇課文 或記住學(xué)習(xí)的東西對(duì)我來(lái)說(shuō)不是太難的事。
5、閱讀課本或其他讀物時(shí)我很少用紅藍(lán)筆或其他筆畫線做記號(hào)。
6、在寒暑假期間,我常常要制定一個(gè)學(xué)習(xí)計(jì)劃并努力按照計(jì)劃去學(xué)點(diǎn)新知識(shí) 。
7、要背誦課文時(shí),我常常在誦讀幾遍之后就開始試背,然后再打開書誦讀幾遍,再試背 ,也就是讓誦讀和背誦交替進(jìn)行。
8、作業(yè)中有些不好解答的題目,我總是自己盡力想辦法解答,不到萬(wàn)不得已,不去問老師和同學(xué)。
9、我常常把一些我認(rèn)為寫的好的文章反復(fù)誦讀。
10、學(xué)習(xí)時(shí),我時(shí)常把教材內(nèi)容分解為若干內(nèi)容或若干知識(shí)點(diǎn)。
11、考試后全班最好的成績(jī)是多少分、是誰(shuí),我總是最感興趣。
12、我常常由于能有條理的扼要的回答老師的提問而受表?yè)P(yáng)。
13、上課或自己復(fù)習(xí)功課時(shí),我常常覺得時(shí)間過得很慢。
14、學(xué)習(xí)時(shí),我不僅能夠弄清楚各個(gè)部分各個(gè)要點(diǎn)的意思,而且能較快的弄清楚各個(gè)部分各個(gè)要點(diǎn)之間的聯(lián)系和關(guān)系。
15、在課堂上,老師呈示的掛圖、模型、標(biāo)本或進(jìn)行的演示實(shí)驗(yàn),我總是爭(zhēng)取看得清清楚楚,弄明白他說(shuō)明什么問題或可以得出什么結(jié)論。
16、語(yǔ)文課本中的課文,我很少去反復(fù)誦讀,我認(rèn)為只要會(huì)解釋,懂得大意,做做作業(yè)就行。
17、我在閱讀報(bào)紙或其他課外讀物時(shí),要出聲或默默地一個(gè)字一個(gè)字的讀下去,所以速度比較慢。
18、上課時(shí),我盡力想象老師所講的內(nèi)容,也就是說(shuō),如果有可能的話,我就把老師所講的內(nèi)容變成形象在頭腦中顯現(xiàn)出來(lái)。
19、做作業(yè)時(shí)碰到難題我常常找其他人幫助解決,以免自己花太多的時(shí)間去琢磨。
20、雖然我重理解,不愛死記課本中的字句,但對(duì)于一些關(guān)鍵性的問題和公式,我還是 努力記住記熟。
21、做問答題時(shí),我往往心里覺得都理解了,可是動(dòng)筆去寫又寫不好。
22、寫文章或做問答題時(shí),我常常要先列出大綱或要點(diǎn),然后才下筆去寫。
23、閱讀一篇文章或課文時(shí),我能迅速的抓住各段的段落大意和全篇的中心思想。
24、我盡量作到當(dāng)天的功課當(dāng)天就進(jìn)行復(fù)習(xí)和寫作業(yè)。
25、我重視平時(shí)的復(fù)習(xí),考試前夕倒不怎么緊張,有時(shí)反而出去玩一玩,讓頭腦休息休息。
26、我喜歡獨(dú)立學(xué)習(xí)獨(dú)立思考,但遇到問題時(shí),我也喜歡和同學(xué)一起討論。
27、聽老師講解知識(shí)時(shí),我自己往往還聯(lián)想起于此相關(guān)的一些知識(shí)或事例。
28、讀物理化學(xué)時(shí),我很重視書上說(shuō)的各種實(shí)驗(yàn),盡力想象實(shí)驗(yàn)進(jìn)行的真實(shí)情景。
29、上課時(shí),有時(shí)老師要講的內(nèi)容還沒有講完,我就知道他要說(shuō)什么或要做出什么結(jié)論。
30、學(xué)習(xí)時(shí),我經(jīng)常把新材料和已有的知識(shí)經(jīng)驗(yàn)聯(lián)系起來(lái)。
31、學(xué)習(xí)比較抽象的材料時(shí),我總是努力聯(lián)系實(shí)際,或舉出一些具體的例子去說(shuō)明它。
32、讀書時(shí)用筆畫線做記號(hào)是一件很困難的事,因?yàn)槲彝植磺迥男┑胤皆摦,哪些地方不該畫?/p>
33、聽課時(shí),我往往把不了解的問題或聯(lián)想起來(lái)的問題記下,以便課后進(jìn)一步思考、弄清。
34、老師布置的作業(yè)我總是努力按時(shí)完成。
35、由于種種原因,我很難每天在固定的時(shí)間開始做功課。
36、我能夠把詳細(xì)的教材縮寫成提綱,必要時(shí),我又能根據(jù)提綱進(jìn)行發(fā)揮,寫出詳細(xì)的內(nèi)容。
37、上課時(shí),我專心聽講,緊緊抓住老師講解的線索,積極思考老師所講的內(nèi)容。
38、學(xué)習(xí)理、化、生物、地理學(xué)科,我不單用頭腦想,只要可能,我總是動(dòng)手去試做一下。
39、聽老師講課時(shí),我總喜歡動(dòng)筆記一些要點(diǎn)、綱要。
40、學(xué)習(xí)時(shí),我不滿足于記一些公理、公式、定義、結(jié)論,我總是想方弄清楚它們是怎么得來(lái)的。
41、在回答問題時(shí),我喜歡根據(jù)自己的理解,用自己的話去回答,很少硬背課本上的字句。
42、我的書桌總是整理的整整齊齊,各種學(xué)習(xí)用品總是放在固定的位子。
43、我喜歡把學(xué)到的知識(shí)用來(lái)解決或解釋生活上或課外活動(dòng)中碰到的問題。
44、在上課或聽報(bào)告時(shí),我能夠把老師講的內(nèi)容扼要地、系統(tǒng)的記下來(lái)。
45、考試時(shí),我總是先把考題看一下,把容易做的或得分多的題目先做了把難做的題目留到最后去想。
46、在學(xué)習(xí)時(shí),我總是力求弄清教材中各部分、各要點(diǎn)之間的聯(lián)系或關(guān)系。
47、在準(zhǔn)備考試時(shí),我常常先提出一些問題考自己,看看準(zhǔn)備是否充分了。
48、我的學(xué)習(xí)用品隨便放,以致要用時(shí)常常要找好久。
49、我每天總是在固定時(shí)間里復(fù)習(xí)功課,完成作業(yè)。
50、在準(zhǔn)備考試時(shí),我常常根據(jù)教科書寫出各道復(fù)習(xí)題的答案要點(diǎn)。
51、發(fā)回的作業(yè)或卷子,如果有做錯(cuò)的,我總要弄清楚為什么錯(cuò)了,怎樣做才對(duì)。
52、在復(fù)習(xí)功課時(shí),我喜歡把詳盡的材料變成簡(jiǎn)要的提綱,以便更好的記住。
53、我常常把學(xué)到的各種知識(shí)進(jìn)行比較,發(fā)現(xiàn)它們之間的異同和聯(lián)系。
54、在閱讀報(bào)紙小說(shuō)或某些課外讀物時(shí),我不需要一個(gè)字一個(gè)字的讀,而是一個(gè)分句或一個(gè)整句的讀,所以速度比較快。
55、復(fù)習(xí)功課時(shí),我常常把學(xué)過的知識(shí)列成表或畫成圖,借以揭示各種知識(shí)的區(qū)別和聯(lián)系。
56、學(xué)過的各種知識(shí),我一般都能有條理有系統(tǒng)的保存在腦子里,所以,要用到某一概念或定理時(shí),我能很容易的找到它。
57、我重視學(xué)習(xí)經(jīng)驗(yàn)的總結(jié),并時(shí)常和同學(xué)交流學(xué)習(xí)經(jīng)驗(yàn)。
58、學(xué)習(xí)時(shí),我喜歡思考,即使很難理解的材料,我也總要想辦法把它徹底弄懂。
59、我在動(dòng)手做作業(yè)之前,總是先把功課認(rèn)真的復(fù)習(xí)一遍,弄懂教材的內(nèi)容。
60、我挺喜歡學(xué)習(xí),學(xué)習(xí)使我每天都在增長(zhǎng)知識(shí)、開闊眼界。
二、下面有50道題,每道題有3個(gè)備選項(xiàng),請(qǐng)根據(jù)自己的實(shí)際情況選擇,每題只能選擇一種結(jié)果。
A.較符合自己的情況 B.難回答 C.不符合自己的情況
第一部分:學(xué)習(xí)方法
1.喜歡用筆勾出過記下閱讀中不懂的地方。 A. B. C.
2.經(jīng)常閱讀與自己學(xué)習(xí)無(wú)直接關(guān)系的書籍。 A. B. C.
3.在觀察或思考時(shí),重視自己的看法。而且在遇到問題時(shí),對(duì)自己的看法很有信心。 A.
B. C.
4.在對(duì)老師將要講的課會(huì)做很充分的預(yù)習(xí),并且會(huì)預(yù)先做一些練習(xí)。 A. B. C.
5.遇到問題,我喜歡和同學(xué)一起討論。 A. B. C.
6.為更好地理解老師講的課程,我會(huì)對(duì)筆記等內(nèi)容歸納成太哦問或圖表。 A. B. C.
7.聽老師講解問題時(shí),眼睛注視著老師。 A. B. C.
8.我喜歡利用參考書和習(xí)題集。 A. B. C.
9.對(duì)于學(xué)習(xí)中的要點(diǎn),我會(huì)很注意歸納并寫出來(lái)。 A. B. C.
10.我不經(jīng)常查閱字典、手冊(cè)等工具書。 A. B. C.
11.我對(duì)作業(yè)和考試中的錯(cuò)誤會(huì)進(jìn)行修改,并根據(jù)試卷分析自己錯(cuò)誤的原因。 A. B. C.
12.我認(rèn)為重要的內(nèi)容,就格外注意聽講和理解。 A. B. C.
13.閱讀中若有不懂的地方,非弄懂不可。 A. B. C.
14.在學(xué)習(xí)的時(shí)候會(huì)經(jīng)常聯(lián)系其他學(xué)科內(nèi)容進(jìn)行學(xué)習(xí)。 A. B. C.
15.在動(dòng)筆解題以前,先做全面的審題,有了設(shè)想后,才去解題。 A. B. C.
16.閱讀中認(rèn)為重要的或需要記住的地方就劃上線或做上記號(hào)。 A. B. C.
17.經(jīng)常向老師或他人請(qǐng)教不懂的問題。 A. B. C.
18.喜歡討論學(xué)習(xí)中遇到的問題。 A. B. C.
19.我很注意別人好的學(xué)習(xí)方法,并努力學(xué)會(huì)。 A. B. C.
20.對(duì)需要記牢的公式、定理等反復(fù)進(jìn)行記憶。 A. B. C.
21.經(jīng)常觀察實(shí)物或參考有關(guān)資料對(duì)其進(jìn)行學(xué)習(xí)。 A. B. C.
22.聽課時(shí)做完整的筆記。 A. B. C.
23.我有專門的錯(cuò)題本。 A. B. C.
24.如果實(shí)在不能獨(dú)立解出習(xí)題,就看了答案再做。 A. B. C.
25.我經(jīng)常制定學(xué)習(xí)計(jì)劃,但不一定按照計(jì)劃來(lái)做。 A. B. C.
第二部分:應(yīng)試心理
26.在重要考試的前幾天,我就坐立不安了。 A. B. C.
27.我每天早上都會(huì)吃飯而且早餐很有營(yíng)養(yǎng)。 A. B. C.
28.在考試前,我總感到苦惱。 A. B. C.
29.在考試前,我感到煩躁,脾氣變壞。 A. B. C.
30.在緊張的溫課期間,常會(huì)想到:這次考試要是得到低分?jǐn)?shù)怎么辦? A. B. C.
31.越臨近考試,上課時(shí)我的注意力就越難集中。 A. B. C.
32.一想到馬上就要考試了,參加任何文娛活動(dòng)都感到?jīng)]勁。 A. B. C.
33.在考試前,我常做關(guān)于考試的夢(mèng)。 A. B. C.
34.到了考試那天,我就不安起來(lái)。 A. B. C.
35.當(dāng)聽到開始考試的鈴聲響了,我的心馬上緊張地急跳起來(lái)。 A. B. C.
36.遇到重要考試,我的腦子就變得比平時(shí)遲鈍。 A. B. C.
37.看到考試題目越多、越難,我就越感到不安。 A. B. C.
38.一遇到很難的考試,我卻擔(dān)心自己會(huì)不及格。 A. B. C.
39.在緊張的考試中,我卻會(huì)想些與考試武官的事情,注意力集中不起來(lái)。 A. B. C.
40.在考試時(shí),我會(huì)緊張得連平時(shí)記得滾瓜爛熟的知識(shí)一點(diǎn)也回憶不起來(lái)。 A. B. C.
41.考試中,我想上廁所的念頭比平時(shí)多些。 A. B. C.
42.我對(duì)考試十分厭煩。 A. B. C.
43.在考試時(shí),我緊張得手發(fā)僵,寫字不流暢。 A. B. C.
44.考試時(shí),我經(jīng)常會(huì)看錯(cuò)題目。 A. B. C.
45.在進(jìn)行重要的考試時(shí),我的頭就會(huì)痛起來(lái)。 A. B. C.
46.發(fā)現(xiàn)剩下的時(shí)間來(lái)不及做完考題,我就急得手足無(wú)措,渾身大汗。 A. B. C.
47.如果我考個(gè)不滿意的分?jǐn)?shù),就不想看卷子。 A. B. C.
48.在考試后,經(jīng)常發(fā)展有的題目自己雖然懂卻沒答對(duì)。 A. B. C.
49.在考試中,有時(shí)我會(huì)沉迷在空想之中,一時(shí)忘了自己是在考試。 A. B. C.
50.要是不進(jìn)行考試,我就能學(xué)到更多的知識(shí)。 A. B. C.
三、聽老師講課的時(shí)候,你所采取的方法、方式是:
A、緊張地盯著黑板,認(rèn)真仔細(xì)地做筆記;
B、只記重點(diǎn),課后再回想一遍;
C、認(rèn)真地聽,適當(dāng)?shù)刈龉P記,疑難的地方做出標(biāo)記,課后再做系統(tǒng)地復(fù)習(xí);
D、以“考前猜題”的心態(tài)聽課,抓住老師反復(fù)強(qiáng)調(diào)的內(nèi)容。
四、每當(dāng)在課堂上教師提出問題時(shí),你一般的做法是:
A、只要懂的就舉手回答;
B、即使懂也不敢舉手回答;
C、不僅不愿舉手回答問題,即使被老師提問到了,有時(shí)也不愿回答問題;
D、對(duì)于老師所提的問題,大多數(shù)都不懂。
五、學(xué)生做作業(yè)的態(tài)度是:
A、比較歸類,將零星的知識(shí)納入自己的知識(shí)體系之中,并尋求一題多解的途徑;
B、注意更正錯(cuò)題,對(duì)習(xí)題資料加以整理和保存,并圍繞中心做課外習(xí)題;
C、只要完成作業(yè)就可以了;
D、抄襲。
六、學(xué)生是怎樣背記英語(yǔ)單詞的?
A、依賴書寫的方法來(lái)記;
B、用卡片來(lái)記;
篇二:多核編程和并行運(yùn)算期末復(fù)習(xí)
5題每題20分
1.1)簡(jiǎn)述MPI 6個(gè)函數(shù)格式定義,作用,參數(shù)含義。
MPI簡(jiǎn)介:消息傳遞接口的標(biāo)準(zhǔn),用于開發(fā)基于消息傳遞的并行程序,目的是為用戶提供一個(gè)實(shí)際可用的、可移植的、高效和靈活的消息傳遞接口庫(kù),能夠在PC Windows和所有主要的Unix工作站以及并行機(jī)上實(shí)現(xiàn)。MPI是一個(gè)庫(kù),不是一種語(yǔ)言,實(shí)現(xiàn)并行必須依托于某種語(yǔ)言:FORTRAN,C
MPI主要函數(shù):
MPI_Init,初始化函數(shù):MPI程序通過調(diào)用MPI_Init函數(shù)進(jìn)行MPI環(huán)境,并完成所有的初始化工作,這個(gè)函數(shù)通常是MPI程序的第一個(gè)函數(shù)調(diào)用。
格式如下: int MPI_Init( int *argc, char ***argv )
MPI_Finalize,結(jié)束函數(shù):MPI通過調(diào)用MPI_Finalize函數(shù)從MPI環(huán)境中退出,它是MPI程序的最后一個(gè)MPI函數(shù)調(diào)用,否則程序的執(zhí)行結(jié)果是不可預(yù)知的。
格式如下: int MPI_Finalize(void) ;
MPI_Comm_rank,獲取進(jìn)程的編號(hào):MPI程序通過MPI_Comm_Rank函數(shù)調(diào)用獲取當(dāng)前進(jìn)程在指定通信域中的編號(hào),有了該編號(hào),不同的進(jìn)程就可以將自身和其他進(jìn)程區(qū)分開來(lái),從而實(shí)現(xiàn)進(jìn)程間的并行和合作。
格式如下:nt MPI_Comm_rank(MPI_Comm comm, int *rank)
MPI_Comm_size,獲取指定通信域的進(jìn)程數(shù):MPI通過調(diào)用MPI_Comm_size函數(shù)獲取指定通信域的進(jìn)程個(gè)數(shù),進(jìn)程可根據(jù)它來(lái)確定自己應(yīng)該完成的任務(wù)比例。
格式如下:int MPI_Comm_size(MPI_Comm comm, int *size)
MPI_Send消息發(fā)送函數(shù):MPI_Send函數(shù)用于發(fā)送一個(gè)消息到目標(biāo)進(jìn)程。其格式如下:
int MPI_Send( void *buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm_comm)
buf : 消息發(fā)送的起始地址
count :發(fā)送消息的數(shù)量
datatype: 發(fā)送數(shù)據(jù)的類型
dest: 標(biāo)識(shí)目標(biāo)進(jìn)程
tag: 發(fā)送消息時(shí)打上的標(biāo)簽
comm: 通信類型
MPI_Recv,消息接收:MPI_Recv函數(shù)用于從指定進(jìn)程接收一個(gè)消息,格式如下:
int MPI_Recv( void *buf, int count, MPI_Datatype datatype, int source, int tag, MPI_Comm, comm, MPI_Status *status )
buf : 消息接收后存放地址
count : 接收數(shù)量
datatype : 接收數(shù)據(jù)類型
source : 發(fā)送消息的進(jìn)程
tag : 消息的標(biāo)簽
comm : 通信類型
status : 接收狀態(tài)
1.2)舉例簡(jiǎn)單的應(yīng)用解釋如何通信。
每個(gè)進(jìn)程會(huì)屬于一個(gè)或多個(gè)通信域。
一個(gè)簡(jiǎn)單的例子
/* simple.c */
#include “mpi.h” /*MPI頭文件*/
#include
int main(argc, argv)
int argc ;
char **argv ;
{
int rank, size, tag = 1 ;
int senddata, recvdata ;
MPI_Status status ;
MPI_Init( &argc, &argv ) ; /*MPI的初始化*/
MPI_Comm_rank( MPI_COMM_WORLD, &rank ) ; /*該進(jìn)程的編號(hào) */
MPI_Comm_size( MPI_COMM_WORLD, &size ); /* 總的進(jìn)程數(shù)目*/
if ( rank == 0 ){
int senddata, recvdata ;
MPI_Status status ;
MPI_Init( &argc, &argv ) ; /*MPI的初始化*/
MPI_Comm_rank( MPI_COMM_WORLD, &rank ) ; /*該進(jìn)程的編號(hào) */
MPI_Comm_size( MPI_COMM_WORLD, &size ); /* 總的進(jìn)程數(shù)目*/
if ( rank == 0 ){
senddata = 9999 ;
MPI_Send( &senddata, 1, MPI_INT, 1, tag,
MPI_COMM_WORLD ) ; /* 發(fā)送數(shù)據(jù)到進(jìn)
程1 */
}
if ( rank == 1 ){
MPI_Recv( &recvdata, 1, MPI_INT, 0, tag,
MPI_COMM_WORLD, &status);
/*從進(jìn)程0接收數(shù)據(jù)*/
}
MPI_Finalize() ; /*MPI的結(jié)束函數(shù)*/
return (0) ;
}
另一個(gè)例子
實(shí)現(xiàn) sum( a + b ),并且把求和結(jié)果打印出來(lái)。這里 a, b 都是n維空間的向量,并且每個(gè)元素都為整數(shù)。
#include “mpi.h” /*MPI頭文件*/
#include
#include
int main(argc, argv)
int argc ;
char **argv ;
{
int rank, size, i, tag = 1 ;
int *a, *b, n;
n = 100 ;
a = (int*)malloc( sizeof( int ) * n ) ;
b = (int*)malloc( sizeof( int ) * n ) ;
for(i = 0 ; i < n ; i++){
a[i] = 1 ;
b[i] = 2 ;
}
MPI_Status status ;
MPI_Init( &argc, &argv ) ; /*MPI的初始化*/
MPI_Comm_size( MPI_COMM_WORLD, &size ); /* 總的進(jìn)程數(shù)目*/
int nSize = n / size ;
MPI_Comm_rank( MPI_COMM_WORLD, &rank ) ; /*該進(jìn)程的編號(hào) */
if( rank != (size - 1) ){
int sum = 0 ;
for( i = 0 ; i < nSize ; i++ ){
sum += a[i + rank * nSize ] + b[ i + rank * nSize ] ;
}
MPI_Send( &sum, 1, MPI_INT, (size-1), tag, MPI_COMM_WORLD ) ; /* 發(fā)送求和數(shù)據(jù)到進(jìn)程(size-1) */
}else{
int sum = 0, total = 0 ;
for( i = (size - 1) * nSize ; i < n ; i++ ){
sum += a[i] + b[i] ;
}
total += sum ;
for( i = 0 ; i < (size - 1) ; i++ ){
MPI_Recv( &sum, 1, MPI_INT, i, tag, MPI_COMM_WORLD, &status); /*從各個(gè)進(jìn)程接收部分求和數(shù)據(jù)*/
total += sum ;
}
printf( "total = %d ", total ) ;
}
MPI_Finalize() ; /*MPI的結(jié)束函數(shù)*/
return (0) ;
}
2.1)通過MPI如何實(shí)現(xiàn)2個(gè)矢量相加。
/* simple.c */
#include/*MPI頭文件*/
#include
#include
int main(argc, argv)
int argc ;
char **argv ;
{
int rank, size, tag = 1 ;
int *a, *b , n = 100 ;
a = (int*)malloc( sizeof( int ) * n ) ;
b = (int*)malloc( sizeof( int ) * n ) ;
int i ;
for( i = 0 ; i < n ; i++ ){
a[i] = 1 ;
b[i] = 2 ;
}
MPI_Status status ;
MPI_Init( &argc, &argv ) ; /*MPI的初始化*/
MPI_Comm_rank( MPI_COMM_WORLD, &rank ) ; /*該進(jìn)程的編號(hào) */
MPI_Comm_size( MPI_COMM_WORLD, &size ); /* 總的進(jìn)程數(shù)目*/
int nSize = n / size ;
int sum ;
if( rank < (size -1) ){
sum = 0 ;
for( i = 0 ; i < nSize ; i++ ){
sum += a[i] + b[i] ;
}
}else{
sum = 0 ;
for( i = nSize * (size - 1) ; i < n ; i++ ){
sum += a[i] + b[i] ;
}
}
printf("cpu = %d, sum = %d ", rank, sum ) ;
MPI_Finalize() ; /*MPI的結(jié)束函數(shù)*/
return (0) ;
}
2.2)通過MPI如何實(shí)現(xiàn)2個(gè)矢量相乘。
#include/*MPI頭文件*/
#include
#include
int main(argc, argv)
int argc ;
char **argv ;
{
int rank, size;
int n = 100 ;
int i ;
MPI_Status status ;
MPI_Init( &argc, &argv ) ;
MPI_Comm_size( MPI_COMM_WORLD, &size );
int nSize = n / size ;
MPI_Comm_rank( MPI_COMM_WORLD, &rank ) ;
int *a, *b ;
a = (int*)malloc( sizeof(int) * n ) ;
b = (int*)malloc( sizeof(int) * n ) ;
int( i = 0 ; i < n ; i++ ){
a[i] = 1 ;
b[i] = 2 ;
}
int tag = 1 ;
if( rank != (size - 1) ){
int sum = 0 ;
for( i = 0 ; i < nSize ; i++ ){
sum += a[rank * nSize + i]* b[rank * nSize + i];
}
MPI_Send( &sum, 1, MPI_INT, (size-1), tag, MPI_COMM_WORLD ) ; }else{
int sum = 0, total = 0 ;
for( i = (size - 1) * nSize ; i < n ; i++ ){
sum += a[i] * b[i];
}
total += sum ;
for( i = 0 ; i < (size - 1) ; i++ ){
MPI_Recv( &sum, 1, MPI_INT, i, tag, MPI_COMM_WORLD, &status);
total += sum ;
}
篇三:Matlab心得及學(xué)習(xí)方法
Matlab心得及學(xué)習(xí)方法(不斷更新)
發(fā)現(xiàn)現(xiàn)在很多人(找工作的或者讀博的)都想要學(xué)習(xí)或者正在學(xué)習(xí)Matlab,問我要怎么學(xué)習(xí)。其實(shí)我雖然寫Matlab代碼的經(jīng)驗(yàn)還算豐富,但是還不能說(shuō)是一個(gè)很好的Matlab編程人員,這里有一些心得,分享給大家希望對(duì)大家有所幫助。
關(guān)于如何學(xué)習(xí)Matlab
我的學(xué)習(xí)方法很簡(jiǎn)單:Matlab是練出來(lái)的,而不是看出來(lái)的。很多人問我有沒有比較好的Matlab教材,我說(shuō)隨便找一本吧,都可以。只要書里面有最基本的語(yǔ)法和命令,對(duì)于一個(gè)有編程基礎(chǔ)的人,Matlab可以在一個(gè)下午的時(shí)間內(nèi)學(xué)會(huì)。當(dāng)然,僅僅是學(xué)會(huì)。如果想要對(duì)Matlab比較得心應(yīng)手,那么最好的辦法就是練習(xí)。練習(xí)的素材很多,比如對(duì)于學(xué)經(jīng)濟(jì)學(xué)的,可以做一些simulation之類的,也可以試著把計(jì)量或者宏觀教材里面的一些算法寫寫出來(lái)。一開始可能很慢,但是當(dāng)你完成了一個(gè)比較大的project的時(shí)候,你的Matlab的功力將會(huì)有巨大的提升。
當(dāng)然,在你寫程序之前,多讀一些別人寫的好的code是非常有幫助的。
一些Matlab的經(jīng)驗(yàn)
1、適當(dāng)了解一些數(shù)值計(jì)算、數(shù)值分析以及最優(yōu)化的理論
用Matlab的無(wú)非是做數(shù)值計(jì)算或者最優(yōu)化,這也是Matlab的強(qiáng)項(xiàng),Matlab有足夠多的工具箱解決這些問題。但是在使用這些工具箱之前,應(yīng)該首先了解一些數(shù)值計(jì)算以及最優(yōu)化的理論。這一點(diǎn)在程序碰到問題或者計(jì)算結(jié)果不理想的時(shí)候尤為重要。很多時(shí)候結(jié)果不理想并不是自己的理論出了問題,而是盲目或者錯(cuò)誤使用Matlab的.工具箱而導(dǎo)致的。比如我曾經(jīng)做過一個(gè)單純形法的優(yōu)化程序,但是結(jié)果總是不理想,這個(gè)時(shí)候就要返回到單純形法具體是一種什么樣的算法來(lái)考慮這個(gè)問題,最后發(fā)現(xiàn)是由于目標(biāo)函數(shù)的某一部分十分平緩導(dǎo)致的。 當(dāng)然更重要的是如果你不理解理論,很多問題根本不知道如何處理。有個(gè)學(xué)化學(xué)同學(xué)就曾問我一個(gè)程序怎么寫,說(shuō)matlab肯定可以完成的。了解清楚之后才明白原來(lái)他想做的就是一個(gè)受限最小二乘。但是他不懂得什么是最小二乘(因?yàn)闆]怎么學(xué)過數(shù)學(xué)),當(dāng)然面對(duì)這個(gè)問題無(wú)從下手。
2、理解Matlab中時(shí)間空間的轉(zhuǎn)化
這個(gè)問題沒有人強(qiáng)調(diào),但我覺著蠻重要。這里的關(guān)鍵點(diǎn)其實(shí)很簡(jiǎn)單,就是盡量減少重復(fù)計(jì)算,哪怕是多項(xiàng)式復(fù)雜度以內(nèi)的計(jì)算。重復(fù)計(jì)算的內(nèi)容應(yīng)該適時(shí)保存到內(nèi)存中,以后直接調(diào)用。一個(gè)程序可能會(huì)重復(fù)運(yùn)行幾千次幾萬(wàn)次,一點(diǎn)點(diǎn)的浪費(fèi)時(shí)間都可能被放大很多?臻g(內(nèi)存)我們是可以擴(kuò)充的,但是時(shí)間不是,所以絕大多數(shù)時(shí)候我們需要放棄空間,獲得時(shí)間上的迅捷。
這里有個(gè)故事,曾經(jīng)在某技術(shù)論壇上看到的,說(shuō)騰訊公司早期做的QQ實(shí)在太過垃圾,他們追蹤過QQ的行為,發(fā)現(xiàn)在幾分鐘時(shí)間里重復(fù)調(diào)用了某同一注冊(cè)表項(xiàng)幾百次。顯然注冊(cè)表的內(nèi)容所占內(nèi)存是有限的,甚至是可以忽略的,但是每次讀注冊(cè)表項(xiàng)可能都要讀硬盤,這里的時(shí)間花費(fèi)是很大的,為什么不把這項(xiàng)內(nèi)容直接存儲(chǔ)在內(nèi)存里呢?
一個(gè)比較經(jīng)典的例子:考慮交換兩個(gè)變量a,b的值,有如下寫法:
c=a;
a=b;
b=c;
或者:
a=a+b;
b=a-b;
a=a-b;
第一種寫法多占了內(nèi)存,因?yàn)樾枰嗌暾?qǐng)一個(gè)c的內(nèi)存空間;第二種寫法節(jié)省了內(nèi)存空間,但是卻多了三次計(jì)算時(shí)間。請(qǐng)問哪種好?不一定,看你的時(shí)間空間的權(quán)衡。但是具體到這個(gè)例子來(lái)說(shuō),第二種是不推薦的,因?yàn)椋菏紫,第二種程序晦澀難懂,難以維護(hù),內(nèi)存不至于低到不能存儲(chǔ)一個(gè)變量;第二,如果兩個(gè)數(shù)字都特別特別大,計(jì)算a的時(shí)候會(huì)有溢出的危險(xiǎn)。
3、形成良好的編程規(guī)范
我想幾乎所有學(xué)過編程的人都被這樣告誡過。比較好的是Matlab自帶的編輯器本身就可以自動(dòng)縮進(jìn)之類的,程序十分易讀。但是還有一些東西是有些人不曾注意過的。比如變量名,一個(gè)好的變量名一定要有清晰的含義,讓人一看就能明白,否則日后的修改維護(hù)必然要花費(fèi)更多的時(shí)間去識(shí)別這些變量名的含義。這一點(diǎn)可以參考http://coolshell.cn/articles/1038.html http://coolshell.cn/articles/1990.html 這里面詳細(xì)列舉了很多命名的規(guī)則和技巧。 還有一點(diǎn)就是注釋。好的注釋可以極大的方便以后的維護(hù)以及代碼的重用。我的習(xí)慣是在代碼的開頭都要交代這個(gè)代碼是干什么用的,怎么用等等。在程序中一個(gè)大塊的功能模塊也要加上注釋告訴大家你在做什么。如果某個(gè)語(yǔ)句很復(fù)雜,可以加注釋告訴大家這句到底在干什么。這樣寫出來(lái)的程序維護(hù)起來(lái)或者他人使用起來(lái)將非常方便。
另有一篇十分有趣的文章分享給大家:如何寫出無(wú)法維護(hù)的代碼 http://coolshell.cn/articles/4758.html
4、如果拿到一個(gè)任務(wù)而又沒有思路,試著把問題分解或者轉(zhuǎn)化。
之所以叫做程序,是因?yàn)槲覀兯龅墓ぷ骶褪歉嬖V計(jì)算機(jī)要做什么,該怎么做。所以如果你的腦子里根本不知道這個(gè)問題該怎么解決的時(shí)候,你就更加無(wú)法寫出程序。找思路的一般方法是分解問題,然后逐個(gè)擊破。或者在特殊情況下,需要把問題轉(zhuǎn)化。
分解與轉(zhuǎn)化的第一步是把實(shí)際問題轉(zhuǎn)化為數(shù)學(xué)問題。這一步可能已經(jīng)做好,可能沒有。如果沒有,那么這一步就叫做數(shù)學(xué)建模。絕大多數(shù)問題都可以轉(zhuǎn)化為兩類問題,一類是最優(yōu)化問題,一類是求解問題。如果你能知道你在最優(yōu)化什么東西或者求解什么東西,問題就簡(jiǎn)單很多。
轉(zhuǎn)化問題的第二步是把數(shù)學(xué)問題轉(zhuǎn)化為程序(不是代碼)。也就是說(shuō),你要想清楚這個(gè)問題(最優(yōu)化或者求解)是怎么一步步實(shí)現(xiàn)的。 這個(gè)過程可能很簡(jiǎn)單,有現(xiàn)成的方法用,也有可能很復(fù)雜,還可能涉及多種轉(zhuǎn)化。比如我們經(jīng)濟(jì)學(xué)中遇到的求解動(dòng)態(tài)最優(yōu)化,經(jīng)常要把連續(xù)的東西離散化(離散化很重要。。
最后,考慮怎么把你的程序轉(zhuǎn)化為真實(shí)的代碼。這一步說(shuō)簡(jiǎn)單很簡(jiǎn)單,因?yàn)橹灰阕龊昧艘陨蟽刹,這一步是順其自然的。但是當(dāng)然會(huì)有很多小的細(xì)節(jié),也許這就是所謂的technique。但是我還是覺著,學(xué)習(xí)編程不是學(xué)習(xí)technique,而是學(xué)習(xí)第二步,雖然本文關(guān)注的更多的是technique。
5、如果程序出錯(cuò)了,而又查不到語(yǔ)法的錯(cuò)誤,使用斷點(diǎn)
編程中最可怕的錯(cuò)誤不是語(yǔ)法,而是邏輯錯(cuò)誤,因?yàn)檫壿嬪e(cuò)誤是最難debug的。一個(gè)很有用的工具就是斷點(diǎn)。
斷點(diǎn)應(yīng)該是debug中最常用的工具。Matlab的編輯器中可以很方便的實(shí)現(xiàn)(在每一行的開頭有個(gè)小橫線,單擊一下變成紅點(diǎn),然后就設(shè)置成斷點(diǎn)了)。當(dāng)程序運(yùn)行到斷點(diǎn)之后就會(huì)中斷,然后會(huì)在主窗口顯示K>>的標(biāo)志,這時(shí)你可以輸入命令查看內(nèi)存情況等等。一步步的跟蹤,直到變量值跟你的預(yù)期不一樣,這時(shí)你就可以很容易的找到錯(cuò)誤在什么地方發(fā)生了。
6、如果試了很多辦法還是不能找到錯(cuò)誤,那就嘗試一下終極debug方法,適用于各種語(yǔ)言 真的有這么強(qiáng)大的debug方法么?有的!這個(gè)方法很簡(jiǎn)單,離開你的電腦,找一個(gè)人,隨便什么人,說(shuō)一遍你的程序的思路,說(shuō)的越具體越好。多數(shù)情況下,你在闡述的過程中,程序的錯(cuò)誤就會(huì)突然從你的大腦里冒出來(lái)了。
如果實(shí)在找不到就找大街上的乞討人員吧,給他們十塊錢他們應(yīng)該很樂意聽你說(shuō)的,并且說(shuō)不定還可以給你一些很好的建議,然后告訴你,十年前他們也在做同樣的工作。
7、理解通用與專用之間的權(quán)衡
你可以寫一個(gè)通用的程序,也可以寫一個(gè)專用的程序,這需要你的權(quán)衡。一般情況下,專用的程序你可以研究清楚其結(jié)構(gòu),從而找到最快的算法,而通用的程序則不能達(dá)到這點(diǎn),因?yàn)橐紤]到很多很多特殊的情況。
比如給定一個(gè)分布函數(shù)F(x),我想要寫一個(gè)隨機(jī)數(shù)生成器是的生成的隨機(jī)數(shù)的分布函數(shù)為F(x). 方法很簡(jiǎn)單,先生成一個(gè)均勻分布的隨機(jī)數(shù)a,是的a~U(0,1),然后計(jì)算F的反函數(shù)在a處的值。很多人可能會(huì)用fsolve之類的辦法,但是這不是最快的。如果我們已經(jīng)知道F是一個(gè)單增的函數(shù),那么這個(gè)解有且僅有一個(gè)。這樣我們就可以直接使用一些算法去解決他。 類似的問題還有如果我們知道導(dǎo)數(shù),那么求最優(yōu)化最好的方法也許是牛頓法,而不是用單純形法去尋找,那樣既不精確又慢
但是通用的程序也是非常吸引人的,因?yàn)榭梢源蟠蟮臏p少開發(fā)的時(shí)間,如果計(jì)算時(shí)間不是首要考慮的問題的話。
8、盡量使你的程序更通用
也就是說(shuō),盡量使你的代碼能被重復(fù)利用。這樣可以節(jié)省很多寫程序的時(shí)間,而你發(fā)現(xiàn)這些東西都是你寫過很多遍的。
很多人沒有一個(gè)寫通用程序的好的習(xí)慣。比如說(shuō)下面一個(gè)最簡(jiǎn)單的例子:
x=randn(10000,1);
y2=zeros(10000 ,1);
for i=1: 10000
y2(i)=exp(x(i));
end
這樣寫的問題在于,如果你的x需要改變了,比如改成100維,那么你需要修改不止一次。但是如果你寫成這樣:
x=randn(10000,1);
y2=zeros(length(x),1);
for i=1:length(x)
y2(i)=exp(x(i));
end
那么是不是僅僅修改一個(gè)地方就可以了呢?
9、盡量使你的程序模塊化
把需要重復(fù)進(jìn)行的程序盡量寫成函數(shù),便于修改和維護(hù)。寫成函數(shù)的好處是使你在同一時(shí)間只關(guān)注一個(gè)問題,但是如果你把所有的東西都放在一個(gè)程序里,你可能需要考慮的問題就不止一個(gè)了。
10、在使用變量之前先進(jìn)行聲明,盡量少使用矩陣變維操作
這不是matlab必須的,但是是十分建議的。比如如果你寫下了如下的代碼:
for i=1:10000
y=y+i;
end
你沒有聲明y,而是直接試用了它,很可能會(huì)出現(xiàn)問題。比如你的內(nèi)存里之前已經(jīng)有y,y=10,那么你的計(jì)算結(jié)果是不是會(huì)大10呢?更有可能的情況是你之前已經(jīng)運(yùn)行了這個(gè)程序,但是你的開頭沒有clear(開頭使用clear也是很好的習(xí)慣)
此外,盡量少使用矩陣變維的操作。因?yàn)槊看温暶髯兞炕蛘呔仃囎兙S,Matlab總要申請(qǐng)一個(gè)新內(nèi)存空間,頻繁進(jìn)行變維操作會(huì)很快侵蝕掉你的內(nèi)存空間,這點(diǎn)在大矩陣的時(shí)候特別重要。
11、計(jì)算盡量多的使用矩陣,盡量少的使用循環(huán)
循環(huán)的好處是比較容易想,比較容易些,但是也比較難以維護(hù),最重要的,速度很慢。 比如下面一個(gè)例子:
x=randn(10000,1);
tic
y1=exp(x);
toc
tic
y2=zeros(length(x),1);
for i=1:length(x)
y2(i)=exp(x(i));
end
toc
輸出結(jié)果:
Elapsed time is 0.000287 seconds.
Elapsed time is 0.000963 seconds.
可見使用矩陣比使用循環(huán)快了三倍。
12、如果進(jìn)行大量的重復(fù)操作,可以考慮使用并行計(jì)算
比如在做Monte Carlo模擬的時(shí)候,你的每次循環(huán)都是獨(dú)立的(每次循環(huán)不影響下一次循環(huán)的結(jié)果),那么可以考慮使用并行處理,如果你的電腦是多核的。
首先,你要用以下命令創(chuàng)建幾個(gè)并行的進(jìn)程:
matlabpool local 4
其中4是你的計(jì)算機(jī)核心數(shù)。然后,使用parfor代替for循環(huán)就可以了。但是使用這個(gè)命令一定要注意使用前提和不要每次循環(huán)訪問同樣的可變的變量。
13、盡量少的涉及符號(hào)運(yùn)算
Matlab最強(qiáng)大的是其數(shù)值運(yùn)算能力,而不是符號(hào)運(yùn)算。如果你需要處理諸如求導(dǎo)求極限之類的工作,用Mathematica或者M(jìn)aple。特別是盡量少的使用符號(hào)定義的函數(shù),比如用fsolve之類的,如果只是計(jì)算一次兩次非常方便,但是如果進(jìn)行大量重復(fù)的此類運(yùn)算,其速度很慢,最好研究清楚要解的函數(shù)的性質(zhì),用專門的算法進(jìn)行處理,matlab大多數(shù)時(shí)候也有專門的工具箱。
篇四:多核
多核的概念是什么?多CPU是多核嗎?機(jī)群是多核嗎?
多核是片上多處理器的的俗稱,是指將多個(gè)處理器集成到一個(gè)芯片中的技術(shù)。
多CPU不是多核,機(jī)群也不是多核。
并行計(jì)算機(jī)的概念是什么?
1.由一組處理單元組成。
2.各處理單元之間相互通信與協(xié)作。
3.以更快的速度共同完成一項(xiàng)大規(guī)模計(jì)算任務(wù)。
弗林將計(jì)算機(jī)分為哪幾類?馮·諾依曼計(jì)算機(jī)機(jī)屬于哪類?支持SSE指令集的Intel處理器屬于哪類?多核、多CPU、機(jī)群都屬于哪類?
SISD:單指令單數(shù)據(jù)流
SIMD:?jiǎn)沃噶疃鄶?shù)據(jù)流
MISD:多指令單數(shù)據(jù)流
MIMD:多指令多數(shù)據(jù)流
馮·諾依曼計(jì)算機(jī)機(jī)屬于
支持SSE指令集的Intel處理器SIMD
多核,多CPU,機(jī)群屬于MIMD。
多核、多處理器系統(tǒng)與多計(jì)算機(jī)系統(tǒng)有什么區(qū)別?
多核、多處理器系統(tǒng):多個(gè)核心共享內(nèi)存。
多計(jì)算機(jī)系統(tǒng):每個(gè)節(jié)點(diǎn)有獨(dú)立內(nèi)存。
多核與多處理器的區(qū)別:
1.多核之間可能共享cache,多處理器間不共享。
2.多核間通過片上總線相連,多處理器間通過系統(tǒng)總線相連。
3.多核在尺寸功耗方面具有優(yōu)勢(shì),兩者編程優(yōu)化也有所不同。
按地址組織模式的不同,當(dāng)前主流并行計(jì)算機(jī)可以分為哪幾類,各有什么特點(diǎn)?SMP、DSM、MPP、Cluster分別屬于哪類?
1均勻訪存(共享存儲(chǔ)):所有核心平等訪存,時(shí)間相同。
2.分布式共享存儲(chǔ)(DSM):每個(gè)節(jié)點(diǎn)有局部?jī)?nèi)存,內(nèi)存空間統(tǒng)一編制,每個(gè)節(jié)點(diǎn)可以高速訪問局部?jī)?nèi)存,低速訪問其他節(jié)點(diǎn)局部?jī)?nèi)存。
3.分布式(局部)訪問:節(jié)點(diǎn)只能訪問局部?jī)?nèi)存,與其他節(jié)點(diǎn)傳遞信息通過消息完成。 SMP:(對(duì)稱多處理器)采用商品化的處理器,這些處理器通過總線或交叉開關(guān)連接到共享存儲(chǔ)器。每個(gè)處理器可等同地訪問共享存儲(chǔ)器、I/O設(shè)備和操作系統(tǒng)服務(wù)。共享節(jié)點(diǎn)稱為系統(tǒng)瓶頸,擴(kuò)展性有限。屬于均勻訪存類。
DSM:(分布共享存儲(chǔ)并行機(jī))存儲(chǔ)器物理上分布在不同的節(jié)點(diǎn)中,但通過硬件和軟件方法實(shí)現(xiàn)內(nèi)存的統(tǒng)一編制。屬于分布式共享存儲(chǔ)。
MPP:(大規(guī)模并行機(jī))處理節(jié)點(diǎn)采用商品微處理器,能擴(kuò)展至上萬(wàn)個(gè)處理器。采用高通信帶寬和低延遲的互聯(lián)網(wǎng)絡(luò)。各個(gè)進(jìn)程有自己的地址空間,進(jìn)程間通信消息傳遞相互作用。由分布式操作系統(tǒng)管理。屬于分布式(局部)訪問。
Cluster:(機(jī)群)每個(gè)節(jié)點(diǎn)是一個(gè)完整的計(jì)算機(jī),有自己的磁盤和操作系統(tǒng)。通過商用互連網(wǎng)絡(luò)連接。運(yùn)行分布式程序,完成并行計(jì)算。屬于分布式(局部)訪問。
指令級(jí)并行有什么特點(diǎn)?
有兩種技術(shù):流水線技術(shù)和多發(fā)射技術(shù)。
流水線技術(shù):分解指令執(zhí)行步驟,讓前后指令的步驟重疊執(zhí)行;后續(xù)指令可以超越前面的指令執(zhí)行。
多發(fā)射技術(shù):流水線上每個(gè)功能部件都能同時(shí)執(zhí)行多條指令。
特點(diǎn):并行由同一控制器控制,主要由硬件和編譯器支持,對(duì)高級(jí)語(yǔ)言程序員可以保持透明。
多核架構(gòu)的分類方法有兩種?每種下面有哪些分類?IBM的Cell處理器屬于何種架構(gòu)? 按核之間關(guān)系分類:同構(gòu);異構(gòu)
按存儲(chǔ)結(jié)構(gòu)分:獨(dú)占cache;共享cache。
IBM的Cell處理器屬于
多核在硬件設(shè)計(jì)上面臨哪些問題?
1.如何讓組織核心,設(shè)計(jì)架構(gòu),同構(gòu)?異構(gòu)?
2.如何保證cache的一致性。
3.如何滿足多核所需的總線帶寬。
支持多核的操作系統(tǒng),有哪幾種任務(wù)調(diào)度方法,各有什么特點(diǎn)?
1.主從模式:有一個(gè)核負(fù)責(zé)分配任務(wù),其他核執(zhí)行,主處理器稱為系統(tǒng)瓶頸。
2.共享隊(duì)列:進(jìn)程在核間切換嚴(yán)重降低性能,進(jìn)程隊(duì)列需加鎖,造成等待。
3.獨(dú)占隊(duì)列:負(fù)載有可能不均衡。
什么是數(shù)據(jù)相關(guān)性?
兩個(gè)操作(指令)訪問同一內(nèi)存單元,且其中至少有一個(gè)寫內(nèi)存操作。
順序一致性對(duì)程序執(zhí)行順序的要求是什么?
訪存操作先開始的先執(zhí)行,不論訪存指令是在哪個(gè)處理器上執(zhí)行的。
弱一致性與順序一致性的區(qū)別是什么?釋放一致性與弱一致性的區(qū)別是什么?
順序一致性:對(duì)所有的訪存操作要求順序
弱一致性:有的訪存操作可以亂序,但同步操作下,必須要求順序。(引用同步操作實(shí)現(xiàn)獨(dú)占共享單元)
釋放一致性:將同步操作分為獲取和釋放兩種。獲取操作時(shí),需要將先前對(duì)內(nèi)存的改寫完成;釋放操作時(shí),應(yīng)保證對(duì)共享單元的改寫能夠徹底完成。
在Cache一致性協(xié)議中,當(dāng)發(fā)生改寫時(shí),有哪兩種處理方式,各有什么優(yōu)缺點(diǎn)?
1.寫使無(wú)效
優(yōu)點(diǎn):改寫數(shù)據(jù)的處理器可以獨(dú)占該數(shù)據(jù),直到其他處理器改寫該數(shù)據(jù)。
缺點(diǎn):無(wú)效cache會(huì)引起cache不命中,如果多個(gè)處理器頻繁改寫同一數(shù)據(jù),會(huì)造成cache不命中頻繁發(fā)生(乒乓效應(yīng))。
2.寫更新
優(yōu)點(diǎn):cache中的備份一直保持有效。
缺點(diǎn):數(shù)據(jù)廣播需要帶寬較高。
進(jìn)程有哪些要素?線程之間共享了哪些進(jìn)程的要素?
1.獨(dú)立的指令流與數(shù)據(jù)
2.硬件上下文:程序運(yùn)行時(shí)寄存器的狀態(tài)。
3.地址空間:可以由進(jìn)程訪問的線性(虛擬)地址的集合
4.資源:文件,設(shè)備,中斷
獨(dú)占指令流和硬件上下文;地址空間和資源
為什么進(jìn)程切換的效率低于線程切換?
進(jìn)程切換:更易引起cache和tlb的失效。(tlb頁(yè)表緩存)
線程切換:不易引起以上兩個(gè)問題,共享進(jìn)程地址空間,只修改寄存器和硬件上下文。
簡(jiǎn)述使用系統(tǒng)API創(chuàng)建線程的步驟。Win32下有哪幾種方式可以結(jié)束線程?
1.聲明線程回調(diào)函數(shù)
2.通過API函數(shù)向系統(tǒng)注冊(cè)回調(diào)函數(shù)
3.操作系統(tǒng)調(diào)用回調(diào)函數(shù)執(zhí)行
結(jié)束線程:
1.主動(dòng)退出
2.Main函數(shù)退出
3.強(qiáng)制退出(調(diào)用系統(tǒng)函數(shù)退出其他線程)
在Win32下有哪幾種典型同步工具,各有什么特點(diǎn)?
Linux下的同步工具讀寫鎖有什么特點(diǎn)?
什么是線程安全性?如何判斷函數(shù)的線程安全性?
阿姆達(dá)爾定律的主要內(nèi)涵是什么?
如何解決多線程負(fù)載不均衡的問題?
什么是乒乓效應(yīng),如何解決?
篇五:fluent6.3多核調(diào)用方法
如果是FLUENT 6.3 之類的版本一定要按下面命令操作,否則運(yùn)算時(shí)僅僅相當(dāng)于單核運(yùn)算,F(xiàn)在多核機(jī)器已經(jīng)非常普及,所以掌握多核并行運(yùn)行方法非常必要。
開始->運(yùn)行 里輸入: X:Fluent.Inc tbin tx86fluent.exe 3d -t2 后面的"-t2"表示雙核、四核用"-t4",依此類推
本機(jī)輸入后,界面顯示:
Loading "D:Fluent.Incfluent6.3.26libfl114.dmp"
Done.
Warning: -path flag not specified.
Defaulting to -pathD:Fluent.Inc
Welcome to Fluent 6.3.26
Copyright 2006 Fluent Inc.
All Rights Reserved
Done.
Loading "D:Fluent.Incfluent6.3.26libflprim1119.dmp"
Host spawning Node 0 on machine "TONY" (ntx86).
You can click CTRL+C to stop the startup process!
------------------------------------------------------------------------------ ID Comm. Hostname
O.S. PID Mach ID HW ID Name
------------------------------------------------------------------------------
host net TONY Windows-32 3660 0 1844 Fluent Host
n1 mpich2 TONY Windows-32 3448 0 1 Fluent Node
n0* mpich2 TONY Windows-32 4028 0 0 Fluent Node ------------------------------------------------------------------------------
如果是AMD處理器在XP環(huán)境下運(yùn)行,請(qǐng)不要忘記給系統(tǒng)打上多核補(bǔ)丁以提高運(yùn)算效率。
【學(xué)習(xí)方法多核診斷題】相關(guān)文章:
學(xué)校診斷報(bào)告11-14
社區(qū)診斷報(bào)告12-11
開放性應(yīng)用題的學(xué)習(xí)方法總結(jié)01-23
教學(xué)診斷與改進(jìn)方案10-07
辦理醫(yī)療診斷證明范文06-24
疾病診斷證明書11-11
診斷證明書怎么寫11-11
臨床醫(yī)學(xué)檢測(cè)及診斷的論文10-08
人力資源診斷分析報(bào)告10-30