Perkalian Matrik pada Model PRAM

Berikut adalah algoritma perkalian dua buah matrik yang mempunyai ukuran n x n pada model SIMD shared memory dan kemudian kita akan menganalisa pada batasan-batasan akses memory yang berbeda-beda.

Walaupun untuk penyederhanaan, disini dibahas menggunakan matrik yang berukuran n x n , tetapi kita bisa mengenralisir hal ini dengan mengasumsikan ukuran matrik A, B, dan C sebagai p x n, n x q dan p x q. Hal ini masih akan valid selama \(p \leq n \) dan  \(q \leq n \)

Algorithm PRAM_MATRIX_MULT

Input : dua buah matrik A dan B

Ouput : sebuah matrik C = A x B

for i = 0 to n – 1 dopar

for j = 0 to n – 1 dopar

C[i,j] := 0

for k = 0 to n – 1 do

C[i,j] = C[i,j] + A[i,k] x B[k,j]

od

odpar

odpar

 

Analisa Kompleksitas

Jika kita asumsikan model komputasi yang digunakan adalah EREW PRAM, maka pembacaan matrik A dan matrik B secara bersamaan dapat dilakukan dengan menggunakan buah prosesor dan dalam waktu O(log n) menggunakan algoritma PARALLEL_BCAST (bab 5.3.2 Chaudhuri)

Ada 2 (dua) pernyataan di dalam for-loops bersarang pada algoritma PRAM_MATRIX_MULT. Yang pertama adalah menginisalisasi semua elemen dari Matrik C menjadi 0 (nol) dan yang lainnya menghitung elemen-elemen di C menggunakan produk kumulatif. Sebuah produk kumulatif adalah operasi perkalian-tambah dalam bentuk c + a x b. Inisialisasi (pemberian nilai awal) dari C membutuhkan waktu O(1) dengan menggunakan n2 buah prosessor. Perkalian kumulatif dapat dilakukan secara mudah, dalam paralel, dengan pertama kali menghitung semua produk dalam bentuk A[i,k] x B[k,j] untuk k = 0, 1, . . ., n – 1 dalam waktu O(1) menggunakan n buah prosessor.

 

 

 

 

 

 

 

Apakah UUID itu ?

UUID singkatan dari Universally Unique IDentifier.

UUIDs digunakan untuk tujuan identifikasi dalam beberapa bidang pada industri komputer.

UUIDs pada dasarnya adalah angka 128 bit, yang disajikan dalam bentuk pengelompokan hexadesimal, misalnya :
58e0a7d7-eebc-11d8-9669-0800200c9a66

Salah satu bagian di linux  yang menggunakan UUID adalah pada file /etc/fstab.  Perhatikan contoh berikut :

# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
proc            /proc           proc    nodev,noexec,nosuid 0       0
# / was on /dev/sda7 during installation
UUID=7b75efd0-b7fc-42d4-9334-4903bb9d4ce6 /               ext3    errors=remount-ro 0       1
# swap was on /dev/sda6 during installation
UUID=66d0d5ce-90df-4210-9867-7f7b3bfdb690 none            swap    sw              0       0
/dev/sda5 /media/data   ext3 rw 0 0
/etc/fstab (END)

 

File /etc/fstab berisi konfigurasi static dari device-device file system yang ada di komputer kita, untuk penjelasan lebih jauh, silahkan anda baca dengan perintah #man fstab

Untuk mengetahui UUID dari device-device yang ada kita dapat menggunakan perintah blkid , contoh :

toosa@toosa-pc13:~$ blkid
/dev/sda1: UUID="6435408e-5100-4d49-902b-350c5819ff7e" TYPE="ext3"
/dev/sda5: LABEL="data13" UUID="9e3bb08c-97fe-4631-a3e4-c27c88ab41c1" TYPE="ext3"
/dev/sda6: UUID="66d0d5ce-90df-4210-9867-7f7b3bfdb690" TYPE="swap"
/dev/sda7: UUID="7b75efd0-b7fc-42d4-9334-4903bb9d4ce6" TYPE="ext3"

nb: perintah ini sudah saya gunakan di Ubuntu versi 10.x hingga 11.x

 

sudoers dan disable login root

sudoers adalah sebuah daftar tentang user siapa saja yang dapat mengeksekusi 'apa' saja

