拉斯?米勒希望學(xué)生從第一天起就接受并行架構(gòu)。
每年有超過(guò)350名計(jì)算機(jī)科學(xué)學(xué)生參加拉斯?米勒(RussMiller)秋季學(xué)期的離散結(jié)構(gòu)課程,其中約90%是新生。學(xué)習(xí)到第5周時(shí),學(xué)生將問(wèn)題拆解成小塊,學(xué)習(xí)“同時(shí)解決每塊問(wèn)題的方法”——并行計(jì)算。
今天,多核處理器為筆記本電腦和手機(jī)提供強(qiáng)大的功能。分布式云服務(wù)器或超級(jí)計(jì)算機(jī)集群處理大數(shù)據(jù)集,以改善臉譜網(wǎng)的新聞推送或預(yù)測(cè)天氣。要充分利用這些系統(tǒng),就需要并行算法?!斑@是一個(gè)并行的世界。”作為紐約州立大學(xué)布法羅分校的計(jì)算機(jī)科學(xué)家,米勒說(shuō),“為什么沒(méi)有人為新生教授并行算法課程?”
目前,大多數(shù)入門計(jì)算機(jī)科學(xué)課程從串行編程開(kāi)始學(xué)習(xí),計(jì)算機(jī)一次只執(zhí)行一個(gè)指令。而一些大學(xué)雖然將并行思維融入本科課程,但往往只提供相關(guān)內(nèi)容的高級(jí)選修課。還有一些大學(xué)通常在第2或第3個(gè)學(xué)期開(kāi)始學(xué)習(xí)并行課程。大學(xué)的需求可能會(huì)有所不同,但是米勒認(rèn)為,傳授并行思想“日益迫切”,如果早點(diǎn)做到這一點(diǎn),它就可以成為“第二本性”。于是,在2013年,米勒把在紐約州立大學(xué)布法羅分校教授的離散數(shù)學(xué)改為教授并行算法,沒(méi)有先修課程限制。
他說(shuō),大部分必修離散數(shù)學(xué)課程教授的內(nèi)容要等到學(xué)生3年級(jí)或4年級(jí)時(shí)才需要。“這只是在浪費(fèi)大家的時(shí)間,”他說(shuō),“他們只是應(yīng)付考核。”花三四個(gè)星期教授標(biāo)準(zhǔn)邏輯思維和分治戰(zhàn)略基礎(chǔ)之后,米勒開(kāi)始教授并行知識(shí)。他首先介紹20世紀(jì)60年代到21世紀(jì)并行計(jì)算架構(gòu)的背景情況。該學(xué)期的其他時(shí)間,他教授跨硬件的并行算法,例如搜索和排序等任務(wù)。學(xué)生們學(xué)習(xí)諸如圖像分割應(yīng)用程序這樣的內(nèi)容。
每次學(xué)習(xí)一個(gè)新算法的課程過(guò)后,學(xué)生就會(huì)用新算法通過(guò)數(shù)學(xué)方式分析舊的并行硬件架構(gòu)的理論性能。他們學(xué)習(xí)如何改變算法,以處理現(xiàn)代真實(shí)世界的架構(gòu),如云或網(wǎng)格。
因?yàn)榻淌诘膬?nèi)容不是關(guān)于編程本身,所以米勒可以跳過(guò)棘手的細(xì)節(jié)問(wèn)題,如句法規(guī)則或調(diào)試方法,并且有足夠的時(shí)間向?qū)W生傳授并行第一的思維模式。
擔(dān)任美國(guó)計(jì)算機(jī)協(xié)會(huì)計(jì)算機(jī)課程指導(dǎo)委員會(huì)聯(lián)合主席的斯坦福大學(xué)計(jì)算機(jī)科學(xué)家邁赫蘭?沙哈米(Mehran Sahami)說(shuō):“這樣做能起到效果?!庇?jì)算機(jī)協(xié)會(huì)和IEEE大約每10年就會(huì)聯(lián)合引入新的指導(dǎo)原則,2013年發(fā)布的最新原則建議將并行教育整合到整個(gè)課程中。
但是一些教育工作者發(fā)現(xiàn),他們深度接受并行的能力受其他需求的限制。一些入門計(jì)算機(jī)科學(xué)課程的導(dǎo)師,例如印第安納州迪堡大學(xué)的史蒂文?博格茨(Steven Bogaerts),針對(duì)線程(可并行運(yùn)行的程序小節(jié))以及如何阻止它們同時(shí)訪問(wèn)相同的資源,花了大約一個(gè)星期的時(shí)間。但對(duì)博格茨來(lái)說(shuō),“這已經(jīng)是一個(gè)非常完整的課程了”,所以想更進(jìn)一步就很難了。
有人指出,與并行性相比,代碼性能更需增強(qiáng)。麻省理工學(xué)院計(jì)算機(jī)科學(xué)家查爾斯?E?萊瑟森(CharlesE. Leiserson)說(shuō):“在所有獲得性能效果的方法中,并行性是最難的。”他教授了有關(guān)性能工程的初高級(jí)課程。萊瑟森說(shuō),在具體的硬件執(zhí)行過(guò)程中,并行算法并不一定比順序算法的運(yùn)行速度更快。他說(shuō),掌握和理解其他因素也很重要,例如內(nèi)存層次結(jié)構(gòu)或編譯器。
除了小示例外,米勒的教學(xué)并沒(méi)有涵蓋內(nèi)存層,他對(duì)學(xué)生的未來(lái)很樂(lè)觀。他說(shuō)他們有3年半的時(shí)間來(lái)學(xué)習(xí)如何編寫高效的代碼。在他的課程中,學(xué)生們正在學(xué)習(xí)如何高水平地解決問(wèn)題。“我希望他們認(rèn)為世界對(duì)他們是開(kāi)放的。”他說(shuō)。
往期推薦
新型“野外技術(shù)”—用數(shù)據(jù)打擊偷獵