Thursday, September 19, 2013

Seri Bahasa C : Variabel dan Ekspresi Aritmatika...(2)

Contoh kasus : membuat daftar/tabel suhu fahrenheit dan celsius, dengan rumus konversi suhu
celsius =(5/9)(fahrenheit - 32)
#include <stdio.h>

main()
{
int fahr, celsius;
int lower, upper, step;

lower = 0;
upper = 300;
step = 20;

fahr = lower ;

while (fahr <= upper) {
    celsius = 5*(fahr-32)/9;
    printf ("%d \t %d \n",fahr, celsius);
    fahr = fahr + step;


      }

}
Kompilasi dan Hasil Running

pada bahasa C, semua variabel harus dideklarasikan sebelum digunakan, biasanya pada awal fungsi sebelum ada statemen yang dieksekusi. Deklarasi variabel memberikan sifat dan daftar variabel, contoh

int fahr, celsius;
int lower, upper, step;
Pada contoh program di atas dapat dilihat bagaimana perintah printf bekerja. Jika yang akan dicetak pertama kali adalah karakter string, tanda % mengindikasikan ada argumen lain yang akan disubstitusi. Misalnya %d menunjukkan tipe integer sehingga statemen

printf("%d\t%d\n", fahr, celsius);

menyebabkan nilai dua buah integer fahr dan celsius tercetak dengan sebuah tab (\t) diantaranya

Wednesday, September 18, 2013

Seri Pemerograman Parallel dengan C dan MPICH2...(1)

Kebutuhan akan komputasi performa tinggi dan murah mendorong berkembangnya teknik pemerograman parallel, dimana sebuah pekerjaan komputasi yang besar dapat dikerjakan secara bersama-sama oleh beberapa komputer secara bersama-sama. Parallel programming dapat dilakukan pada jaringan lokal (Cluster Computing) atau melalui jalur internet pada wilayah geografis yang luas (Grid Computing)

beberapa framework yang populer digunakan pada parallel programming diantaranya :
  • Open MPI
  • Lamp MPI
  • MPICH2
  • PVC
Pada tulisan ini penulis menggunakan MPICH2 dengan sistem operasi Ubuntu 12.04 LTS.

Instalasi MPICH2
apt-get install mpich2


Perogram 1 : Hello Word

Tulis perogram berikut untuk melihat apakah MPI bekerja dengan baik untuk membaca jumlah processor pada PC, Perogram ditulis dalam bahasa C dengan penambahan Library MPI.

simpan dengan nama hello_mpi.c



#include<mpi.h>
#include<stdio.h>

int main(int argc, char* argv[]) {
    int numberOfProcessors;
    int rank;
    int namelen;
    char processor_name[MPI_MAX_PROCESSOR_NAME];

    MPI_Init(&argc,&argv);
    printf("Hello MPI\r\n");
    MPI_Comm_size(MPI_COMM_WORLD,&numberOfProcessors);
    printf("Jumlah Processor = %d\r\n", numberOfProcessors);

    MPI_Get_processor_name(processor_name, &namelen);
    printf("Nama Processor = %s\r\n",processor_name);

    MPI_Comm_rank (MPI_COMM_WORLD,&rank);
    printf("Proses pada %d\r\n",rank);

    MPI_Finalize();
    return 0;

}


Compile dan Running
cinnamon # mpicc hello_mpi.c -o hello_mpi -Wall
-Wall dimaksudkan untuk menampilkan semua peringatan dari kompilator






Semoga bermafaat 



Monday, August 19, 2013

Membuat Server Repository Lokal

Salah satu kendala bagi sebagian pengguna linux  adalah koneksi ke server repository untuk meng-install software yang dibutuhkan pada saat tidak memiliki koneksi internet . Untuk mengatasi kendala itu, para pengguna linux dapat membuat server repository sendiri yang dapat dijalankan pada localhost.

berikut beberapa kebutuhan yang perlu dipersiapkan :
  1. Web server (Apache / nginx)
  2. DVD repository dalam bentuk iso
Saya akan mengambil contoh kasus pada laptop yang saya gunakan.
  1. Pada laptop saya terdapat 2 partisi hardisk yaitu partisi untuk system linux (partisi 1) dan partisi yang saya khususkan untuk data (partisi 2).
  2. OS Linux yang saya gunakan adalah Linux Mint 13 (Ubuntu 12.04), dengan jumlah ISO Repository sebanyak 11 buah.
  3. ISO Repository tersebut saya taruh pada partisi 2 Hardisk.