File default nya ada di /etc/sudoers. Anda dapat mengedit file ini langsung dengan #vi /etc/sudoers atau menggunakan #visudo

Tetapi disarankan untuk melakukannya secara tidak langsung yaitu menambahkan file-file konfigurasinya di bawah direktori /etc/sudoers/sudoers.d

Misal kita membuat file /etc/sudoers/sudoers.d/toosa.sudo yang isinya :

toosa    ALL=(ALL:ALL) ALL

Kemudian setelah selesai untuk keamanan Anda harus merubah permission nya menjadi 0440

#chmod 440 /etc/sudoers/sudoers.d/toosa.sudo

Setelah ini anda dapat mematikan login langsung menggunakan user root

#passwd -l root

Analisa Kompleksitas Algoritma Paralel

[Ke Urutan Pembelajaran Paralel]

Pada saat sebuah algoritma digunakan untuk memecahkan sebuah persoalan, maka performance dari algoritma tersebut akan dinilai. Hal ini berlaku untuk algoritma, baik algoritma sekuensial maupun algoritma paralel. Penampilan sebuah algoritma pengolahan peralel dapat dinilai dari beberapa kriteria, seperti running time dan banyaknya prosesor yang digunakan.

Running Time

  • Running time adalah waktu yang digunakan oleh sebuah algoritma untuk menyelesaikan masalah pada sebuah komputer paralel dihitung mulai dari saat algoritma mulai hingga saat algoritma berhenti. Jika prosesor-prosesornya tidak mulai dan selesai pada saat yang bersamaan, maka running time dihitung mulai saat komputasi pada prosesor pertama dimulai hingga pada saat komputasi pada prosesor terakhir selesai.

Counting Steps

  • Untuk menentukan running time, secara teoritis dilakukan analisa untuk menentukan waktu yang dibutuhkan sebuah algoritma dalam mencari solusi dari sebuah masalah. Hal ini dilakukan dengan cara menghitung banyaknya operasi dasar, atau step (langkah), yang dilakukan oleh algoritma untuk keadaan terburuknya (worst case).

Langkah-langkah yang diambil oleh sebuah algoritma dibedakan ke dalam dua jenis yaitu :

  • Computational step

Sebuah computational step adalah sebuah operasi aritmetika atau operasi logika yang dilakukan terhadap sebuah data dalam sebuah prosesor.

  • Routing step.

Pada routing step, sebuah data akan melakukan perjalanan dari satu prosesor ke prosesor lain melalui shared memory atau melalui jaringan komunikasi.

Speedup

  • Pengukuran speedup sebuah algoritma paralel adalah salah satu cara untuk mengevaluasi kinerja algoritma tersebut.
  • Speedup adalah perbandingan antara waktu yang diperlukan algoritma sekuensial yang paling efisien untuk melakukan komputasi dengan waktu yang dibutuhkan untuk melakukan komputasi yang sama pada sebuah mesin pipeline atau paralel.

[Ke Urutan Pembelajaran Paralel]

Paradigma Komputer Paralel

[Ke Urutan Pembelajaran Paralel]

Menurut T.G.Lewis, komputer paralel dikelompokkan menjadi :

TG_Lewis

Synchronous :

  • Pada komputer paralel yang termasuk dalam kategori ini terdapat koordinasi yang mengatur beberapa operasi untuk dapat berjalan bersamaan sedemikian hingga tidak ada ketergantungan antar operasi.
  • Parallelism yang termasuk dalam kategori ini adalah vector/array parallelism, SIMD dan systolic parallelism.
  • Systolic parallel computer adalah multiprocessor dimana data didistribusikan dan dipompa dari memory ke suatu array prosesor sebelum kembali ke memory.

Asynchronous :

  • Pada komputer paralel asynchronous, masing-masing prosesor dapat diberi tugas atau operasi yang berbeda-beda dan masing-masing prosesor melaksanakan operasi tersebut secara sendiri-sendiri tanpa perlu koordinasi.
  • Paradigma yang juga termasuk dalam kategori ini adalah MIMD dan reduksi.
  • Paradigma reduksi adalah paradigma yang berpijak pada konsep graph reduksi. Program dengan model reduksi diekspresikan sebagai graph alur data. Komputasi berlangsung dengan cara mereduksi graph dan program berhenti jika graph akhirnya tinggal mempunyai satu simpul saja.

