Skip to content

demka-fa/3_Parallelism

Β 
Β 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

14 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

ИспользованиС ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ программирования

ЦСль Ρ€Π°Π±ΠΎΡ‚Ρ‹

ΠΠ°ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎΠΏΡ€ΠΎΡ†Π΅ΡΡΠ½ΠΎΡΡ‚ΡŒ ΠΊΠ°ΠΊ основу ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ программирования с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ модуля multiprocessing

Задания для выполнСния

  1. ΠΠ°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, ΠΏΠ΅Ρ€Π΅ΠΌΠ½ΠΎΠΆΠ°ΡŽΡ‰ΡƒΡŽ Π΄Π²Π΅ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ поэлСмСнтно. Π­Π»Π΅ΠΌΠ΅Π½Ρ‚Ρ‹ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹-произвСдСния Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΡ‚ΡŒΡΡ Π² нСсколько ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ².
  2. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π΄ΠΎΠ»ΠΆΠ½Π° Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π΄Π²Π΅ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ ΠΈΠ· исходных Ρ„Π°ΠΉΠ»ΠΎΠ². ΠœΠ°Ρ‚Ρ€ΠΈΡ†Π°-ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Ρ‚Π°ΠΊΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ½Π° Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒΡΡ Π² Ρ„Π°ΠΉΠ».
  3. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΏΡƒΠ» процСссов, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°ΡΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ вычислСния ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ Π·Π°Ρ€Π°Π½Π΅Π΅ количСством процСссов, Π½Π΅ зависящим ΠΎΡ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ² ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹.
  4. ΠœΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΠΉΡ‚Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ элСмСнты Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰Π΅ΠΉ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ Π·Π°ΠΏΠΈΡΡ‹Π²Π°Π»ΠΈΡΡŒ Π² ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» сразу ΠΏΠΎ Ρ„Π°ΠΊΡ‚Ρƒ ΠΈΡ… вычислСния.

ΠœΠ΅Ρ‚ΠΎΠ΄ΠΈΡ‡Π΅ΡΠΊΠΈΠ΅ указания

Π”ΠΎΠ²ΠΎΠ»ΡŒΠ½ΠΎ часто ΠΏΡ€ΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΈ ΠΏΡ€ΠΈΠΊΠ»Π°Π΄Π½Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡ приходится Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ тяТСлыС матСматичСскиС расчСты. Π’Π°ΠΊΠΈΠ΅ расчСты ΠΌΠΎΠ³ΡƒΡ‚ Π·Π°Π½ΠΈΠΌΠ°Ρ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΈ СстСствСнно ΠΆΠ΅Π»Π°Π½ΠΈΠ΅ ΡƒΡΠΊΠΎΡ€ΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, распараллСлив вычислСния Π½Π° нСсколько ядСр процСссора. Π’ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊΠΎΠΉ ΠΆΠ΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΈ Π² Π²Ρ‹ΡΠΎΠΊΠΎΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… систСмах ΠΏΡ€ΠΈ распараллСливании нСсколько ΡƒΠ·Π»ΠΎΠ² Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ кластСра.

Для Π½Π°Ρ‡Π°Π»Π° Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ½ΡΡ‚ΡŒ, ΠΊΠ°ΠΊΠΎΠΉ аспСкт этой Π·Π°Π΄Π°Ρ‡ΠΈ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°ΡΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΠ²Π°Ρ‚ΡŒ. ΠŸΡ€ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΌΠ°Ρ‚Ρ€ΠΈΡ† для вычислСния ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ элСмСнта ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π·Π½Π°Ρ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ вычислСния Π΄Ρ€ΡƒΠ³ΠΈΡ… элСмСнтов. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ элСмСнт ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ нСзависимо ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΡ….

Matrix multiplication

Для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ участок ΠΊΠΎΠ΄Π° Π² ΠΏΠΎΡ‚ΠΎΠΊ, Π²Ρ‹Π΄Π΅Π»ΠΈΠΌ Π΅Π³ΠΎ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ. Π’ΠΎ Π΅ΡΡ‚ΡŒ, Π½Π°ΠΌ Π½Π°Π΄ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, которая вычисляСт ΠΎΠ΄ΠΈΠ½ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ элСмСнт ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹. Для этого Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π½Π°Ρ‚ΡŒ индСкс этого элСмСнта, ΠΈ исходныС ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹:

def element(index, A, B, res):
    glodal res
    i, j = index
    res = 0
    # get a middle dimension
    N = len(A[0]) or len(B)
    for k in range(N):
        res += A[i][k] * B[k][j]
    return res

Для использования многопроцСссности Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ:

from multiprocessing import Process, Pool

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ процСсс ΠΈ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π² Π½Π΅ΠΌ вычислСниС ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ элСмСнта ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹.

res = 0

p1 = Process(target=element, args=[(0, 0), matrix1, matrix2, res])
p1.start()
p1.join()

print(res)

ΠžΡΡ‚Π°Π»ΠΎΡΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈΠ΄ΡƒΠΌΠ°Ρ‚ΡŒ Π»Π΅Π³ΠΊΠΈΠΉ способ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π½Π° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ вычислСниС всСх элСмСнтов ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹.

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ задания

  1. ΠœΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΠΉΡ‚Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½Π° сама опрСдСляла количСство Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ².
  2. ΠœΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΠΉΡ‚Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ΄Π½Π° Ρ‡Π°ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Π»Π° случайныС ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Π΅ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ Π·Π°Π΄Π°Π½Π½ΠΎΠΉ размСрности, Π° другая - ΠΏΠ΅Ρ€Π΅ΠΌΠ½ΠΎΠΆΠ°Π»Π° ΠΈΡ… ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ. ΠŸΡ€ΠΎΡ‚Π΅ΡΡ‚ΠΈΡ€ΡƒΠΉΡ‚Π΅ Π°ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½Π½ΠΎΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π Π΅Π°Π»ΠΈΠ·ΡƒΠΉΡ‚Π΅ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ остановки процСсса пСрСмноТСния.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 100.0%