Mari berbagi

Parallel computing sederhana dengan vb.NET

July 26, 2008 · 1 Comment

Parallel computing merupakan teknik komputasi secara bersamaan dengan memanfaatkan beberapa pemroses (processor) secara independen. Prinsip parallel computing adalah membagi sebuah proses menjadi beberapa proses-proses kecil yang akan dikerjakan oleh beberapa pemroses secara simultan.

Mari mencobanya dengan vb.net…

Misal tinjau sebuah kasus komputasi sederhana di dunia fisika; menghitung konstanta Catalan.

Gambar 1: formula menghitung Konstanta Catalan

Deret tak hingga ini dapat diselesaikan dengan menggunakan parallel computing dengan membagi deret tersebut menjadi beberapa deret tak hingga yang lebih kecil. Pada kasus ini, misalkan deret tersebut dibagi menjadi dua bagian, deret dengan suku-suku 1/3, 1/7, 1/11 dst dan deret lainnya dengan suku-suku 1/5, 1/9, 1/13 dst.

Penulis menggunakan vb untuk menyelesaikan kasus ini dengan 2 thread yang independen (multithread). Misal thread pertama adalah threadGenap yang menghitung deret dengan suku-suku 1/3, 1/7, 1/11 dst dan threadGanjil mengerjakan suku-suku 1/5, 1/9, 1/13 dst. hasil kedua thread tersebut digabungkan pada proses akhir. Sebagai pembanding, penulis juga menggunakan thread ketiga dimana thread tersebut mengerjakan 2 thread sebelumnya secara seri (single thread). Agar tidak terjadi overflow dalam proses, iterasi yang dilakukan cukup sebanyak 150000000 kali.

Berikut list code-nya

Public Class Form1
Public Shared inputGenap, inputGanjil As Double
Public Shared OutputGenap, OutputGanjil As Double
Public Shared Sub threadGenap()
Dim n As Integer
Dim j As Double
n = 3
While n < 150000000
j = 1 / (Math.Pow(n, inputGenap))
OutputGenap += j
n += 4
End While
End Sub

Public Shared Sub threadGanjil()
Dim n As Integer
Dim j As Double
n = 5
While n < 150000000
j = 1 / (Math.Pow(n, inputGanjil))
OutputGanjil += j
n += 4
End While
End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim Result As Double
Dim tGenap As New Threading.Thread(AddressOf threadGenap)
Dim tGanjil As New Threading.Thread(AddressOf threadGanjil)
Timer1.Start()
inputGenap = 2
inputGanjil = 2
tGenap.Start()
tGanjil.Start()
tGenap.Join()
tGanjil.Join()

Timer1.Stop()
Result = 1 – OutputGenap + OutputGanjil
Me.Label3.Text = Result
End Sub

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim n As Integer
Dim aoutputgenap As Double = 0
Dim boutputGanjil As Double = 0
Dim j As Double
inputGenap = 2
inputGanjil = 2
n = 3
While n < 150000000
j = 1 / (Math.Pow(n, inputGenap))
aoutputgenap += j
n += 4
End While

n = 5
While n < 150000000
j = 1 / (Math.Pow(n, inputGenap))
boutputGanjil += j
n += 4
End While

Me.Label4.Text = 1 – aoutputgenap + boutputGanjil
End Sub
End Class


Gambar 2: Hasil akhir proses kalkulasi menghitung konstanta Catalan dengan menggunakan
multithread dan singlethread

Pada screenshot diatas, terlihat hasil akhir yang diperoleh kurang lebih sama baik dengan menggunakan multithread maupun single thread. Namun, bagaimana kecepatannya?

Penulis melakukan ujicoba program ini dengan menggunakan 2 PC, dimana 1 PC berupa Pentium 4 single core dan PC lainnya menggunakan Pentium Dual Core dengan clock CPU relatif sama ~1,9 GHz. Untuk PC single core, waktu yang diperlukan dalam menyelesaikan proses (baik dengan menggunakan multithread maupun singlethread) kurang lebih sama dengan memperhatikan CPU time pada task manager. Hal ini dikarenakan pemroses yang mengerjakan proses ini hanya satu saja. Dengan demikian, tidak ada perbedaan signifikan ketika menggunakan multithread atau single thread.

PC Dual Core?

Grafik CPU Usage pada task manager memberikan jawabannya.


Gambar 3:
CPU Usage ketika menghitung konstanta Catalan dengan menggunakan multithread

Dari gambar 3, terlihat 2 core CPU akan terbebani secara serentak ketika proses kalkulasi dilakukan dengan menggunakan multithread. Hasil ini berbeda ketika proses kalkulasi dilakukan dengan menggunakan single thread (gambar 4). Selain itu, waktu yang diperlukan untuk mengerjakan keseluruhan proses kalkulasi juga berbeda. Dengan demikian, dapat ditarik kesimpulan sementara bahwa parallel computing sangat bergantung terhadap jumlah pemroses.


Gambar 4:
CPU Usage ketika menghitung konstanta Catalan dengan menggunakan single thread

Apabila jumlah pemroses yang tersedia jauh lebih banyak, maka jumlah proses yang dapat dipecah akan semakin banyak dan waktu yang dibutuhkan akan semakin sedikit.

Begitulah sedikit studi kasus bagaimana parallel computing memudahkan pekerjaan fisika.

Semoga bermanfaat ;p

Categories: Fisika · Programming
Tagged: , ,

1 response so far ↓

  • anna // August 7, 2008 at 12:38 am |

    maaph OOT…
    gara2 gak bisa tidur lg, jadi gw internetan dah…uehehe…
    baru hari ini blog stat gw nyampe 500 lebih biasa nya 300-an, bangga gt gw…:P
    berikut top search yang bikin gw ketawa ngakak, segithukah mengidolakan nya…ckckckc…
    gambar artis korea, choi si won
    tvxq
    super junior mtv asia award 2008
    gambar choi si won, artis korea
    gak suka snsd
    cerita lucu saat syuting coffee prince
    shinee
    koreanindo unstoppable mariage
    dbsk jun su
    “shinee”
    cewek pake kaos sepakbola
    pemain film coffee prince
    my wife is a gengster 3-korea movie
    film terlaris
    kim tae yeon and xiah
    super junior kry lyrics korean
    apakah han seong mencium eun cha di korea
    do re mi fa so la si do
    joo hyuk 2008
    berita terbaru super junior
    jang geun suk
    xiah jun su pic
    akusukakorea
    koreanindo wordpress
    alamat rumahnya hero jae joong

    —————————
    kebanyakan yang baca blog gw masi anak2, bahkan masa ada yang ngefans banget sama Dong Bang Shin Ki duluan dari gw, dan ngefans sejak umur 8 tahun, masuk akal gak si wa?? jadi dia bilang sejak 3 tahun lalu dia suka, dn skrg umur nya 11, gw aja sk Dong Bang Shin Ki baru setahun, heran gw…

You must be logged in to post a comment.