MICHAEL J. QUINN  membedakan paralelism dalam dua jenis :
Data Parallelism dan Control Parallelism.

  • Data Parallelism : penerapan operasi yang sama secara simultan terhadap elemen-elemen dari kumpulan data.
  • Control Parallelism : penerapan operasi-operasi berbeda terhadap elemen-elemen data yang berbeda secara bersamaan. Pada control parallelism memungkinkan terjadinya aliran data antar proses dan kemungkinan terjadi aliran data yang kompleks/rumit. Pipeline merupakan satu kasus khusus dari control parallelism dimana aliran data membentuk jalur yang sederhana.

Controled_Paralelism

M. J. FLYNN.
Pengklasifikasian oleh Flynn, dikenal sebagai Taksonomi Flynn yang membedakan komputer paralel ke dalam empat kelas berdasarkan konsep aliran data (data stream) dan aliran instruksi (instruction stream), yaitu : SISD, SIMD, MISD, MIMD.

SISD (Single Instruction stream, Single Data stream)

  • Komputer tunggal yang mempunyai satu unit kontrol, satu unit prosesor dan satu unit memori.

BaganSISD

SIMD  (Single Instruction Multiple Data stream)

  • Komputer yang mempunyai beberapa unit prosesor di bawah satu supervisi satu unitcommon control. Setiap prosesor menerima instruksi yang sama dari unit kontrol, tetapi beroperasi pada data yang berbeda.

BaganSIMD

MISD (Multiple Instruction Single Data stream)

  • Sampai saat ini struktur ini masih merupakan struktur teoritis dan belum ada komputer dengan model ini.

BaganMISD

MIMD (Multiple Instruction Multiple Data stream)

  • Organisasi komputer yang memiliki kemampuan untuk memproses beberapa program dalam waktu yang sama. Pada umumnya multiprosesor dan multikomputer termasuk dalam kategori ini.

BaganMIMD

[Ke Urutan Pembelajaran Paralel]

Terminologi Pemrosesan Paralel

[Ke Urutan Pembelajaran Paralel]

Pemrosesan Paralel (Parallel Processing)

  • Pemrosesan Paralel adalah pemrosesan informasi yang menekankan pada manipulasi secara serentak pada elemen-elemen data di satu atau lebih prosesor untuk memecahkan sebuah masalah.
  • Dimaksudkan untuk mempercepat komputasi dari sistem komputer dan menambah jumlah keluaran yang dapat dihasilkan dalam jangka waktu tertentu

Komputer Paralel

  • Komputer yang memiliki kemampuan untuk melakukan pengolahan paralel

Super Komputer

  • Sebuah general-purpose computer yang mampu menyelesaikan problem dengan kecepatan komputasi sangat tinggi.
  • Semua superkomputer kontemporer adalah komputer paralel. Beberapa di antaranya memiliki prosesor yang sangat kuat dalam jumlah yang relatif sedikit, sementara yang lainnya dibangun oleh mikroprosesor tetapi dalam jumlah yang cukup besar.

Throughput

  • Banyaknya keluaran yang dihasilkan per unit waktu
  • Peningkatan Throughput artinya :
    • Meningkatkan kecepatan operasi
    • Meningkatkan jumlah operasi yang dapat dilakukan
      dalam satu waktu tertentu (concurency)

Pipeline

  • Pada komputasi pipelined, komputasi dibagi ke dalam sejumlah langkah yang masing-masing disebut sebagai segmen, atau stage. Output dari sebuah segmen menjadi input segmen yang lain.

Data Parallelism

  • pemakaian unit multifungsi untuk melakukan operasi yang sama secara serentak terhadap sekumpulan data.

Speedup / Percepatan

Rasio/perbandingan antara terhadap waktu yang diperlukan untuk bagi algoritma yang sekuensial yang paling efisien dengan waktu yang diperlukan  untuk menjalankan operasional yang sama pada komputer paralel.

[Ke Urutan Pembelajaran Paralel]

Pengenalan dan Latar Belakang Komputasi dan Algoritma Paralel

[Ke Urutan Pembelajaran Paralel]

Pada terdahulu, teori-teori ilmu klasik dikembangkan berdasarkan obeservasi, teori dan experience/pengalaman.

  • Dari observasi yang dilakukan pada fenomena tertentu akan dihasilkan suatu hipotesa
  • Teori-teori dikembangkan untuk menerangkan fenomena
  • Dan akhirnya menggunakan Design Experimen untuk menguji teori nya. (Biasanya sering dilakukan secara fisik, dan berbiaya mahal, terkadang waktu yang lama dan tidak etis)

