Kamis, 27 Juni 2013

Teori Komputasi Modern dan Pengimplementasian

        Komputasi bisa diartikan sebagai cara untuk menemukan pemecahan masalah dari data input dengan menggunakan suatu algoritma. Secara umum ilmu komputasi adalah bidang ilmu yang mempunyai perhatian pada penyusunan model matematika dan teknik penyelesaian numerik serta penggunaan komputer untuk menganalisis dan memecahkan masalah-masalah ilmu.  Dalam hal penerapan simulasi komputer atau berbagai bentuk komputasi lainnya untuk menyelesaikan masalah-masalah dalam berbagai bidang keilmuan, tetapi dalam perkembangannya digunakan juga untuk menemukan prinsip-prinsip baru yang mendasar dalam ilmu sains.
         Menggunakan suatu algoritma dan juga penggunaan komputer dalam suatu pemecahan masalah, berarti  cara penyelesaiannya sudah termasuk modernisasi. Sekarang ini dengan semakin berkembangnya jaman, komputasi telah dilakukan dengan komputer. Hal inilah yang menyebabkan berkembangnya komputasi menjadi komputasi modern.
     Komputasi modern bisa dibilang adalah sebuah konsep sistem yang menerima intruksi-intruksi dan menyimpannya dalam sebuah memory, memory disini bisa juga dari memory komputer. Oleh karena pada saat ini kita melakukan komputasi menggunakan komputer maka bisa dibilang komputer merupakan sebuah komputasi modern.

Macam-macam Komputasi Modern
Komputasi modern terbagi tiga macam, yaitu komputasi mobile (bergerak), komputasi grid, dan komputasi cloud (awan). Penjelasan lebih lanjut dari jenis-jenis komputasi modern sebagai berikut :
  • Mobile computing

Mobile Computing adalah sebuah paradigma baru dalam kemajuan teknologi yang dapat melakukan komunikasi dengan jaringan  nirkabel sehingga user mampu melakukan perpindahan.
  • Grid computing (akan di bahas lebih lanjut di tugas ke dua)

Secara singkat, komputasi grid atau grid computing adalah penggunaan sumber daya komputer secara bersama-sama dimana komputer tersebut terpisah secara geografis. Komputasi grid ini biasanya digunakan untuk memecahkan suatu permasalahan berskala besar.
  • Cloud computing (akan di bahas di tugas ke dua)

Cloud computing adalah kumpulan dari beberapa resources yang terintegrasi menjadi satu dan digunakan melalui web.

        Sebenarnya, cloud computing ini didasarkan pada teknologi grid computing yang membuat skalabilitas suatu sistem komputasi menjadi sangat besar dengan cara menggabungkan beberapa sumber daya komputer menjadi satu resource.

Implementasi komputasi di dalam kehidupan sehari-hari : Fisika, Kimia, Matematika, Ekonomi, Geologi, Geografi.
  • Dalam bidang fisika

Computational Physics (Fisika) – Mempelajari implementasi algoritma numerik untuk memecahkan permasalahan teori kuantitatif fisika yang sudah ada.
  • Dalam bidang Biologi

Bioinformatics (Biologi) – Merupakan sebuah aplikasi dari teknologi informasi dan ilmu komputer terhadap bidang biologi molekuler.
  • Dalam bidang kimia

Computational Chemistry (Kimia) – Merupakan salah satu cabang kimia yang menggunakan ilmu komputer untuk membantu menyelesaikan masalah kimia.
  • Dalam bidang Matematika

Conoth penggunaannya adalah program Mapple, dapat menyelesaikan banyak perhitingan yang ada pada bidang matematika,
  • Dalam bidang ekonomi

Computational Economics (Ekonomi) – Mempelajari titik pertemuan antara ekonomi dan komputasi.
bidang geografi dan geologi, dapat mengetahui prakiraan cuaca dan juga mendeteksi gempa yang ada.

Pengantar Komputasi Cloud

A.      Pendahuluan

