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: Функции поддержки распределенных операций:          выполнение глобальных операций с возвратом результатов в главный процесс.