国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

編程語言Julia并行計(jì)算實(shí)現(xiàn)模式探討

2020-07-04 02:14龐雙玉蘇翔宇
電腦知識(shí)與技術(shù) 2020年14期
關(guān)鍵詞:任務(wù)

龐雙玉 蘇翔宇

摘要:Julia編程語言是美國麻省理工學(xué)院MIT正式發(fā)布的面向科學(xué)計(jì)算的高性能編程語言。Julia集合c的速度,Matlab數(shù)學(xué)處理特征,Python的通用編程特性與Shen的命令行處理。Julia通過協(xié)程和遠(yuǎn)程宏調(diào)用機(jī)制實(shí)現(xiàn)了并行計(jì)算,是第一個(gè)編程語言級(jí)別上實(shí)現(xiàn)并行處理的模式的語言。本文探討Julia并行計(jì)算實(shí)現(xiàn)模式并與hadoop集群分布式系統(tǒng)進(jìn)行對(duì)比,討論其各自的優(yōu)劣。

關(guān)鍵詞:Julia;協(xié)程;任務(wù);并行處理;hadoop集群

中圖分類號(hào):G424 文獻(xiàn)標(biāo)識(shí)碼:A

文章編號(hào):1009-3044(2020)14-0242-02

1引言

JuliaJulia是一個(gè)面向科學(xué)計(jì)算的高性能動(dòng)態(tài)高級(jí)程序設(shè)計(jì)語言.Julia是一種高級(jí)通用動(dòng)態(tài)編程語言,它最初是為了滿足高性能數(shù)值分析和計(jì)算科學(xué)的需要而設(shè)計(jì)的,不需要編譯器,速度快,也可用于客戶端和服務(wù)器的Web用途.Julia從一開始就為高性能而設(shè)計(jì)。Julia程序可通過LLVM編譯為多個(gè)平臺(tái)的高效本機(jī)代碼。它具有如下特性。

(1)動(dòng)態(tài)

Julia是動(dòng)態(tài)類型的,感覺就像是一種腳本語言,并且對(duì)交互使用具有良好的支持。

(2)可選輸入

Julia具有豐富的描述性數(shù)據(jù)類型語言,并且類型聲明可用于闡明和鞏固程序。

一般Julia使用多重調(diào)度作為范例,使表達(dá)許多面向?qū)ο蠛凸δ苄跃幊棠J阶兊萌菀?。它提供異步I/O,調(diào)試,日志記錄,性能分析,程序包管理器等。

(3)易于使用

Julia具有高級(jí)語法,因此對(duì)于任何背景或經(jīng)驗(yàn)水平的程序員來說,它都是一種可訪問的語言。瀏覽Julia的微基準(zhǔn)測(cè)試,以了解該語言。

(4)開源的

Julia是根據(jù)MIT許可提供的,所有人免費(fèi)使用。所有源代碼都可以在GitHub上公開查看。

2Julia并行處理模式

并行和并發(fā)是討論編程語言多任務(wù)處理時(shí),經(jīng)常提及的。并行和并發(fā)是兩個(gè)不同的概念。

并發(fā)指的是計(jì)算處理單元同時(shí)對(duì)多個(gè)進(jìn)程或者線程進(jìn)行響應(yīng)。并發(fā)處理時(shí),多個(gè)進(jìn)程或者線程共享計(jì)算單元。多個(gè)進(jìn)程或者線程之間,依靠同步機(jī)制來協(xié)調(diào)。其中一個(gè)進(jìn)程或者線程占用計(jì)算單元時(shí),另一個(gè)必須等待。類似于信道復(fù)用,對(duì)用戶來說,是同時(shí)執(zhí)行的。

并行指的是多個(gè)任務(wù)同時(shí)運(yùn)行,是多個(gè)任務(wù)同時(shí)運(yùn)行在多個(gè)計(jì)算單元上,是真正的多任務(wù)同時(shí)執(zhí)行。兩者之間的區(qū)別,如下圖所示。并發(fā)處理,多個(gè)任務(wù)共占計(jì)算單元。

并行處理多個(gè)任務(wù)同時(shí)在多個(gè)計(jì)算單元上運(yùn)行。

Julia提供了一個(gè)基于消息傳遞的多重處理環(huán)境,允許程序在獨(dú)立的內(nèi)存域內(nèi)同時(shí)控制并發(fā)多任務(wù)執(zhí)行。這個(gè)內(nèi)存空間由每個(gè)CPU單獨(dú)控制,他們之間通過內(nèi)部消息機(jī)制來通信。Julia的消息機(jī)制不同于MPI,并不是收發(fā),而是類似于函數(shù)調(diào)用的機(jī)制。

并行程序的兩個(gè)基礎(chǔ)是遠(yuǎn)程引用(Remote Reference)和遠(yuǎn)程調(diào)用(Remote Call)遠(yuǎn)程引用是引用其他特定處理器的對(duì)象,這個(gè)引用可被其他任何處理器訪問。遠(yuǎn)程調(diào)用是指的是一個(gè)處理進(jìn)程,發(fā)起請(qǐng)求,用于以一定參數(shù)調(diào)用其他處理進(jìn)程(或許是自身)中某個(gè)許可的函數(shù)。

