12 практика. Пример 1
Параллельное программирование 2020-2021 учебный год Контроль самостоятельной работы 3 Модель многопроцессорного компьютера "Е14": обмен данными между процессорами 1. Константы A1 = 0FFD1h, A2 = 0FFD2h, A3 = 0FFD3h, A4 = 0FFD4h с помощью ассемблера записать в следующем соответствии: в процессоре PPU1 константу A1 в регистр R0, в PPU2 - константу A2 в R1, в PPU3 - константу A3 в R2, в PPU4 - константу A4 в R3. Пример 1. ;memory=COMM ;E14 assembler, v.1, 2018 GLOBAL A1=0FFD1h A2=0FFD2h A3=0FFD3h A4=0FFD4h ;BLOCK 0 ;CPU ;CPUaddr=0000 ;asm text out #0,p9 ;PPU1 out #0,pAh ;PPU2 out #0,pBh ;PPU3 out #0,pCh ;PPU4 w: in p9,r0 cmp #1,r0 bne w hlt ;BLOCK 1 ;PPU=0001 ;CPUaddr=0300 ;PPUaddr=0001 mov #A1, r0 hlt ;BLOCK 2 ;PPU=0002 ;CPUaddr=0330 ;PPUaddr=0002 mov #A2, r1 hlt ;BLOCK 3 ;PPU=0003 ;CPUaddr=0360 ;PPUaddr=0003 mov #A3, r2 hlt ;BLOCK 4 ;PPU=0004 ;CPUaddr=0390 ;PPUaddr=0004 mov #A4, r3 hlt 2. С помощью программы на языке Ассемблера распараллелить между 4 процессорами PPU1 - PPU4 алгоритм суммирования 60 элементов целочисленного массива. Пример 2. ;memory=COMM ;CPU only program ;BLOCK 0 ;CPU ;CPUaddr=0000 N=60 mov #N,r0 ;count. mov #T,r1 ;addr. mov #0,r2 ;sum c: add (r1),r2 add #2,r1 sub #1,r0 bne c mov r2,s hlt s: rw 1 T: dw 1 dw 2 dw 3 dw 4 dw 5 dw 6 dw 7 dw 8 dw 9 dw Ah dw Bh dw Ch dw Dh dw Eh dw Fh dw 10h dw 11h dw 12h dw 13h dw 14h dw 15h dw 16h dw 17h dw 18h dw 19h dw 1Ah dw 1Bh dw 1Ch dw 1Dh dw 1Eh dw 1Fh dw 20h dw 21h dw 22h dw 23h dw 24h dw 25h dw 26h dw 27h dw 28h dw 29h dw 2Ah dw 2Bh dw 2Ch dw 2Dh dw 2Eh dw 2Fh dw 30h dw 31h dw 32h dw 33h dw 34h dw 35h dw 36h dw 37h dw 38h dw 39h dw 3Ah dw 3Bh dw 3Ch Пример 3. ;memory=COMM ;Archit. 1, alg. S1 GLOBAL ;n=60 N/4=15 s4=F6h s3=F8h s2=FAh s1=FCh s=FEh T=100h T1/4=11Eh T2/4=13Ch T3/4=15Ah SP0=3F0h read=2048h write=2050h ;BLOCK 0 ;CPU ;CPUaddr=0000 ;program for CPU ;exec out #0,p9 ;PPU1 out #0,pAh ;PPU2 out #0,pBh ;PPU3 out #0,pCh ;PPU4 ;wait PPU1 w: in p9,r0 cmp #1,r0 bne w ;results mov s1,s add s2,s add s3,s add s4,s hlt ;BLOCK 1 ;PPU=0001 ;CPUaddr=0300 ;PPUaddr=0000 ;program for PPU1 toSP #SP0 mov #N/4,r3 ;counter mov #T,r1 ;array address mov #0,r2 ;clear sum c: call #read add r0,r2 ;add to sum add #2,r1 ;next address sub #1,r3 ;dec counter bne c ;result to CPU mov r2,r0;sum mov #s1,r1 ;address in CPU call #write hlt ;BLOCK 2 ;PPU=0002 ;CPUaddr=0330 ;PPUaddr=0000 ;program for PPU2 toSP #SP0 mov #N/4,r3 ;counter mov #T1/4,r1 ;array address mov #0,r2 ;clear sum c: call #read add r0,r2 ;add to sum add #2,r1 ;next address sub #1,r3 ;dec counter bne c ;result to CPU mov r2,r0;sum mov #s2,r1 ;address in CPU call #write hlt ;BLOCK 3 ;PPU=0003 ;CPUaddr=0360 ;PPUaddr=0000 ;program for PPU3 toSP #SP0 mov #N/4,r3 ;counter mov #T2/4,r1 ;array address mov #0,r2 ;clear sum c: call #read add r0,r2 ;add to sum add #2,r1 ;next address sub #1,r3 ;dec counter bne c ;result to CPU mov r2,r0;sum mov #s3,r1 ;address in CPU call #write hlt ;BLOCK 4 ;PPU=0004 ;CPUaddr=0390 ;PPUaddr=0000 ;program for PPU4 toSP #SP0 mov #N/4,r3 ;counter mov #T3/4,r1 ;array address mov #0,r2 ;clear sum c: call #read add r0,r2 ;add to sum add #2,r1 ;next address sub #1,r3 ;dec counter bne c ;result to CPU mov r2,r0;sum mov #s4,r1 ;address in CPU call #write hlt ;BLOCK 5 ;CPU ;CPUaddr=0100 ;DATA (array) a0: dw 1 dw 2 dw 3 dw 4 dw 5 dw 6 dw 7 dw 8 dw 9 dw 10 dw 11 dw 12 dw 13 dw 14 dw 15 a1/4: dw 16 dw 17 dw 18 dw 19 dw 20 dw 21 dw 22 dw 23 dw 24 dw 25 dw 26 dw 27 dw 28 dw 29 dw 30 a2/4: dw 31 dw 32 dw 33 dw 34 dw 35 dw 36 dw 37 dw 38 dw 39 dw 40 dw 41 dw 42 dw 43 dw 44 dw 45 a3/4: dw 46 dw 47 dw 48 dw 49 dw 50 dw 51 dw 52 dw 53 dw 54 dw 55 dw 56 dw 57 dw 58 dw 59 dw 60 hlt Источники http://educomp.runnet.ru Учебные модели компьютера http://educomp.runnet.ru/e14/ Многопроцессорный учебный компьютер "Е14" http://educomp.runnet.ru/e14/proc.html "Е14": процессоры http://educomp.runnet.ru/e14/exchange.html "Е14": обмен данными между процессорами http://educomp.runnet.ru/e14/archit.html "Е14": моделируемые архитектуры с общей и распределенной памятью. http://educomp.runnet.ru/e14/mem.html "Е14": организация памяти http://educomp.runnet.ru/archive/E14v2.zip Программная реализация многопроцессорного учебного компьютера "Е14" http://educomp.runnet.ru/archive/asm_E14.zip Ассемблер для многопроцессорного учебного компьютера "Е14" http://educomp.runnet.ru/archive/posobie.pdf Учебная модель компьютера "Е97": архитектура, система команд, программирование. http://educomp.runnet.ru/udvoit/ S9PU - система из 9 параллельных Удвоителей Перечень заданий 1. MPI: Прием/передача сообщений между отдельными процессами. 2. MPI: Групповые (коллективные) взаимодействия. Рассылка целого сообщения процессам. Сборка данных от процессов. 3. MPI: Групповые (коллективные) взаимодействия. Рассылка частей сообщения процессам. Сборка частей сообщения с процессов. 4. MPI: Функции поддержки распределенных операций: выполнение глобальных операций с возвратом результатов в главный процесс.
Перейти. MPI: настройка проекта C++ в IDE MS Visual Studio 2013 с библиотекой Microsof HPC Pack 2008 SDK