




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、七月 221/55并行程序設(shè)計(jì)簡(jiǎn)介曙光信息產(chǎn)業(yè)(北京)有限公司七月 222/55講座內(nèi)容提示基本概念基本的MPI點(diǎn)到點(diǎn)通信(Point to point)MPI中API的主要內(nèi)容,為MPI最基本,最重要的內(nèi)容MPI程序的編譯和運(yùn)行實(shí)例七月 223/55參考文獻(xiàn)MPI-the complete reference. Marc Snir, MIT Press, 1998. ISBN 0262692155, 0262692163.Using MPI : portable parallel programming with the message-passing interface, William
2、Gropp, MIT Press, 1999. 2nd edition. ISBN 0262571323.Using MPI-2 : advanced features of the message-passing interface. William Gropp, MIT Press, 1999. ISBN 0262571331.高性能計(jì)算并行編程技術(shù)-MPI并行程序設(shè)計(jì),都志輝,清華大學(xué)出版社, 2001年8月。七月 224/55多線程庫標(biāo)準(zhǔn) Win32 API. POSIX threads.編譯制導(dǎo)標(biāo)準(zhǔn) OpenMP 可移植共享存儲(chǔ)并行編程標(biāo)準(zhǔn).消息傳遞庫標(biāo)準(zhǔn) MPI PVM并行編程標(biāo)準(zhǔn)
3、本討論的重點(diǎn)七月 225/55消息傳遞并行程序設(shè)計(jì)消息傳遞并行程序設(shè)計(jì)指用戶必須通過顯式地發(fā)送和接收消息來實(shí)現(xiàn)處理機(jī)間的數(shù)據(jù)交換。在這種并行編程中,每個(gè)并行進(jìn)程均有自己獨(dú)立的地址空間,相互之間訪問不能直接進(jìn)行,必須通過顯式的消息傳遞來實(shí)現(xiàn)。這種編程方式是大規(guī)模并行處理機(jī)(MPP)和機(jī)群(Cluster)采用的主要編程方式。并行計(jì)算粒度大,特別適合于大規(guī)??蓴U(kuò)展并行算法由于消息傳遞程序設(shè)計(jì)要求用戶很好地分解問題,組織不同進(jìn)程間的數(shù)據(jù)交換,并行計(jì)算粒度大,特別適合于大規(guī)模可擴(kuò)展并行算法.消息傳遞是當(dāng)前并行計(jì)算領(lǐng)域的一個(gè)非常重要的并行程序設(shè)計(jì)方式七月 226/55什么是MPI?Massage Pas
4、sing Interface:是消息傳遞函數(shù)庫的標(biāo)準(zhǔn)規(guī)范,由MPI論壇開發(fā),支持Fortran和C一種新的庫描述,不是一種語言。共有上百個(gè)函數(shù)調(diào)用接口,在Fortran和C語言中可以直接對(duì)這些函數(shù)進(jìn)行調(diào)用MPI是一種標(biāo)準(zhǔn)或規(guī)范的代表,而不是特指某一個(gè)對(duì)它的具體實(shí)現(xiàn)MPI是一種消息傳遞編程模型,并成為這種編程模型的代表和事實(shí)上的標(biāo)準(zhǔn)七月 227/55MPI的發(fā)展過程發(fā)展的兩個(gè)階段MPI 1.1: 1995MPICH:是MPI最流行的非專利實(shí)現(xiàn),由Argonne國(guó)家實(shí)驗(yàn)室和密西西比州立大學(xué)聯(lián)合開發(fā),具有更好的可移植性.MPI 1.22.0:動(dòng)態(tài)進(jìn)程, 并行 I/O, 遠(yuǎn)程存儲(chǔ)訪問、支持F90和C+
5、(1997).七月 228/55為什么要用MPI?高可移植性MPI已在IBM PC機(jī)上、MS Windows上、所有主要的Unix工作站上和所有主流的并行機(jī)上得到實(shí)現(xiàn)。使用MPI作消息傳遞的C或Fortran并行程序可不加改變地運(yùn)行在IBM PC、MS Windows、Unix工作站、以及各種并行機(jī)上。七月 229/55:從簡(jiǎn)單入手Init和Finalize下面我們首先分別以C語言和Fortran語言的形式給出一個(gè)最簡(jiǎn)單的MPI并行程序Hello (下頁).該程序在終端打印出Hello World!字樣.“Hello World”:一聲來自新生兒的問候. 七月 2210/55Hello wor
6、ld(C)#include #include mpi.h“main( int argc, char *argv ) MPI_Init( &argc, &argv ); printf( Hello, world!n ); MPI_Finalize();七月 2211/55Hello world(Fortran)program maininclude mpif.hinteger ierrcall MPI_INIT( ierr )print *, Hello, world!call MPI_FINALIZE( ierr )end七月 2212/55C和Fortran中MPI函數(shù)約定C必須包含mpi.
7、h.MPI 函數(shù)返回出錯(cuò)代碼或 MPI_SUCCESS成功標(biāo)志.MPI-前綴,且只有MPI以及MPI_標(biāo)志后的第一個(gè)字母大寫,其余小寫.Fortran必須包含mpif.h.通過子函數(shù)形式調(diào)用MPI,函數(shù)最后一個(gè)參數(shù)為返回值.MPI-前綴,且函數(shù)名全部為大寫.MPI函數(shù)的參數(shù)被標(biāo)志為以下三種類型:IN:參數(shù)在例程的調(diào)用中不會(huì)被修正.OUT:參數(shù)在例程的調(diào)用中可能會(huì)被修正.INOUT:參數(shù)有初始值,且在例程的調(diào)用中可能會(huì)被修正七月 2213/55MPI初始化-MPI_INITint MPI_Init(int *argc, char *argv)MPI_INIT(IERROR)MPI_INIT是MP
8、I程序的第一個(gè)調(diào)用,它完成MPI程序的所有初始化工作。所有的MPI程序的第一條可執(zhí)行語句都是這條語句。啟動(dòng)MPI環(huán)境,標(biāo)志并行代碼的開始.并行代碼之前,第一個(gè)mpi函數(shù)(除MPI_Initialized()外).要求main必須帶參數(shù)運(yùn)行,否則出錯(cuò).七月 2214/55MPI結(jié)束-MPI_FINALIZEint MPI_Finalize(void)MPI_FINALIZE(IERROR)MPI_FINALIZE是MPI程序的最后一個(gè)調(diào)用,它結(jié)束MPI程序的運(yùn)行,它是MPI程序的最后一條可執(zhí)行語句,否則程序的運(yùn)行結(jié)果是不可預(yù)知的。標(biāo)志并行代碼的結(jié)束,結(jié)束除主進(jìn)程外其它進(jìn)程.之后串行代碼仍可在主進(jìn)
9、程(rank = 0)上運(yùn)行(如果必須).七月 2215/55MPI程序的的編譯與運(yùn)行mpif77 hello.f 或 mpicc hello.c 默認(rèn)生成a.out的可執(zhí)行代碼.mpif77 o hello hello.f 或mpicc o hello hello.c生成hello的可執(zhí)行代碼.mpirun np 4 a.outmpirun np 4 hello4 指定np的實(shí)參,表示進(jìn)程數(shù),由用戶指定.a.out / hello 要運(yùn)行的MPI并行程序.%小寫onp:The number of process.七月 2216/55:運(yùn)行我們的MPI程序!dairnode01 $ mpicc
10、 -o hello hello.cdairnode01 $ ./hello () 0 Aborting program ! Could not create p4 procgroup. Possible missing fileor program started without mpirun.dairnode01 $ mpirun -np 4 hello () Hello World! Hello World! Hello World! Hello World!dairnode01 $ 計(jì)算機(jī)打印字符我們輸入的命令七月 2217/55:Hello是如何被執(zhí)行的?SPMD: Single Pr
11、ogram Multiple Data(SIMD) :#include mpi.h#include main( int argc, char *argv ) MPI_Init( &argc, &argv ); printf( Hello, world!n ); MPI_Finalize();#include mpi.h#include main( int argc, char *argv ) MPI_Init( &argc, &argv ); printf( Hello, world!n ); MPI_Finalize();#include mpi.h#include main( int ar
12、gc, char *argv ) MPI_Init( &argc, &argv ); printf( Hello, world!n ); MPI_Finalize();#include mpi.h#include main( int argc, char *argv ) MPI_Init( &argc, &argv ); printf( Hello, world!n ); MPI_Finalize();Hello World!Hello World!Hello World!Hello World!#include mpi.h#include main( int argc, char *argv
13、 ) MPI_Init( &argc, &argv ); printf( Hello, world!n ); MPI_Finalize();rshssh七月 2218/55:開始寫MPI并行程序 Comm_size和Comm_rank在寫MPI程序時(shí),我們常需要知道以下兩個(gè)問題的答案:任務(wù)由多少個(gè)進(jìn)程來進(jìn)行并行計(jì)算?我是哪一個(gè)進(jìn)程? 七月 2219/55MPI 提供了下列函數(shù)來回答這些問題:用MPI_Comm_size 獲得進(jìn)程個(gè)數(shù) p int MPI_Comm_size(MPI_Comm comm, int *size);用MPI_Comm_rank 獲得進(jìn)程的一個(gè)叫rank的值,該 ran
14、k值為0到p-1間的整數(shù),相當(dāng)于進(jìn)程的IDint MPI_Comm_rank(MPI_Comm comm, int *rank);七月 2220/55更新的Hello World(c)#include #include mpi.hmain( int argc, char *argv ) int myid, numprocs; MPI_Init( &argc, &argv ); MPI_Comm_rank( MPI_COMM_WORLD, &myid ); MPI_Comm_size( MPI_COMM_WORLD, &numprocs ); printf(“I am %d of %dn, my
15、id, numprocs ); MPI_Finalize();七月 2221/55更新的Hello World(F77)program maininclude mpif.hinteger ierr, myid, numprocscall MPI_INIT( ierr )call MPI_COMM_RANK( MPI_COMM_WORLD, myid, ierr )call MPI_COMM_SIZE( MPI_COMM_WORLD, numprocs, ierr )print *, I am, myid, of, numprocscall MPI_FINALIZE( ierr )end七月 2
16、222/55:運(yùn)行結(jié)果dairnode01 $ mpicc o hello1 hello1.cdairnode01 $ mpirun -np 4 hello1I am 0 of 4I am 1 of 4I am 2 of 4I am 3 of 4dairnode01 $計(jì)算機(jī)打印字符我們輸入的命令七月 2223/55:寫MPI并行通信程序-Send和RecvGreeting執(zhí)行過程七月 2224/55有消息傳遞greetings(c)#include #include mpi.hmain(int argc, char* argv) int numprocs, myid, source; MPI
17、_Status status; char message100; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &myid); MPI_Comm_size(MPI_COMM_WORLD, &numprocs);七月 2225/55有消息傳遞greetings(c) if (myid != 0) strcpy(message, Hello World!); MPI_Send(message,strlen(message)+1, MPI_CHAR, 0,99, MPI_COMM_WORLD); else /* myid = 0 */ f
18、or (source = 1; source numprocs; source+) MPI_Recv(message, 100, MPI_CHAR, source, 99, MPI_COMM_WORLD, &status); printf(%sn, message); MPI_Finalize(); /* end main */七月 2226/55解剖greetings程序頭文件: mpi.h/ MPI_Init(int *argc, char *argv) 啟動(dòng)MPI環(huán)境,標(biāo)志并行代碼的開始.并行代碼之前,第一個(gè)mpi函數(shù)(除MPI_Initialize()外).要求ma
19、in必須帶參數(shù)運(yùn)行,否則出錯(cuò).通信域(通信空間): MPI_COMM_WORLD:一個(gè)通信空間是一個(gè)進(jìn)程組和一個(gè)上下文的組合.上下文可看作為組的超級(jí)標(biāo)簽,用于區(qū)分不同的通信域.在執(zhí)行函數(shù)MPI_Init之后,一個(gè)MPI程序的所有進(jìn)程形成一個(gè)缺省的組,這個(gè)組的通信域即被寫作MPI_COMM_WORLD.該參數(shù)是MPI通信操作函數(shù)中必不可少的參數(shù),用于限定參加通信的進(jìn)程的范圍.七月 2227/55解剖greetings程序int MPI_Comm_size ( MPI_Comm comm, int *size )獲得通信空間comm中規(guī)定的組包含的進(jìn)程的數(shù)量.指定一個(gè)communicator,也指
20、定了一組共享該空間的進(jìn)程, 這些進(jìn)程組成該communicator的 MPI_Comm_rank ( MPI_Comm comm, int *rank ) 得到本進(jìn)程在通信空間中的rank值,即在組中的邏輯編號(hào)(從0開始).int MPI_Finalize() 標(biāo)志并行代碼的結(jié)束,結(jié)束除主進(jìn)程外其它進(jìn)程.之后串行代碼仍可在主進(jìn)程(rank = 0)上運(yùn)行(如果必須).七月 2228/55講座內(nèi)容提示基本的MPI基本概念點(diǎn)到點(diǎn)通信(Point to point)MPI中API的主要內(nèi)容,為MPI最基本,最重要的內(nèi)容MPI程序的編譯和運(yùn)行深入MPI用戶自定義(/派生)數(shù)據(jù)類型(U
21、ser-defined(Derived) data type)事實(shí)上MPI的所有數(shù)據(jù)類型均為MPI自定義類型支持異構(gòu)系統(tǒng)允許消息來自不連續(xù)的或類型不一致的存儲(chǔ)區(qū)(結(jié)構(gòu),數(shù)組散元)集合通信(Collective)數(shù)據(jù)移動(dòng),數(shù)據(jù)聚集,同步基于point to point 構(gòu)建MPI環(huán)境管理函數(shù)組,上下文和通信空間/通信域的管理實(shí)例七月 2229/55Point to Point通信單個(gè)進(jìn)程對(duì)單個(gè)進(jìn)程的通信,重要且復(fù)雜術(shù)語Blocking(阻塞) :一個(gè)例程須等待操作完成才返回,返回后用戶可以重新使用調(diào)用中所占用的資源. Non-blocking(非阻塞):一個(gè)例程不必等待操作完成便可返回,但這并不
22、意味著所占用的資源可被重用. Local(本地):過程的完成僅依賴于本地正在執(zhí)行的進(jìn)程。Non-local(非本地):如果過程的完成要求其他進(jìn)程的 MPI 過程完成。七月 2230/55Blocking Sendint MPI_Send(void* buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm); IN buf 發(fā)送緩沖區(qū)的起始地址 IN count 要發(fā)送信息的元素個(gè)數(shù) IN datatype 發(fā)送信息的數(shù)據(jù)類型 IN dest 目標(biāo)進(jìn)程的rank值 IN tag 消息標(biāo)簽 IN comm 通信
23、域七月 2231/55Blocking Receiveint MPI_Recv(void* buf, int count, MPI_Datatype datatype, int source, int tag, MPI_Comm comm, MPI_Status *status); OUT buf 發(fā)送緩沖區(qū)的起始地址 IN count 要發(fā)送信息的元素個(gè)數(shù) IN datatype 發(fā)送信息的數(shù)據(jù)類型 IN dest 目標(biāo)進(jìn)程的rank值 IN tag 消息標(biāo)簽 IN comm 通信域OUT statusstatus對(duì)象,包含實(shí)際接收到的消息的有關(guān)信息七月 2232/55MPI消息MPI消息包
24、括信封和數(shù)據(jù)兩個(gè)部分,信封指出了發(fā)送或接收消息的對(duì)象及相關(guān)信息,而數(shù)據(jù)是本消息將要傳遞的內(nèi)容數(shù)據(jù):信封:七月 2233/55七月 2234/55消息數(shù)據(jù)由count個(gè)類型為datatype的連續(xù)數(shù)據(jù)空間組成, 起始地址為buf不是以字節(jié)數(shù), 而是以元素的個(gè)數(shù)指定消息的長(zhǎng)度count可以是零, 這種情況下消息的數(shù)據(jù)部分是空的MPI基本數(shù)據(jù)類型相應(yīng)于宿主語言的基本數(shù)據(jù)類型 七月 2235/55MPI基本數(shù)據(jù)類型七月 2236/55MPI標(biāo)識(shí)一條消息的信息包含四個(gè)域:Source: 發(fā)送進(jìn)程隱式確定,由進(jìn)程的rank值唯一標(biāo)識(shí)Destination: Send函數(shù)參數(shù)確定Tag: Send函數(shù)參數(shù)確
25、定,用于識(shí)別不同的消息 (0,UB),UB:MPI_TAG_UB=32767.Communicator: 缺省MPI_COMM_WORLDGroup:有限/N,有序/Rank 0,1,2,N-1Contex:Super_tag,用于標(biāo)識(shí)該通訊空間.消息信封七月 2237/55status參數(shù)當(dāng)使用MPI_ANY_SOURCE或/和MPI_ANY_TAG接收消息時(shí)如何確定消息的來源source 和 tag值呢?在C中,結(jié)構(gòu),status.MPI_SOURCE, status.MPI_TAG.在Fortran中,數(shù)組,source=status(MPI_SOURCE), tag=status(MP
26、I_TAG).Status還可用于返回實(shí)際接收到消息的長(zhǎng)度int MPI_Get_count(MPI_Status status, MPI_Datatype datatype,int* count)IN status 接收操作的返回值.IN datatype 接收緩沖區(qū)中元素的數(shù)據(jù)類型.OUT count 接收消息中的元素個(gè)數(shù).七月 2238/55消息匹配接收buffer必須至少可以容納count個(gè)由datatype參數(shù)指明類型的數(shù)據(jù). 如果接收buf太小, 將導(dǎo)致溢出、出錯(cuò).消息匹配參數(shù)匹配 dest,tag,comm/ source,tag,commSource = MPI_ANY_SOU
27、RCE:接收任意處理器來的數(shù)據(jù)(任意消息來源).Tag = MPI_ANY_TAG:匹配任意tag值的消息(任意tag消息).Source = destination 是允許的, 但是不安全的, 可能導(dǎo)致死鎖。消息傳送被限制在同一個(gè)communicator.在send函數(shù)中必須指定唯一的接收者(Push/pull通訊機(jī)制).七月 2239/55分析greetings#include #include mpi.h“main(int argc, char* argv) int numprocs; /*進(jìn)程數(shù),該變量為各處理器中的同名變量, 存儲(chǔ)是分布的*/int myid;/*我的進(jìn)程ID,存儲(chǔ)也
28、是分布的*/ MPI_Status status; /*消息接收狀態(tài)變量,存儲(chǔ)也是分布的*/ char message100;/*消息buffer,存儲(chǔ)也是分布的*/ /*初始化MPI*/MPI_Init(&argc, &argv); /*該函數(shù)被各進(jìn)程各調(diào)用一次,得到自己的進(jìn)程rank值*/MPI_Comm_rank(MPI_COMM_WORLD, &myid);/*該函數(shù)被各進(jìn)程各調(diào)用一次,得到進(jìn)程數(shù)*/MPI_Comm_size(MPI_COMM_WORLD, &numprocs);七月 2240/55分析greetingsif (myid != 0) /*建立消息*/ sprintf(
29、message, Greetings from process %d!,myid); /* 發(fā)送長(zhǎng)度取strlen(message)+1,使0也一同發(fā)送出去*/ MPI_Send(message,strlen(message)+1, MPI_CHAR, 0,99,MPI_COMM_WORLD);else /* my_rank = 0 */ for (source = 1; source numprocs; source+) MPI_Recv(message, 100, MPI_CHAR, source, 99, MPI_COMM_WORLD,&status); printf(“%sn, mes
30、sage); /*關(guān)閉MPI,標(biāo)志并行代碼段的結(jié)束*/ MPI_Finalize(); /* End main */七月 2241/55Greetings執(zhí)行過程 假設(shè)進(jìn)程數(shù)為3 (進(jìn)程0) (進(jìn)程1) (進(jìn)程2) (rank=0) (rank=1) (rank=2).Recv();.Recv();.Send();.Send().問題:進(jìn)程1和2誰先開始發(fā)送消息?誰先完成發(fā)送??%七月 2242/55運(yùn)行g(shù)reetingsdairnode01 $ mpicc o greeting greeting.cdairnode01 $ mpirun -np 4 greeting Greetings fr
31、om process 1! Greetings from process 2! Greetings from process 3!dairnode01 $ 計(jì)算機(jī)打印字符我們輸入的命令七月 2243/55最基本的MPIMPI調(diào)用借口的總數(shù)雖然龐大,但根據(jù)實(shí)際編寫MPI的經(jīng)驗(yàn),常用的MPI調(diào)用的個(gè)數(shù)非常有限。上面介紹的是6個(gè)最基本的MPI函數(shù)。MPI_Init();MPI_Comm_size();MPI_Comm_rank();MPI_Send();MPI_Recv();MPI_Finalize();MPI_Init();并行代碼;MPI_Fainalize();只能有串行代碼;七月 2244/
32、55現(xiàn)在您已經(jīng)能夠用MPI進(jìn)行并行編程了!七月 2245/55實(shí)例分析:求PI七月 2246/55串行代碼h=1.0/(double)n;sum=0.0;for (i=1; i=n; i+) x=h*(double)i 0.5);sum += f(x);pi=h*sum;double f(double a)return (4.0/(1.0+a*a);七月 2247/55并行代碼h=1.0/(double)n;sum=0.0;for (i=myid+1; i=n; i+=numprocs) x=h*(double)i 0.5);sum += f(x);mypi=h*sum; MPI_Reduce(&mypi, &pi, 1, MPI_DOUBLE, MPI_SUM, 0, MPI_COMM_WORLD);double f(double a)return (4.0/(1.0+a*a);七月 2248/55cpi.c#include mpi.h#include #include double f( double );double
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030年中國(guó)食品級(jí)磷酸鹽行業(yè)投資規(guī)劃及發(fā)展前景研究報(bào)告
- 2025-2030年中國(guó)雕塑工藝品行業(yè)發(fā)展趨勢(shì)及投資戰(zhàn)略研究報(bào)告
- 2025-2030年中國(guó)金屬酸洗行業(yè)發(fā)展趨勢(shì)及前景調(diào)研分析報(bào)告
- 2025-2030年中國(guó)辣椒紅色素市場(chǎng)運(yùn)行態(tài)勢(shì)及投資戰(zhàn)略研究報(bào)告
- 2025-2030年中國(guó)訓(xùn)練健身器材制造行業(yè)運(yùn)營(yíng)狀況與發(fā)展?jié)摿Ψ治鰣?bào)告
- 2025年河北建筑安全員考試題庫
- 2025-2030年中國(guó)花露水運(yùn)行趨勢(shì)及發(fā)展前景分析報(bào)告
- 2025-2030年中國(guó)磷酸二氫鉀行業(yè)運(yùn)營(yíng)狀況及發(fā)展趨勢(shì)分析報(bào)告
- 2025-2030年中國(guó)男士香水行業(yè)運(yùn)營(yíng)狀況及投資策略研究報(bào)告
- 唐山職業(yè)技術(shù)學(xué)院《國(guó)際人才管理》2023-2024學(xué)年第二學(xué)期期末試卷
- 2025人教版一年級(jí)下冊(cè)數(shù)學(xué)教學(xué)進(jìn)度表
- DeepSeek教案寫作指令
- 休學(xué)復(fù)學(xué)申請(qǐng)書
- 2025年四川司法警官職業(yè)學(xué)院高職單招職業(yè)適應(yīng)性測(cè)試近5年常考版參考題庫含答案解析
- 新建污水處理廠工程EPC總承包投標(biāo)方案(技術(shù)標(biāo))
- 山東省德州市2024-2025學(xué)年高三上學(xué)期1月期末生物試題(有答案)
- 本人報(bào)廢車輛委托書
- 雙減政策與五項(xiàng)管理解讀
- 2025年道德與法治小學(xué)六年級(jí)下冊(cè)教學(xué)計(jì)劃(含進(jìn)度表)
- 過橋資金操作流程
- 貨物學(xué) 課件1.2貨物的特性
評(píng)論
0/150
提交評(píng)論