Julia將進(jìn)程稱為worker,遠(yuǎn)程調(diào)用通過本地進(jìn)程在遠(yuǎn)程worker中啟動(dòng)某一處理過程。比如啟動(dòng)一個(gè)函數(shù)。遠(yuǎn)程調(diào)用在啟動(dòng)以后,并不阻塞等待,而是執(zhí)行遠(yuǎn)程調(diào)用后面的代碼,遠(yuǎn)程調(diào)用啟動(dòng)以后返回一個(gè)Remote Reference r對(duì)象,遠(yuǎn)程調(diào)用結(jié)果,還需要用fetch0語句來獲取。

Julia也提供了宏@spawnat,該宏實(shí)現(xiàn)了remotecall遠(yuǎn)程調(diào)用的功能,@spawnat有兩個(gè)參數(shù),@spawnat pid表達(dá)式,其中pid指明運(yùn)行處理任務(wù)的worker id,表達(dá)式指明對(duì)遠(yuǎn)端worker運(yùn)行處理任務(wù)后返回的結(jié)果要進(jìn)行的計(jì)算。

3Julia并行計(jì)算實(shí)例

以一個(gè)在遠(yuǎn)端處理器創(chuàng)建并返回矩陣的實(shí)例,演示Julia遠(yuǎn)程調(diào)用過程。

julia>using Distributed//使用分布式系統(tǒng)

iulia>addprocs(4)//添加4個(gè)worker

Julia>r=remotecau(2,rand,2,2)//發(fā)起遠(yuǎn)程調(diào)用,調(diào)用遠(yuǎn)程worker創(chuàng)建一個(gè)隨機(jī)矩陣

其中第一個(gè)參數(shù)2是遠(yuǎn)端worker id第二個(gè)參數(shù)rand是在遠(yuǎn)程work上啟動(dòng)的函數(shù)。

第三和第四個(gè)參數(shù)都是2,是傳遞給rand函數(shù)的參數(shù),指明創(chuàng)建一個(gè)2x2的隨機(jī)矩陣。

RemoteRef(2,1,5)//生成RenoteRef對(duì)象

其中第一個(gè)參數(shù)2是遠(yuǎn)端worker id第二個(gè)參數(shù)1發(fā)起遠(yuǎn)程調(diào)用的worker id第三個(gè)參數(shù)是為當(dāng)前RemoteRef分配的id.

Julia>fetch(r)//捕獲RemoteRef對(duì)象

生成的2x2隨機(jī)矩陣

2x2Float64Array:

4julia與分布式大數(shù)據(jù)hadoop平臺(tái)的比較

Julia從編程語言級(jí)別實(shí)現(xiàn)了并行計(jì)算,而分布式大數(shù)據(jù)平臺(tái)也實(shí)現(xiàn)了并行計(jì)算,現(xiàn)在從性能和響應(yīng)時(shí)間等以下幾個(gè)方面把二者進(jìn)行比較。

(1)二者實(shí)現(xiàn)基礎(chǔ)是不一樣的,hadoop構(gòu)建了一個(gè)獨(dú)立的分布式系統(tǒng),julia是通過SSH方式無密碼登陸遠(yuǎn)程特定的機(jī)器,并啟動(dòng)機(jī)器上的Julia工作進(jìn)程。

(2)Hadoop有自己的文件系統(tǒng)HDFS,并行處理過程同時(shí)依賴于HDFS,從結(jié)構(gòu)上分為Namenode和DateNode節(jié)點(diǎn),iulia并行計(jì)算中,每個(gè)機(jī)器的地位是平等的,進(jìn)程級(jí)別之間的消息通信,不涉及文件系統(tǒng)。

(3)Hadoop善于數(shù)據(jù)分分析任務(wù),Julia善于數(shù)據(jù)處理和計(jì)算任務(wù)。

5結(jié)論

Julia在編程級(jí)別上實(shí)現(xiàn)了多核并行計(jì)算處理,從而能夠進(jìn)行大規(guī)模數(shù)據(jù)集上的科學(xué)計(jì)算,這是fortran語言所無法實(shí)現(xiàn)的,Julia這種并行模式也為構(gòu)建基于Julia的并行分布式環(huán)境打下了基礎(chǔ)。在軟件級(jí)別上實(shí)現(xiàn)并行分布式環(huán)境會(huì)成為一種趨勢(shì)。

[通聯(lián)編輯:聞翔軍]

猜你喜歡
任務(wù)
論建設(shè)工程項(xiàng)目信息管理
活化英語課堂教學(xué)“三步驟”探微
關(guān)于中職電工電子實(shí)訓(xùn)教學(xué)的初步探索
從預(yù)習(xí)著手,構(gòu)建高效的英語寫作課堂
淺談任務(wù)型教學(xué)在高中英語語法教學(xué)中的應(yīng)用
建宁县| 太仆寺旗| 吴堡县| 绿春县| 莒南县| 大连市| 绥德县| 米易县| 多伦县| 德昌县| 景谷| 宿松县| 永顺县| 凤山县| 双峰县| 横山县| 子洲县| 沧源| 五大连池市| 横峰县| 嘉善县| 德惠市| 抚松县| 和田市| 东乡族自治县| 安图县| 呼伦贝尔市| 隆尧县| 钦州市| 库尔勒市| 鄢陵县| 黔东| 福鼎市| 岳普湖县| 聊城市| 南华县| 盐山县| 宁武县| 齐齐哈尔市| 宁安市| 呼图壁县|