E: Could not get lock /var/lib/aptitude/lock – open …

Error ini diperoleh pada saat sedang melakukan Upgrade paket-paket Ubuntu dengan menggunakan aptitude .

Pada saat aptitude sedang berproses melakukan upgrade, sayat tertidur dan membiarkan laptop hidup hingga akhrinya jaringan putus sendiri seiring dengan matinya laptop saya. Ternyata proses yang belum tuntas tadi meninggalkan sampah ‘lock’ . Karena itu ketika koneksi kembali lalu mencoba menghidupkan  masuk ke aptitude lagi, maka muncullah pesan :

E: Could not get lock /var/lib/aptitude/lock – open (11: Resource temporarily unavailable)” error

Untuk memperbaiki hal ini saya lakukan beberapa hal sebagai berikut :

  1. apt-get update
  2. killall -9 apt-get aptitude
  3. rm -f /var/lib/aptitude/lock

Semoga berguna, terimakasih.

 

How To Create a New User and Grant Permissions in MySQL

I always forget the MySQL create database with UTF8 character set syntax, so here it is:

CREATE DATABASE `mydb` CHARACTER SET utf8 COLLATE utf8_general_ci;
GRANT ALL ON `mydb`.* TO `username`@localhost IDENTIFIED BY 'password';
FLUSH PRIVILEGES;

Alternatively, you can use ‘CREATE SCHEMA’ instead of ‘CREATE DATABASE’:

CREATE SCHEMA `mydb` CHARACTER SET utf8 COLLATE utf8_general_ci;
GRANT ALL ON `mydb`.* TO `username`@localhost IDENTIFIED BY 'password';
FLUSH PRIVILEGES;

I hope this helps someone else too!

Algoritma-algoritma PRAM

[Ke Urutan Pembelajaran Paralel]

PRAM adalah singkatan dari Parallel Random Access Machine

Ini adalah salah satu model komputasi paralel. Model ini sangat sederhana, PRAM belum memperhitungkan jumlah prosesor dan komunikasi antar prosesor. Karena kompleksitas komunikasi ini tidak menjadi isu/masalah akhirnya para desainer/pembuat algoritma PRAM dapat lebih fokus pada paralalisme komputasinya.

Model Komputasi Serial

 

Model Komputasi Paralel PRAM

x

Algoritma-algoritma PRAM

  1. Parallel Reduction
  2. Prefix Sums
  3. List Ranking
  4. Preorder Tree Traversal
  5. Merging Two Sorted Lists
  6. Graph Coloring

Pengantar Komputasi Matrik

Komputasi Matrik telah menjadi dasar dalam berbagai komputasi sains. Salah satu komputasi matrik yang sangat penting adalah perkalian matrik. Beberapa bahasan komputasi matrik dalam kaitan dengan algoritma paralel akan kita bahas cukup banyak disini, diantaranya akan meliputi matrik transpos, perkalian matrik-vektor dan masalah konvolusi.

Algoritma perkalian matrik telah banyak digunakan diberbagai aplikasi sebagai salah satu komponen komputasinya, baik pada masalah numerik maupun non-numerik. Contoh non masalah non-numerik misalnya pada Teori Graph. Pada teori ini banyak menggunakan Perkalian Matrik Boolean.

Produk dari matrik A (p x q) dan matrik B (q x r) adalah matrik C (p x r) yang elemen-elemen nya didefinisikan sebagai berikut :

Untuk \( 0 \leq i \leq p-1 \) dan  \( 0 \leq j \leq r-1 \) dimana \( \vee \) berarti operasi exclusice-OR dan \( \wedge \) adalah operasi AND bitwise.

Jika A dan B adalah matrik Boolean, maka matrik produk C juga akan berupa boolean matrik

Dalam komputasi serial, batas bawah dari kompleksitas perkalian matrik dengan dua matrik n x n diketahui sebesar Ω(n2), karena ada n2 elemen yang terlibat dalam menghasilkan matrik perkalian ini dan diperlukan waktu selama O(n2).

Dalam algoritma perkalian serial baik matrik pada umumnya maupun matrik boolean, akan membutuhkan O(n3) jika semua matrik yang terlibat berukuran n x n

Perkalian Matrik pada model SIMD Mesh 2-D

 

Berikut adalah algoritma perkalian matrik paralel yang disampaikan oleh Quinn

Algoritma MATRIX MULTIPLICATION (2-D MESH SIMD)

 

Global n (dimensi dari matrik), k

Local   a, b, c

begin

{stagger matrices}

for k $latex \leftarrow $ 1 to n – 1 do

for all P(i, j) where 1 \( \leqslant \) i, j \( \leqslant \) n do

if i > k then

a \(\Leftarrow\) east(a)

endif

if j > k then

b \(\Leftarrow\) south(b)

endif

endfor

endfor

{ Compute dot products }

for all P(i, j) where 1 \( \leqslant \) i, j \( \leqslant \) n do

c \(\leftarrow\) a x b

endfor

for k \(\leftarrow\) 1 to n – 1 do

for all P(i, j) where 1 \( \leqslant \) i, j \( \leqslant \) n do

a \(\Leftarrow\) east(a)

b \(\Leftarrow\) south(b)

c \(\leftarrow\) c + a x b

endfor

endfor

end

 

Berikut adalah alogritma Perkalian Matrik Paralel pada Komputer Mesh dengan koneksi memutar (wraparound) menurut Pranay Chaudhury

Komputer Mesh Connected dengan Koneksi Berputar (wraparound connection) di gambaran sebagai berikut :

 

(Gambar 6.2 : (a) Penempatan Data Awal; (b) pengaturan data sebelum proses perkalian matrik dimulai

Algorithm MESH_MATRIX_MULTI1

Input : Elemen A[i,j] dan B[i,j] dari matrik A dan B yang akan diperkalikan tersedia di dalam prosesor-prosesor pij , 1 \( \leqslant \) i, j \( \leqslant \) n-1

Ouput : Elemen C[i,j] yang akan tersimpan di dalam prosesor pij , 0 \( \leqslant \) i, j \( \leqslant \) n-1

for i = 1 to n – 1 dopar

for s = 1 to i do

     for j = 0 to n – 1 dopar

A [i,j] := A[i,(j+1) mod n]

odpar

   od

odpar

for j = 1 to n – 1 dopar

for t = 1 to j do

     for i = 0 to n – 1 dopar

B [i,j] := B[(i+1) mod n, j ]

odpar

   od

odpar

for j = 1 to n – 1 dopar

     for i = 0 to n – 1 dopar

C [i,j] := A[i,j] x B[i,j]

odpar

odpar

for k = 1 to n – 1 do

for i = 0 to n – 1 dopar

     for j = 0 to n – 1 dopar

A [i,j] := A[i,(j+1) mod n];

B [i,j] := B[(i+1) mod n, j ];

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

odpar

   odpar

odpar

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]

1 7 8 9 10 11 12