Saat ini Experimen lebih banyak dilakukan secara simulasi numerik, sehingga membutuhkan konstruksi komputasi yang sangat kuat. Baik fisik mesin komputer yang digunakan maupun algoritma yang paling efisien . Ukuran komputasi yang semakin meningkat secara significant akhirnya tidak dapat lagi dilakukan dengan hanya menggunakan komputer dengan single processor, tapi sudah memerlukan dukungan mesin komputasi yang memiliki lebih dari satu prosessor.

Contoh kebutuhan akan komputer paralel :

Oceanographer pada Oregon State University akan mensimulasikan secara numerik sirkulasi global dari samudra dengan membagi laut sebagai berikut:

  • 4096: dari timur ke barat
  • 1024 dari utara ke selatan
  • 12 lapisan laut

Hal ini berarti membutuhkan 4096 X 1024 X 12 ? ± 50 juta sel matrik. Jika setiap bagian (iterasi) butuh 10 menit dengan 30 milyar kalkulasi floating point maka tentu memerlukan komputer yang EXTREMELY HIGH SPEED

[Ke Urutan Pembelajaran Paralel]

Reset user root MySql

Login sebagai user root system

$ sudo -i
# _

Matikan service MySQL :

# service mysql stop

Hidupkan kembali service MySQL dengan melepas authentication/grant

# service mysql start --skip-grant-tables

Jika langkah di atas mengalamai kendala, silahkan lakukan hal berikut:

$ sudo service mysql start
$ cd /var/run
$ cp -rp ./mysqld ./mysqld.bak
$ sudo service mysql stop
$ sudo mv ./mysqld.bak ./mysqld
$ sudo mysqld_safe --skip-grant-tables --skip-networking &

Masuk ke MySQL sebagai user ‘root’ dan masuk ke database ‘mysql’:

# mysql -u root mysql
mysql>

Ubah password ‘root’:

mysql> FLUSH PRIVILEGES;
mysql> update user set Password=PASSWORD('passwordbaru') where user='root';
Query OK, 0 rows affected (0.00 sec)
Rows matched: 4  Changed: 0  Warnings: 0

Sekarang user : root dari MySQL sudah memiliki pasword baru, selanjutnya restart kembali MySQL ke mode normal:

# service mysql restart

Eclipse untuk PHP Editor (PDT)

Versi Eclipse terbaru saat tulisan ini diturunkan adalah Eclipse 3.7 dengan nama Indigo.

Untuk menggunakan Eclipse sebagai editor bagai script PHP Anda, maka perlu ditambahkan package yang disebut dengan PDT (PHP Development Tools), Eclipse 3.7 Indigo menggunakan PDT 3.0

Instalasi Tools ini tidak lah terlalu sulit.

 

Alur proses instalasi

  • Buka Help -> Install New Software.
  • Pilih situs  the Indigo update site.
  • Eclipse akan mengambil daftar plugin dari internet, tunggulah sebentar (tergantung kecepatan internet di tempat Anda), jika daftar fitur yang ada sudah ditampilkan semua – pilih/check 'PHP Development Tools'.
  • Pastikan bahwa 'Contact all update sites…' sudah di'pilih' (Checked).

  • Selanjutnya proses dilanjutkan dengan klik pada 'Next', kemudian pilih 'Next' lagi di layar berikutnyan.
  • Silahkan setujui jika ditanya tentang EULA.

Proses instalasi :

  • Instalasi selesai, silahkan Eclipse di restart.

  • Setelah restart pilihkan perspective PHP, Selesai !

 

Warning: date() on ZendServer

Apabila Anda menemukan error seperti ini ketika menggunakan fungsi date()  :

Warning: date() [function.date]: It is not safe to rely on the system’s timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected ‘Asia/Jakarta’ for ‘WIT/7.0/no DST’ instead in /home/toosa/public_html/basicphp/date1.php on line 2

Ini tandanya Zend Server Anda belum terisi dengan benar. Karena itu masuklah ke Administrasi Zend Server, masuk ke Server Setup lalu cari directive date.timezone , isilah sesuai dengan time zone yang Anda inginkan, misalnya Asia/Jakarta.

 

1 6 7 8 9 10 11