Cloud Computing adalah komputasi berbasis internet, dimana sumber daya bersama, perangkat lunak, dan informasi disediakan untuk komputer dan perangkat lain sesuai permintaan, seperti jaringan listrik. Cloud computing adalah istilah umum untuk apa pun yang melibatkan host yang memberikan layanan melalui internet. Layanan ini secara luas dibagi menjadi tiga kategori: Infrastruktur-as-a-Service (IaaS), Platform-as-a-Service (PaaS) dan Software-as-a-Service (SaaS). Cloud Computing (atau dalam bahasa Indonesia berarti “Komputasi Awan”) namanya terinspirasi oleh simbol awan yang sering digunakan untuk mewakili Internet di flowchart dan diagram.
Sebuah layanan Cloud Computing memiliki tiga karakteristik yang berbeda yang membedakannya dari tradisional hosting. Hal ini bergantung pada permintaan, biasanya setiap menit atau jam, setiap pengguna dapat mengakses layanan yang mereka inginkan pada suatu waktu tertentu, dan layanan ini sepenuhnya dikelola oleh penyedia (konsumen tidak membutuhan apa-apa selain komputer pribadi dan akses Internet). Inovasi yang signifikan dalam virtualisasi dan komputasi terdistribusi, serta peningkatan akses ke internet berkecepatan tinggi dan ekonomi lemah, telah mempercepat minat Cloud Computing.
Email yang tersedia dalam bentuk web mail merupakan contoh yang sangat kecil dari teknologi cloud computing. Dengan menggunakan layanan email seperti Gmail dan Yahoo Mail, orang tidak perlu lagi menggunakan Outlook atau aplikasi desktop lainnya untuk email mereka. Membaca email dengan browser memungkinkan dilakukan di mana saja sepanjang ada koneksi internet.
Pada tahun 2007, layanan lain termasuk pengolahan kata, spreadsheet, dan presentasi telah dipindahkan ke dalam komputasi awan. Google menyediakan pengolah kata, spreadsheet dan aplikasi presentasi di lingkungan komputasi yang awan dan terintegrasi dengan Gmail dan Google Calendar, menyediakan lingkungan kantor di web (atau di awan). Microsoft dan perusahaan lain juga bereksperimen dengan mengalihkan program-program ke awan untuk membuatnya lebih terjangkau dan lebih mudah diakses oleh pengguna komputer dan Internet. Perangkat lunak sebagai layanan (istilah Microsoft untuk komputasi awan) adalah barang yang sangat baru bagi kebanyakan orang di Microsoft.
Cloud computing saat ini sangat populer, selain dari pemain besar software seperti Microsoft dan Google, perusahaan lain bermunculan hanya untuk menyediakan layanan berbasis awan sebagai pengganti atau penyempurnaan aplikasi pada PC hari ini. Beberapa dari perusahaan tersebut adalah Zoho.com, sebuah office suite online, Evernote.com, merupakan sebuah situs yang ditujukan untuk catatan online , dan RememberTheMilk.com, manajemen tugas online.
Ada beberapa keuntungan yang dapat dilihat dari perkembangan Cloud Computing ini, seperti
·         Lebih efisien karena menggunakan anggaran yang rendah untuk sumber daya
·         Membuat lebih eglity, dengan mudah dapat berorientasi pada profit dan perkembangan yang cepat
·         Membuat operasional dan manajemen lebih mudah, dimungkinkan karena sistem pribadi atau perusahaan yang terkoneksi dalam satu cloud dapat dimonitor dan diatur dengan mudah
·         Menjadikan koloborasi yang terpecaya dan lebih ramping
·         Membantu dalam menekan biaya operasi biaya modal pada saat kita meningkatkan reliability dan kritikal sistem informasi yang kita bangun.
Teknologi komputasi dan teknik pemrograman baru atau teknik pengembangan berubah dengan cepat, tujuan dalam komputasi awan nampaknya akan membuat teknologi menjadi sangat mudah dimata user dan menjadikannya sesederhana mungkin. Pengembangan berbasis internet sangat pesat saat ini dengan boomingnya blogging dan microblogging serta layanan jejaring sosial yang bertujuan untuk menemukan cara baru membantu individu dan bisnis untuk dapat berkomunikasi satu sama lain di arena komputasi awan.
B.      Pengantar Komputasi GRID
Grid computing adalah arsitektur TI baru yang menghasilkan sistem informasi perusahaan yang berbiaya rendah dan lebih adaptif terhadap dinamika bisnis. Dengan grid computing, sejumlah komponen hardware dan software yang modular dan independen akan dapat dikoneksikan dan disatukan untuk memenuhi tuntutan kebutuhan bisnis. Lebih jauh, dari sisi ekonomi, implementasi grid computing berarti membangun pusat komputasi data yang tangguh dengan struktur biaya variatif yang bisa disesuaikan dengan kebutuhan. 
Definisi Grid Computing menurut beberapa sumber, yaitu:
·         Komputasi Gridadalah penggunaan sumber daya yang melibatkan banyak komputer yang terdistribusi dan terpisah secara geografis untuk memecahkan persoalan komputasi dalam skala besar. (http://id.wikipedia.org)
·          Komputasi gridadalah infrastruktur perangkat keras dan perangkat lunak yang dapat menyediakan akses yang bisa diandalkan, konsisten, tahan lama dan tidak mahal terhadap kemampuan komputasi mutakhir yang tersedia. (The Grid 2: Blue Print for a New Computing Infrastructureyang ditulis oleh Ian Foster dan Carl Kesselman)
·         Grid computingmerupakan sebuah sistem komputasi  terdistribusi, yang memungkinkan seluruh sumber daya (resource) dalam jaringan, seperti pemrosesan, bandwidth jaringan, dan kapasitas media penyimpan, membentuk sebuah sistem tunggal secara virtual. (http://ismetsaja.wordpress.com)

Struktur Grid Computing

Grid computing merupakan sistem komputer dengan sumber daya yang dikelola dan dikendalikan secara lokal. Dimana sumber daya ini berbeda dalam hal kebijakan dan mekanisme yaitu  mencakup sumber daya komputasi yang dikelola oleh sistem batch berbeda, sistem storage berbeda pada node berbeda. Kebijakan berbeda dipercayakan kepada user yang sama pada sumber daya berbeda pada Grid. Grid computing memiliki sifat alami dinamis artinya Sumber daya dan pengguna dapat sering berubah.
Grid computing dibangun dengan cara menggabungkan seluruh sistem komputasi grid yang ada di institusi-institusi penelitian menjadi sebuah kesatuan. Pengaturan hardwaredan software pada masing-masing sistem di tingkat institusi kemungkinan berbeda, namun dengan menjalankan teknologi Grid computing dengan menggabungkan simpul-simpul penghubung dari masing-masing sistem, maka akan terbentuk sebah kesatuan sumber daya komputasi grid. Dengan ini berarti pengguna pada suatu institusi dapat memanfaatkan sumber daya komputasi yang berada di luar institusinya. Salah satu syarat dari pembentukan grid computing adalah adanya suatu backbone jaringan berkapasitas besar untuk menghubungkan simpul-simpul penghubung (memiliki lebar pita mulai dari 2 Mbps sampai dengan 155 Mbps).

Jenis-jenis Grid Computing

·         Gram (Grid Resources Allocation & Management)
Komponen ini dibuat untuk mengatur seluruh sumberdaya komputasi yang tersedia dalam sebuah sistem komputasi grid. Pengaturan ini termasuk eksekusi program pada seluruh komputer yang tergabung dalam sistem komputasi grid, mulai dari inisiasi, monitoring, sampai dengan penjadwalan dan koordinasi antar proses yang terjadi dalam sistem tersebut. Juga dapat berkoordinasi dengan sistem-sistem pengaturan sumber daya yang telah ada sebelumnya. Dengan mekanisme ini program-program yang telah dibuat sebelumnya tidak perlu dibangun ulang atau bila dimodifikasi, modifikasinya minimum.
·         RFT/GridFTP (Reliable File Transfer/Grid File Transfer Protocol)
Komponen ini dibuat agar pengguna dapat mengakses data yang berukuran besar dari semua simpul komputasi yang telah tergabung dalam sebuah sistem komputasi secara efisien. Hal ini tentu saja berpengaruh karena kinerja komputasi tidak hanya bergantung pada kecepatan komputer yang tergabung dalam mengeksekusi program, tapi juga seberapa cepat data yang dibutuhkan dapat diakses. Data yang diakses juga tidak selalu ada pada komputer yang mengeksekusi.
·         MDS (Monitoring and Discovery Service)
Komponen ini dibuat untuk memonitoring proses komputasi yang sedang dijalankan agar dapat mendeteksi masalah yang timbul dengan segera.  Sedangkan fungsi disovery dibuat agar pengguna mampu mengetahui keberadaan sumber daya komputasi beserta karakteristiknya.
·         GSI (Grid Security Infrastructure)
Komponen ini dibuat untuk mengamankan sistem komputasi grid secara keseluruhan. Komponen ini membedakan teknologi GT4 dengan teknologi-teknologi sebelumnya. Dengan menerapkan mekanisme keamanan yang tergabung dengan komponen-komponen komputasi grid lainnya, sistem ini dapat diakses secara luas tanpa sedikitpun mengurangi tingkat keamanannya. Sistem keamanan ini dibangun dengan segala komponen yang telah diuji, mencakup proteksi data, autentikasi, delegasi dan autorisasi.

Kelebihan Grid Computing

Beberapa kelebihan dari grid computing adalah:
·         Perkalian dari sumber daya: Resource pool dari CPU dan storage tersedia ketika idle.
·         Lebih cepat dan lebih besar: Komputasi simulasi dan penyelesaian masalah dapat berjalan lebih cepat dan mencakup domain yang lebih luas.
·         Software dan aplikasi: Pool dari aplikasi dan pustaka standard,  akses terhadap model dan perangkat berbeda, metodologi penelitian yang lebih baik.
·         Data: Akses terhadap sumber data global dan hasil penelitian lebih baik.
·         Ukuran dan kompleksitas dari masalah mengharuskan orang-orang dalam beberapa organisasi berkolaborasi dan berbagi sumber daya komputasi, data dan instrumen sehingga terwujud bentuk organisasi baru yaitu virtual organization. Organisasi virtual sebagai hasil kolaborasi memberikan beberapa keuntungan lebih lanjut, di antarnya :
·         Sumber daya dan orang-orang yang tersebar ;
·         Dihubungkan oleh jaringan, melintasi domain-domain admin;
·         Berbagi sumber daya, tujuan bersama;
·         Dinamis;
·         Fault-tolerant, dan
·         Tidak ada batas-batas geografis.

Kekurangan Grid Computing

Kekurangan pada grid computing yang lebih saya tekankan disini adalah mengenai hambatan yang dialami oleh masyarakat Indonesia dalam mengaplikasikan teknologi grid computing. Hambatan-hambatan tersebut adalah sebagai berikut :
·         Manajemen institusi  yang terlalu birokratis menyebabkan mereka enggan untuk merelakan fasilitas yang dimiliki untuk digunakan secara bersama agar mendapatkan manfaat yang lebih besar bagi masyarakat luas.
·         Masih sedikitnya sumber daya manusia yang  kompeten dalam mengelola grid computing.
·         Kurangnya pengetahuan yang mencukupi bagi teknisi IT maupun user non teknisi mengenai manfaat dari grid computing itu sendiri.

Dengan adanya beberapa manfaat dan hambatan mengenai tersedianya grid computing di Indonesia, maka harus ada solusi yang berfungsi untuk mewujudkan manfaat dan menghilangkan hambatan yang muncul tersebut. Solusi itu antara lain adalah sebagai berikut :
·         Memberikan sosialisasi pada instansi pendidikan maupun institusi non pendidikan mengenai manfaat serta biaya dengan menggunakan sistem komputasi grid.
·         Kerjasama riset dan pengembangan antara departement dalam suatu perguruan tinggi dan industri.
·         Diberikannya mata kuliah tentang grid computing sehingga dapat menghasilkan generasi yang menguasai teknologi ini.
·         Adanya pengembangan aplikasi yang relevan dengan grid computing.

C.      Virtualisasi
Virtualisasi memiliki salah satu pengertian adalah sebuah teknik untuk    menyembunyikan karakteristik fisik dari sumber daya komputer dari bagaimana cara sistem lain, aplikasi atau pengguna berinteraksi dengan sumber daya tersebut. 

D.      Komputasi Terdistribusi Pada Cloud Computing 

Pada dasarnya dengan seiringnya maju teknologi maka kegiatan atau pekerjaan kita menjadi lebih mudah.komputasi terdistribusi sendiri memiliki artimempelajari penggunaan terkoordinasi dari komputer yang secara fisik terpisah atau terdistribusi. Sistem terdistribusi membutuhkan softwere yang berbeda dengan sistem terpusatjadi, server data yang hadir dalam lautan awan, Anda dapat setiap saat Kapan, dan di mana saja untuk dengan aman dan nyaman untuk mengakses atau berbagi dengan orang lain. Cloud computing membuat Internet ke setiap pusat penyimpanan pusat data.

E.        Map reduce dan noSQL(Not Only SQL) 
Map reduce adalah sebuah framework pemrograman untuk memproses data yang berukuran besar,biasanya digunakan untuk komputasi terdistribusi pada kumpulan komputer.
 NoSQL (singkatan dari Not Only SQL) adalah tipe database yang sangat jauh berbeda dengan konsep RDBMS(Relational Database Management System) ataupun ODBMS(Objecy Oriented Database Management System). Perbedaan utamanya karena tidak mengenal istilah relation dan tidak menggunakan konsep schema. Kalau biasanya dapatmenggunakan query 'Join’ di sini tidak bisa menggunakannya karena setiap tabel berdiri sendiri tanpa tergantung dengan tabel lainnya alias independen.
Selain itu di dalam konsep DBMS biasanya sebelum insert data diharuskan untuk mendefinisikan terlebih dahulu struktur tabel seperti tipe data dan ukurannya, di konsep NoSQL ini bisa menyimpan data tanpa perlu mendefinisikan tipe data dan ukurannya lagi. Jadi lebih fleksibel bila ada perubahan di masa mendatang.  Adapun beberapa database NoSQL yang ada saat ini yaitu Cassandra, Big Table, CouchDB, Redis, Riak, Dynamo dan lainnya.

F.       noSQL Database
Istilah NoSql pertama kali digunakan pada tahun 1998 sebagai nama untuk open source database yang ringan tidak mengekspos antarmuka SQL. Penulisnya, Carlo Strozzi, mengklaim bahwa sebagai gerakan NoSql “ berangkat dari model relasional yang lebih tepat disebut NoREL atau sesuatu yang berpengaruh. Istilah ini diperkenalkan kembali pada awal 2009 oleh karyawan Rackspace, Eric Evans, ketika Johan Oskarsson dari Last.fm ingin mengorganisir sebuah acara untuk membahas open source database terdistribusi .

Kelebihan
·         Vendor relasional database besar (Oracle, IBM, Sybase dan Microsoft) merupakan andalan untuk menyimpan data.  
·         Pertumbuhan internet yang semakin besar (mereka mencari RDBMS yangberbiaya rendah seperti MySQL dan PostgreSQL) 
·         Pengunjung web yang besar menyebabkan lalu lintas data yang besar sehingga dapat mengakibatkan “efek slash dot”

Parallel Computation

    Komputasi paralel adalah salah satu teknik melakukan komputasi secara bersamaan dengan memanfaatkan beberapa komputer independen secara bersamaan. Ini umumnya diperlukan saat kapasitas yang diperlukan sangat besar, baik karena harus mengolah data dalam jumlah besar (di industri keuangan, bioinformatika, dll) ataupun karena tuntutan proses komputasi yang banyak. Kasus kedua umum ditemui di kalkulasi numerik untuk menyelesaikan persamaan matematis di bidang fisika (fisika komputasi), kimia (kimia komputasi) dll.
       Untuk melakukan aneka jenis komputasi paralel ini diperlukan infrastruktur mesin paralel yang terdiri dari banyak komputer yang dihubungkan dengan jaringan dan mampu bekerja secara paralel untuk menyelesaikan satu masalah. Untuk itu diperlukan aneka perangkat lunak pendukung yang biasa disebut sebagai middleware yang berperan untuk mengatur distribusi pekerjaan antar node dalam satu mesin paralel. Selanjutnya pemakai harus membuat pemrograman paralel untuk merealisasikan komputasi. Tidak berarti dengan mesin paralel semua program yang dijalankan diatasnya otomatis akan diolah secara parallel.

Distributed Processing
          Pada komputasi pararel terjadi pemrosesan yang terdistribusi. Maksud dari pemrosesan terdistribusi ini adalah kemampuan computer yang dijalankan untuk memecahkan masalah dengan proses yang cepat dan terdistribusi. Intinya adalah menyatukan kemampuan dari sumber daya  yang terpisah secara fisik, ke dalam suatu sistem gabungan yang terkoordinasi dengan kapasitas yang jauh melebihi dari kapasitas individual komponen-komponennya.

Arsitektur Komputer Pararel
Ada 4 model komputasi yang digunakan, yaitu:
1.    SISD (Single Instruction, Single Data) adalah satu-satunya yang menggunakan arsitektur Von Neumann. Ini dikarenakan pada model ini hanya digunakan 1 processor saja. Oleh karena itu model ini bisa dikatakan sebagai model untuk komputasi tunggal. Sedangkan ketiga model lainnya merupakan komputasi paralel yang menggunakan beberapa processor. Beberapa contoh komputer yang menggunakan model SISD adalah UNIVAC1, IBM 360, CDC 7600, Cray 1 dan PDP 1.
2.     SIMD(Single Instruction, Multiple Data) menggunakan banyak processor dengan instruksi yang sama, namun setiap processor mengolah data yang berbeda. Sebagai contoh kita ingin mencari angka 27 pada deretan angka yang terdiri dari 100 angka, dan kita menggunakan 5 processor. Pada setiap processor kita menggunakan algoritma atau perintah yang sama, namun data yang diproses berbeda. Misalnya processor 1 mengolah data dari deretan / urutan pertama hingga urutan ke 20, processor 2 mengolah data dari urutan 21 sampai urutan 40, begitu pun untuk processor-processor yang lain. Beberapa contoh komputer yang menggunakan model SIMD adalah ILLIAC IV, MasPar, Cray X-MP, Cray Y-MP, Thingking Machine CM-2 dan Cell Processor (GPU).
3.  MISD(Multiple Instruction, Single Data) menggunakan banyak processor dengan setiap processor menggunakan instruksi yang berbeda namun mengolah data yang sama. Hal ini merupakan kebalikan dari model SIMD. Untuk contoh, kita bisa menggunakan kasus yang sama pada contoh model SIMD namun cara penyelesaian yang berbeda. Pada MISD jika pada komputer pertama, kedua, ketiga, keempat dan kelima sama-sama mengolah data dari urutan 1-100, namun algoritma yang digunakan untuk teknik pencariannya berbeda di setiap processor. Sampai saat ini belum ada komputer yang menggunakan model MISD.
4.   MIMD( Multiple Instruction, Multiple Data) menggunakan banyak processor dengan setiap processor memiliki instruksi yang berbeda dan mengolah data yang berbeda. Namun banyak komputer yang menggunakan model MIMD juga memasukkan komponen untuk model SIMD. Beberapa komputer yang menggunakan model MIMD adalah IBM POWER5, HP/Compaq AlphaServer, Intel IA32, AMD Opteron, Cray XT3 dan IBM BG/L.

Pengantar Thread Programming
            Thread adalah sebuah alur kontrol dari sebuah proses. Suatu proses yang multithreaded mengandung beberapa perbedaan alur kontrol dengan ruang alamat yang sama. Keuntungan dari multithreaded meliputi peningkatan respon dari user, pembagian sumber daya proses, ekonomis, dan kemampuan untuk mengambil keuntungan dari arsitektur multiprosesor. 

Message Passing
         Message Passing adalah sebuah program untuk membuat sebuah aplikasi yang dapat dijalankan secara paralel. Message passing dikembangkan untuk membuat aplikasi pengirim pesan secara portable. Pembagian data antar proses pada pararel dilakukan dengan message passing, yaitu dengan mengirim dan menerima pesan antar proses.

Pemrograman CUDA GPU
    GPU (Graphical Processing Unit) awalnya adalah sebuah prosesor yang berfungsi khusus untuk melakukan rendering pada kartu grafik saja, tapi pada akhirnya terjadi peningkatan kemampuan prosesor dan dapat mempercepat waktu proses dalam mengeksekusi program. CUDA (Compute Unified Device Architecture) merupakan  sebuah arsitektur komputer parallel yang dikembangkan oleh Nvidia. Dalam teknologi CUDA GPU ini kartu grafis dapat digunakan lebih optimal ketika menjalankan sebuah software aplikasi dibandingkan kartu grafis terdahulu yang lebih banyak digunakan untuk menjalankan aplikasi game saja. CUDA GPU dapat memberikan proses dengan pendekatan bahasa C, sehingga programmer atau pengembang software dapat lebih cepat menyelesaikan perhitungan yang komplek. Bukan hanya aplikasi seperti teknologi ilmu pengetahuan yang spesifik. CUDA sekarang bisa dimanfaatkan untuk aplikasi multimedia, misalnya mengedit film dan melakukan filter gambar.


Selasa, 23 April 2013

Pengantar Quantum Computation

a. Pendahuluan
    Peran teknologi dalam pengembangan teknologi informasi (IT, information technology), sudah tidak diragukan lagi. Bertambahnya kecepatan komputer dari waktu ke waktu, meningkatnya kapasitas hardisk dan memori, semakin kecil dan bertambahnya fungsi telepon genggam, adalah contohcontoh
kongkrit produk teknologi di bidang IT. Teknologi komputer merupakan salah satu teknologi yang
paling cepat mengalami perkembangan dan kemajuan. Komputer-komputer yang ada saat ini sudah mencapai kemampuan yang sangat mengagumkan. Tetapi kedahsyatan komputer tercanggih yang ada saat ini pun masih belum bisa memuaskan keinginan manusia yang bermimpi untuk membuat sebuah superkomputer yang benar-benar memiliki kecepatan super. Komputer yang nantinya layak untuk benar-benar disebut sebagai Komputer Super ini adalah Komputer Kuantum. Teori tentang komputer kuantum ini pertama kali dicetuskan oleh fisikawan dari Argonne National Laboratory sekitar 20 tahun lalu. Paul Benioff merupakan orang pertama yang mengaplikasikan teori fisika kuantum pada dunia komputer di tahun 1981. Komputer yang biasa kita gunakan sehari-hari merupakan komputer digital. Komputer digital sangat berbeda dengan komputer kuantum yang super itu. Komputer digital bekerja


Jumat, 05 Oktober 2012

Teori Bisnis Informatika


1.   Bisnis
Bisnis adalah suatu organisasi yang menjual barang atau jasa kepada konsumen atau bisnis lainnya, untuk mendapatkan laba. Secara historis kata bisnis dari bahasa inggris business, dari kata dasar busy yang berarti "sibuk" dalam konteks individu, komunitas, ataupun masyarakat. Dalam artian, sibuk mengerjakan aktivitas dan pekerjaan yang mendatangkan keuntungan.
Bisnis berarti keadaan dimana seseorang atau sekelompok orang sibuk melakukan pekerjaan yang menghasilkan keuntungan. Kata "bisnis" sendiri memiliki tiga penggunaan, tergantung skupnya — penggunaan singular kata bisnis dapat merujuk pada badan usaha, yaitu kesatuan yuridis (hukum), teknis, dan ekonomis yang bertujuan mencari laba atau keuntungan. Penggunaan yang lebih luas dapat merujuk pada sektor pasar tertentu, misalnya "bisnis pertelevisian." Penggunaan yang paling luas merujuk pada seluruh aktivitas yang dilakukan oleh komunitas penyedia barang dan jasa. Meskipun demikian, definisi "bisnis" yang tepat masih menjadi bahan perdebatan hingga saat ini.

2.   Klasifikasi
Bisnis terdiri dari berbagai macam tipe, dan, sebagai akibatnya, bisnis dapat dikelompokkan dengan cara yang berbeda-beda. Satu dari banyak cara yang dapat digunakan adalah dengan mengelompokkan bisnis berdasarkan aktivitas yang dilakukannya dalam menghasilkan keuntungan.
    •  Manufaktur, adalah bisnis yang memproduksi produk yang berasal dari barang mentah atau komponen-komponen, kemudian dijual untuk mendapatkan keuntungan. Contoh manufaktur adalah perusahaan yang memproduksi barang fisik seperti mobil atau pipa.
    • Bisnis jasa, adalah bisnis yang menghasilkan barang intangible, dan mendapatkan keuntungan dengan cara meminta bayaran atas jasa yang mereka berikan. Contoh bisnis jasa adalah konsultan dan psikolog.
    • Pengecer dan distributor, adalah pihak yang berperan sebagai perantara barang antara produsen dengan konsumen. Kebanyakan toko dan perusahaan yang berorientasi-konsumen adalah distributor atau pengecer.
    •   Bisnis pertanian dan pertambangan, adalah bisnis yang memproduksi barang-barang mentah, seperti tanaman atau mineral tambang.
    • Bisnis finansial, adalah bisnis yang mendapatkan keuntungan dari investasi dan pengelolaan modal.
    •  Bisnis informasi, adalah bisnis menghasilkan keuntungan terutama dari pejualan-kembali properti intelektual (intelellectual property).
    •  Utilitas,adalah bisnis yang mengoperasikan jasa untuk publik, seperti listrik dan air, dan biasanya didanai oleh pemerintah.
    • Bisnis real estate, adalah bisnis yang menghasilkan keuntungan dengan cara menjual, menyewakan, dan mengembangkan properti, rumah, dan bangunan.

3.   Pengantar Bisnis Informatika
Bisnis & Informatika. Memiliki dua arti yang saling berbeda. Dalam pengertian yang sederhana bisnis informatika adalah suatu kegiatan yang dilakukan individu atau sekelompok orang yang memiliki nilai (value) dengan tujuan mendapatkan keuntungan (profit) yang dilakukan dengan bantuan teknologi informasi. Yang dimaksud teknologi informasi disini mencakup semua hal yang berkaitan dengan teknologi informasi, seperti internet.

4.   Contoh Bisnis Informatika
                Ada beberapa bisnis Informatika seperti E-Commerce,  jasa warnet, dan infotaiment online. Banyak bisnis informatika yang sudah sukses seperti kaskus(The Largest Indonesia Community) dan TokoBagus. Kaskus dan TokoBagus merupakan Bisnis Informatika yang telah sukses di Indonesia dan di kenal hingga belahan dunia. TokoBagus bebisnis dalam soal jual beli barang, sedangkan kaskus lebih luas, di dalamnya terdapat forum, penjelasan mengenai game jual beli dan sebagainya.

Sumber 1, Sumber 2.


Senin, 21 Mei 2012

Algoritma Game Othello

Bagaimanakah komputer dapat bermain othello? Apakah dia juga dapat berpikir seperti kita manusia? Bagaimana caranya berpikir? Pada tulisan kali ini kita akan coba memahami bagaimana cara komputer 'berpikir' dalam bermain othello.

Manusia berpikir dengan intuisi dan perhitungan

Ketika bermain othello, demikian juga permainan-permainan lain seperti catur, shogi, igo dll., kita manusia berpikir dengan menggabungkan intuisi yang menggunakan perasaan dan perhitungan yang menggunakan otak.

Pada sebuah posisi papan othello tertentu, mula-mula intuisi kita akan segera mengenali pola susunan keping di saat itu, ini adalah kemampuan pattern recognition yang inheren dimiliki oleh setiap manusia. Beberapa langkah yang jelas-jelas buruk atau 'dianggap' buruk segera dapat dikenali dan dihilangkan dari daftar langkah yang mungkin dilakukan (disebut possible moves, legal moves atau valid moves). Setelah itu barulah kita menghitung langkah-langkah sisanya yang 'terlihat' baik, dengan melakukan simulasi permainan di dalam kepala kita untuk setiap langkah, kemudian membandingkan untung-ruginya untuk menentukan langkah terbaik.

Misalnya di dalam sebuah posisi papan, ada 10 valid moves. Mula-mula intuisi kita akan menghapus 3 langkah yang jelas-jelas buruk, lalu 2 langkah lagi yang 'kelihatannya' buruk, dari daftar valid moves. Dengan demikian, hanya tinggal tersisa 5 langkah yang perlu diperhitungkan. Di sini, barulah kita melakukan simulasi permainan, ketika langkah 1 dilakukan maka lawan akan menjawab dengan langkah 1-1, 1-2, 1-3, ... Kalau kita melangkah dengan langkah 2 maka lawan akan menjawab dengan langkah 2-1, 2-2, 2-3, ... dst, sampai beberapa langkah ke depan (kedalaman tertentu) tergantung daya ingat kita.

Di sinipun intuisi manusia selalu berperan besar dalam mengenali pola-pola yang muncul di setiap kedalaman simulasi permainan untuk menghilangkan langkah-langkah yang 'dianggap' buruk dari perhitungan. Sehingga kita manusia dapat memilih hanya satu atau dua langkah tertentu saja yang 'dianggap' baik untuk ditelusuri sampai kedalaman cukup jauh, sementara langkah-langkah lain yang 'dianggap' tidak menjanjikan hanya diperhitungkan seperlunya saja. Dari hasil simulasi ini, kita membandingkan untung-rugi setiap langkah yang disimulasikan, dan menentukan langkah mana yang terbaik.

Komputer berpikir hanya dengan perhitungan

Nah.. di sisi lain, berbeda dengan manusia, komputer tidak mempunyai intuisi yang menggunakan perasaan. Sebagai gantinya, komputer mempunyai daya perhitungan yang jauh lebih besar daripada manusia. Ketika diberikan sebuah posisi papan othello tertentu, sama seperti manusia komputer juga melakukan perhitungan simulasi permainan untuk valid moves yang tersedia. Tetapi berbeda dengan manusia, dia tidak mempunyai intuisi untuk mengenali langkah-langkah yang jelas-jelas buruk lalu menghilangkannya dari daftar perhitungan. Sehingga komputer harus memperhitungkan semua valid moves, di sinilah daya perhitungan yang besar sangat diperlukan.

Pada dasarnya ketika diberikan sebuah susunan posisi papan tertentu, komputer menghitung nilai posisi tersebut menggunakan fitur-fitur yang dijelaskan pada artikel Strategi bermain othello, seperti jumlah keping, penguasaan sudut/x-quare/c-square, jumlah keping stabil, mobility, jumlah keping tepi, parity, dan pola sisi/sudut. Di setiap posisi papan yang sedang dipertimbangkan, mula-mula komputer menghitung nilai dari setiap fitur. Misalnya ketika dilakukan simulasi langkah 1, maka jumlah keping (discs) ada 30, sudut yang dikuasai (corners) ada 2, jumlah keping stabil (stables) ada 5, mobility ada 15, jumlah keping tepi (frontiers) ada 10, parity yang dimenangkan ada 3, dan nilai pola sisi/sudut (pattern) adalah 20.

Selanjutnya nilai dari masing-masing fitur ini digabungkan secara linier dengan bobot-bobot tertentu yang dianggap tepat. Misalnya nilai total dari posisi papan ini adalah:

score = w_d * discs + w_c * corners + w_s * stables + w_m * mobility + w_f * frontiers + w_p * parity + w_t * pattern
= -3 * 30 + 5 * 2 + 9 * 5 + 7 * 15 - 5 * 10 + 8 * 3 + 6 * 20
= 164

Dengan asumsi bahwa bobot-bobot untuk setiap fitur yang dianggap tepat adalah:

w_d = -3 (bobot untuk discs)
w_c = 5 (bobot untuk corners)
w_s = 9 (bobot untuk stables)
w_m = 7 (bobot untuk mobility)
w_f = -5 (bobot untuk frontiers)
w_p = 8 (bobot untuk parity)
w_t = 6 (bobot untuk pattern)

Ini adalah nilai papan untuk simulasi langkah 1. Berikutnya dilakukan simulasi untuk langkah 2, dihitung lagi berapa nilainya, langkah 3 berapa nilainya.. dst. Dan ini baru berpikir sampai kedalaman satu, disebut juga 1-ply dalam istilah kecerdasan buatan untuk permainan komputer. Untuk berpikir sampai kedalaman 2, maka di setiap posisi papan (hasil simulasi kedalaman 1) belum dihitung dulu nilainya, tetapi harus dilakukan lagi simulasi kedalaman 2 untuk setiap langkah di posisi tersebut, baru kemudian dilakukan perhitungan di atas.

Jadi kalau di kedalaman 1 ada 3 valid moves, yang membawa ke 3 posisi papan berbeda, dan di setiap posisi papan rata-rata ada 3 valid moves yang dimiliki lawan kita, maka untuk berpikir sampai kedalaman 2 kita perlu memperhitungkan sebanyak 3 x 3 = 9 posisi papan. Tetapi rata-rata jumlah valid moves pada othello diperkirakan sekitar 8, sehingga 'berpikir' sampai kedalaman 2 perlu menghitung 8^2 = 64 posisi, kedalaman 3 perlu 8^3 = 512 posisi.. dan kedalaman 10 perlu menghitung lebih dari 1 milyar posisi!

Algoritma Minimax

Untuk melakukan perhitungan simulasi permainan inilah, digunakan algoritma standar di dalam bidang kecerdasan buatan (artificial intelligence, AI) yang sudah dikembangkan sejak lama, yaitu Game Theory, terutama algoritma yang disebut Minimax. Sesuai namanya, algoritma minimax adalah aturan untuk permainan zero-sum 2 pemain, yang berusaha meminimalkan kemungkinan kalah sambil memaksimalkan kemungkinan menang untuk pemain yang akan melangkah.

Di kedalaman 1 (dan kedalaman ganjil lainya), posisi papan akan menentukan nilai untuk pemain yang akan melangkah saat ini (current player), sehingga di kedalaman ganjil ini algoritma minimax memilih langkah bernilai maksimal sebagai langkah terbaik. Sebaliknya di kedalaman 2 (dan kedalaman genap lainnya), posisi papan akan menentukan nilai untuk pemain lawan yang akan melangkah berikutnya (opponent player), sehingga di kedalaman genap ini algoritma minimax memilih langkah bernilai minimal sebagai langkah terbaik.

Sebagai ilustrasi sampai kedalaman dua bisa digambarkan dengan tabel berikut:


B memilih B1B memilih B2B memilih B3
A memilih A1+3−2+2
A memilih A2−10+4
A memilih A3−4−3+1

Ketika A memilih langkah A1 dilanjutkan dengan B memilih langkah B1, posisi papan yang terbentuk bernilai +3. Demikian pula untuk A1 → B2 nilainya -2, A1  B3 nilainya +2 dst. Sekarang mari kita coba aplikasikan algoritma minimax untuk menghitung langkah terbaik bagi pemain A.

Terhadap langkah A1 (kedalaman 1) misalnya valid moves pemain B adalah B1, B2 dan B3 (kedalaman 2), dan langkah terbaik menurut algoritma minimax didapat dengan mencari langkah bernilai minimal (karena di kedalaman 2), yaitu B2 (bernilai -2). Demikian pula terhadap langkah A2 yang terbaik bagi B adalah B1 (bernilai -1), dan terhadap A3 adalah B1 juga (bernilai -4). Selanjutnya, nilai untuk langkah pemain A (kedalaman 1) adalah nilai yang 'dikembalikan' dari pemain B di kedalaman 2, yaitu A1 adalah -2, A2 adalah -1, dan A3 adalah -4. Kemudian untuk kedalaman 1 ini algoritma minimax mencari nilai maksimal sebagai langkah terbaik, yaitu A2 (bernilai -1).



Untuk kedalaman lebih dari dua, cara 'berpikir' algoritma minimax dapat digambarkan sebagai pohon permainan (game tree) seperti pada gambar di atas. Di lokasi paling dalam (disebut lokasi node daun atau leaf node), dalam hal ini kedalaman 4, dilakukanlah perhitungan nilai posisi papan yang selanjutnya 'dikembalikan' ke node pada kedalaman di atasnya terus hingga sampai lokasi paling atas (di sebut akar atau root). Panah merah menunjukkan nilai yang dikembalikan dari langkah terbaik pilihan algoritma minimax ke kedalaman di atasnya. Demikianlah, kita dapat melihat algoritma minimax bergantian memilih langkah dengan nilai minimal dan maksimal sebagai langkah terbaik sesuai dengan kedalamannya. Dengan algoritma ini komputer dapat 'berpikir' sampai kedalaman tertentu untuk menentukan langkah terbaik untuk memenangkan permainan.

Tetapi pada prakteknya, algoritma minimax kini tidak pernah digunakan lagi, karena algoritma ini harus memperhitungkan semua valid moves, sehingga memerlukan waktu yang sangat lama. Sebagai gantinya telah dikembangkan beberapa improvisasi dari minimax seperti algoritma AlphaBeta, NegaScout dll. yang dapat melakukan pemangkasan game tree supaya tidak perlu memperhitungkan semua valid moves, sehingga dapat 'berpikir' dalam waktu jauh lebih cepat.
Referensi here.




Sabtu, 14 April 2012

Frostbite Engine

      Frostbite Engine adalah enjin yang terdapat pada game yang dikembangkan oleh EA Digital Illusions CE yang terkenal dengan Serial Battlefield.

        DICE telah menggunakan kedua versi dari enjin tersebut untuk permainan yang mereka buat sendiri seperti Battlefield: Bad Company, Battlefield 1943, Battlefield: Bad Company 2.Versi Frostbite 1.5 juga di guanakan untuk kompomen Multiplayer dari Medal of Honor yang diproduksi oleh DICE.Versi penerus dari enjin Frostbite,Frostbite 2.0 bakal digunakan untuk Battlefield 3, Need for Speed: The Run, Dan Command & Conquer: Generals 2.

Bila anda ingin mendownload game tersebut maka dapat anda buka link di bawah ini :
-Battlefield 3
Download here
-Need for Speed
Download here

sumber