Langkah 1
Menambah jumlah mount point 
Untuk menambah jumlah mount point dapat dilihat pada tulisan sebelumnya : menambah jumlah mount point


Langkah 2
Mounting Otomatis partisi 2 dan ISO Repository
Mengapa partisi 2 pada HD juga perlu di mount secara otomatis? itu karena ISO repository tersimpan pada Partisi 2 HD.

Mount-ing otomatis dapat dilakukan dengan meng-edit file /etc/fstab. Berikut hasil dari file fstab yang saya edit :


# <file system> <mount point>   <type>  <options>       <dump>  <pass>
proc            /proc           proc    nodev,noexec,nosuid 0       0
# / was on /dev/sda1 during installation
UUID=fb8e928c-f0cd-4795-b502-742a34127888 /               ext4    errors=remount-ro 0       1
# swap was on /dev/sda6 during installation
UUID=b5cb35bb-e1fd-4295-83f4-d6c3a44cbcd7 none            swap    sw              0       0

#partisi 2
UUID=ea68cf5e-fdae-4d96-9e14-541fd01746af /media/data ext4 defaults,errors=remount-ro 0       1
#local repo
/media/data/maverick/ubuntu-12.04-repository-i386-1-contrib.iso /var/www/repo/repo1/ iso9660 loop,ro,auto 0 0
/media/data/maverick/ubuntu-12.04-repository-i386-2-contrib.iso /var/www/repo/repo2/ iso9660 loop,ro,auto 0 0
/media/data/maverick/ubuntu-12.04-repository-i386-3-contrib.iso /var/www/repo/repo3/ iso9660 loop,ro,auto 0 0
/media/data/maverick/ubuntu-12.04-repository-i386-4-contrib.iso /var/www/repo/repo4/ iso9660 loop,ro,auto 0 0
/media/data/maverick/ubuntu-12.04-repository-i386-5-contrib.iso /var/www/repo/repo5/ iso9660 loop,ro,auto 0 0
/media/data/maverick/ubuntu-12.04-repository-i386-6-contrib.iso /var/www/repo/repo6/ iso9660 loop,ro,auto 0 0
/media/data/maverick/ubuntu-12.04-repository-i386-7-contrib.iso /var/www/repo/repo7/ iso9660 loop,ro,auto 0 0
/media/data/maverick/ubuntu-12.04-repository-i386-8-contrib.iso /var/www/repo/repo8/ iso9660 loop,ro,auto 0 0
/media/data/maverick/ubuntu-12.04-repository-i386-9-contrib.iso /var/www/repo/repo9/ iso9660 loop,ro,auto 0 0
/media/data/maverick/ubuntu-12.04-repository-i386-10-contrib.iso /var/www/repo/repo10/ iso9660 loop,ro,auto 0 0
/media/data/maverick/ubuntu-12.04-repository-i386-11-contrib.iso /var/www/repo/repo11/ iso9660 loop,ro,auto 0 0
Perhatikan #partisi 2
Partisi 2 saya mount otomotis pada folder yang  /media/data dengan tipe ext4

Perhatikan #local repo
ISO repository di mount otomatis pada web server di /var/www/repo/repo(1 - 11)

 Langkah 3
Buat file repo_local.lst pada folder /etc/apt, seperti berikut :

deb http://127.0.0.1/repo/repo1 precise main restricted universe multiverse
deb http://127.0.0.1/repo/repo2 precise main restricted universe multiverse
deb http://127.0.0.1/repo/repo3 precise main restricted universe multiverse
deb http://127.0.0.1/repo/repo4 precise main restricted universe multiverse
deb http://127.0.0.1/repo/repo5 precise main restricted universe multiverse
deb http://127.0.0.1/repo/repo6 precise main restricted universe multiverse
deb http://127.0.0.1/repo/repo7 precise main restricted universe multiverse
deb http://127.0.0.1/repo/repo8 precise main restricted universe multiverse
deb http://127.0.0.1/repo/repo9 precise main restricted universe multiverse
deb http://127.0.0.1/repo/repo10 precise main restricted universe multiverse
deb http://127.0.0.1/repo/repo11 precise main restricted universe multiverse

Untuk memudahkan penggantian repository yang digunakan, dapat membuat dua buah file yaitu : repo_local.lst (yang dibuat diawal) dan sourcest.list.bak. penggunaan kedua file tersebut secara bergiliran dapat dilakukan dengan perintah cp