Sabtu, 29 Mei 2021

Standar MPI

 Teknis Perhitungan MPI


1. Memilih Unit Analisis.


Analisis yang dipilih bisa dalam berbagai macam unit seperti individu, rumah tangga, propinsi, kabupaten/kota, jenis kelamin, desa-kota dan lain sebagainya.


2. Memilih Dimensi.


Pemilihan dimensi sangat penting dilakukan untuk melihat dimensi apa yang ingin dilihat. Standar OPHI menggunakan tiga dimensi yaitu dimensi kesehatan, pendidikan dan standar kualitas hidup. Sementara MPI Indonesia, memakai tiga dimensi sesuai standar OPHI, dengan beberapa perubahan indikator di masing-masing dimensi. Ada beberapa hal yang perlu diperhatikan dalam pemilihan dimensi dan indikator yang ada, yaitu antara lain:


Perlu melakukan expert review dari berbagai stakeholder terkait, melalui persepsi dari variabel terkait ini maka kekuatan dimensi dan indikator menjadi semakin kuat.

Untuk memperkuat legitimasi indikator maka harus memenuhi tujuan yang ada seperti SDGs, deklarasi HAM, atau misalnya RPJMN Pemerintah.

Asumsi implisit dan eksplisit tentang apa yang orang hargai dan harusnya hargai. Hal ini bisa dibawa dari konvensi, teori psikologi atau bahkan filosofi.

Data yang dipakai harus memberikan karakteristik indikator yang diberikan seperti data Susenas dapat memberika indikator dari berbagai macam dimensi seperti kesehatan, pendidikan, jaminan sosial, standar kualitas hidup, konsumsi, pendapatan, pekerjaan dan lain-lain.

Bukti empiris yang dapat menunjukan preferensi dan perilaku manusia atau studi yang memperlihatkan nilai dari masalah mental manusia.

3. Memilih Indikator.


Indikator akan dipilih dari setiap dimensi dengan prinsip “accuracy” (untuk membuat data lebih akurat bisa menggunakan berbagai macam indikator yang dibutuhkan sehingga mempunyai berbagai macam analisis untuk membuat pembuatan kebijakan menjadi lebih baik) dan “parsimony” (menggunakan sesedikit mungkin indikator untuk mempermudah analisis kebijakan dan transparansi). Untuk menetapkan indikator yang baik maka kaidah statistik harus perlu diperhatikan, yaitu bila bisa penetapan indikator adalah tidak berkorelasi tinggi antar indikator. Indikator yang kami pilih telah melalui beberapa tahapan konsinyering yang dilakukan antara lain dengan sejumlah expert yang mengerti mengenai masalah kemiskinan di Indonesia seperti Prof. Erani Yustika, Ph.D., Hasbullah Tharbany, Ph.D., Sumedi Andono, Ph.D. , serta Bu Sri Hartati dan Pak Rizal dari BPS.


4. Membuat Bobot Dimensi dan Indikator.


Sesuai dengan metode Alkire-Foster, setiap dimensi dan indikator akan diberikan bobot tertentu. Metode pembobotan dipakai rata -rata setiap dimensi dan indikator. Untuk bobot dimensi dan indikator MPI Indonesia tersaji di bawah ini:


Tabel 10 Bobot Dimensi dan Indikator MPI


Dimensi


(Bobot)


Indikator


(Bobot)


Kesehatan (1/3)


Sanitasi (1/12)


Air Bersih (1/12)


Akses pada layanan kesehatan maternal (persalinan) (1/12)


Asupan Gizi Seimbang pada Balita (1/12)


Pendidikan(1/3)


Akses kepada layanan pendidikan dasar dan menengah (1/9)


Melek Huruf (1/9)


Akses kepada layanan pendidikan pra sekolah (1/9)


Standar Kualitas Hidup(1/3)


Sumber Penerangan (1/12)


Bahan Bakar/Energi untuk Memasak(1/12)


Kondisi Atap, Lantai dan Dinding Rumah (1/12)


Kepemilikan Aset(1/12)


 

5. Membuat Garis Kemiskinan.


Perlu ditetapkan poverty cut-off untuk masing-masing dimensi. Langkah pertama adalah menciptakan cut-off untuk metodologi di mana seseorang dapat dikatakan deprive atau non-deprive dari setiap dimensi. Misalnya: seseorang dikatakan miskin berdasarkan indikator pendidikan bilamana orang tersebut putus sekolah atau tidak pernah sekolah meski berada pada rentang usia sekolah. Di luar itu, seseorang tidak dapat dikatakan miskin.


6. Aplikasi Garis Kemiskinan.


Langkah ini mengganti pencapaian seseorang dengan status yang dialami dengan setiap cut-off atau batas garis kemiskinan multidimensi yang ada. Sebagai contoh, batas garis kemiskinan MPI adalah 0.333. Bila seseorang mengalami indikator kemiskinan dengan nilai total lebih dari 0,333 maka ia tergolong miskin multidimensi, sementara bila di bawah 0.333 maka orang tersebut tidak dapat dikatakan miskin multidimensi. Jadi, apabila seseorang tidak sekolah (mengalami kemiskinan dari dimensi pendidikan) tetapi masih berada di bawah garis kemiskinan multidimensi, maka ia tidak dikategorikan sebagai orang yang miskin.


7. Hitung Jumlah Deprivasi dari Tiap Orang.


Setelah mendapatkan batasan garis kemiskinan, maka selanjutnya adalah menghitung jumlah kemiskinan. Metode Alkire Foster membuat persyaratan bahwa orang yang melewati batas 0.333 dianggap terkena kemiskinan multidimensi, tetapi cutoff ini bisa disesuaikan tergantung kebutuhan masing-masig daerah.


8. Menetapkan Cut-off Kedua.


Asumsi penetapan ini adalah menetapkan bobot yang sesuai, hal ini akan memberikan angka dari tiap dimensi di indikator ia mengalami kemiskinan. Seseorang yang dikatakan mengalami kemiskinan multidimensi jika ia terkena dalam bebeberapa dimensi yang bersangkutan, sesuai dengan nilai bobot masing-masing indikator.


9. Mengaplikasikan cut-off untuk mencapai set data orang miskin dan orang non-miskin yang sudah tersensor.


Fokus yang dilakukan adalah memberikan profil dari orang miskin tersebut serta dimensi yang diberikan saat mereka deprived. Semua informasi yang menyatakan bahwa ia tidak miskin akan dibuat nol semua. Penghitungan ini dapat dilihat dengan metodologi di bawah ini yaitu :


Tabel 11 Contoh Hasil penghitungan MPI individu dalam Rumah Tangga Sampel


Dimensi dan Indikator


Individu dalam Rumah Tangga Sampel


Bobot


1


2


3


4


Ukuran dalam rumah tangga sampel


4


7


5


4


 


Dimensi Kesehatan:


Sanitasi


0


1


0


1


1/12 = 0.083


Air Bersih


0


1


0


0


1/12 = 0.083


Akses pada layanan kesehatan maternal (persalinan)


1


1


0


0


1/12 = 0.083


Asupan Gizi Seimbang pada Balita


1


1


1


1


1/12 = 0.083


Dimensi Pendidikan:


Akses kepada layanan pendidikan dasar dan menengah


0


0


1


1


1/9 = 0.111


Melek Huruf


0


1


1


1


1/9 = 0.111


Akses kepada layanan pendidikan pra sekolah


0


1


0


1


1/9 = 0.111


Dimensi Standar Kualitas Hidup:


Sumber Penerangan


0


0


0


0


1/12 = 0.083


Bahan Bakar/Energi untuk Memasak


0


1


0


1


1/12 = 0.083


Kondisi Atap, Lantai dan Dinding Rumah


0


1


0


1


1/12 = 0.083


Kepemilikan Aset


0


1


0


1


1/12 = 0.083


Skor


0.166


0.803


0.305


0.748


 


Apakah masuk kategori miskin MPI (c1≥1/3=0.333)


No


Ya


No


Ya


 


Sensor skor (c1)


0


0.803


0


0.748


 


MPI dihitung menggunakan bobot tertimbang dari dimensi dan indikator. Bobot dari dimensi ditimbang sama yaitu 1/3 masing-masing dimensi. Bobot masing-masing indikator dalam dimensi juga ditimbang dengan nilai yang sama. Hasilnya, akan didapatkan bobot indikator sebagai berikut: bobot indikator kesehatan yang terdiri dari dua indikator dinilai sebesar 1/6, bobot pendidikan yang terdiri dari dua indikator dinilai 1/6 dan bobot kualitas hidup yang terdiri dari enam indikator dinilai 1/18.


Setiap orang yang dinilai dalam MPI dilihat berdasarkan indikator yang dinilai. Penilaiannya terdiri dari rentang 0-1. Ketika seseorang memenuhi penilaian kemiskinan menurut indikator MPI maka dia dikenaikan poin 1. Penilaian akan terus dilakukan pada setiap indikator. Setelah mendapatkan penilaian terhadap sepuluh indikator, maka indeks kemiskinan akan dihitung berdasarkan rumus berikut:


C1 = W1I1 + C2I2 + .... WnIn 


Dimana Ii =1 jika seseorang kena dalam indikator i dan Ii = 0 jika bukan. Wi adalah bobot dari indikator i dengan




Semua indikator dan dimensi kemudian dijumlahkan, lalu dicari rata-rata nilai. Seseorang dikatakan miskin ketika total rata-rata penilaian kecil dari 1/3


Pada tabel di atas terlihat bahwa individu 2 dan 4 terkena kemiskinan multidimensi, sementara individu 1 dan 4 tidak terkena kemiskinan multidimensi. Hal ini ditunjukkan dengan nilai kemiskinan multidimensi. Bila nilai yang dicapai berada di bawah batas 0,333 maka individu bersangkutan tidak mengalami kemiskinan multidimensi sementara bila nilainay lebih dari 0,333 maka individu tersebut mengalami kemiskinan multidimensi


Skor setiap orang dalam rumah tangga, contoh Rumah Tangga 1 adalah: (2 x 0.083) = 0.166


Angka kemiskinan multidimensi (H) = (7+4) : (4+7+5+4) = 0.550


Intensitas kemiskinan multidimensi (A) = (0 x 4) + (0.803 x 7) + (0 x 5) + (0.748 x 4) : (7+4) = 0.783


MPI = H x A = 0.550 x 0.783 = 0.4037


10. Menghitung Kemiskinan Headcount


Kemiskinan Headcount akan memberikan gambaran siapa yang mengalami kemiskinan multidimensi. Setidaknya dalam hal ini, tiap individu akan diketahui kemiskinan apa saja yang mereka alami.




q adalah jumlah individu yang dikategorikan miskin secara multidimensional sedangkan n adalah total populasi.


11. Menghitung Kemiskinan Household


Sesuai dengan Metode Alkire Foster, kemiskinan individu harus diaplikasikan kepada household dengan memetakan setiap individu dalam suatu keluarga yang mengalami kemiskinan multidimensi.


12. Memecah Grup dan Breakdown dari Dimensi


Grup yang dibuat bisa berdasarkan dengan jenis kelamin, daerah desa ataupun kota dan lain-lain. Tingkat kemiskinan bisa meningkat jika seseorang mengalami kemiskinan dengan adanya tambahan dimensi yang ada, jadi individu ini sensitif dari multiplikasi kemiskinan. Kemiskinan ini akan menyesuaikan dengan group yang dikalkulasikan dan dapat pula menjadi perbandingan internasional antar negara yang berbeda pula.


Pemecahan Grup ini bertujuan untuk mempemudah pemerintah daerah untuk menentukan berapa (penduduk atau RT yang miskin), dimana (daerah yang miskin), kenapa (penyebab kemiskinan), dan bagaimana (penanggulangan kemiskinan).

Protocol komputasi network file system

 Network File System atau sistem berkas jaringan adalah sekumpulan protokol yang digunakan untuk mengakses beberapa sistem berkas melalui jaringan. Bisa dikatakan juga bahwa NFS merupakan sebuah implementasi dan spesifikasi dari sebuah perangkat lunak untuk mengakses remote file melalui jaringan LAN atau WAN.

NFS yang dikembangkan oleh Sun Micro Systems Inc. ini menggambarkan himpunan unit-unit komputer yang saling berhubungan sebagai sebuah mesin bebas yang memiliki sistem berkas bebas. Tujuan dari NFS adalah untuk memungkinkan terjadinya pertukaran sistem berkas secara transparan antara mesin-mesin bebas tersebut. Hubungan yang terjadi di sini didasarkan pada hubungan client-server yang menggunakan perangkat lunak NFS server dan NFS client yang berjalan diatas workstation. Gambar 18.3 berikut ini menggambarkan tiga buah mesin bebas yang memiliki sistem berkas lokal masing-masing yang bebas juga.

Gambar 18.3. Three Independent File System

Three Independent File System

NFS didesain agar dapat beroperasi di lingkungan ataupun jaringan yang heterogen yang meliputi mesin, platform, sistem operasi, dan arsitektur jaringan. Ketidaktergantungan ini didapat dari penggunaan RPC primitif yang dibangun diatas protokol External Data Representation (XDR).

Jika misalnya terjadi sebuah pertukaran sistem berkas antara server dan client , maka pertukaran sistem berkas yang terjadi disini harus dipastikan hanya berpengaruh pada tingkat client dan tidak mempengaruhi sisi server , karena server dan client adalah mesin yang berbeda dan sama-sama bebas. Untuk itu, mesin client harus melakukan operasi mount terlebih dahulu agar remote directory dapat diakses secara transparan.

Paralel computing

 Parallel computing

Language

Download PDF

Watch

Edit

"Parallelization" redirects here. For parallelization of manifolds, see Parallelization (mathematics).

Parallel computing is a type of computation in which many calculations or processes are carried out simultaneously.[1] Large problems can often be divided into smaller ones, which can then be solved at the same time. There are several different forms of parallel computing: bit-level, instruction-level, data, and task parallelism. Parallelism has long been employed in high-performance computing, but has gained broader interest due to the physical constraints preventing frequency scaling.[2] As power consumption (and consequently heat generation) by computers has become a concern in recent years,[3] parallel computing has become the dominant paradigm in computer architecture, mainly in the form of multi-core processors.[4]



IBM's Blue Gene/P massively parallel supercomputer

Parallel computing is closely related to concurrent computing—they are frequently used together, and often conflated, though the two are distinct: it is possible to have parallelism without concurrency (such as bit-level parallelism), and concurrency without parallelism (such as multitasking by time-sharing on a single-core CPU).[5][6] In parallel computing, a computational task is typically broken down into several, often many, very similar sub-tasks that can be processed independently and whose results are combined afterwards, upon completion. In contrast, in concurrent computing, the various processes often do not address related tasks; when they do, as is typical in distributed computing, the separate tasks may have a varied nature and often require some inter-process communication during execution.


Parallel computers can be roughly classified according to the level at which the hardware supports parallelism, with multi-core and multi-processor computers having multiple processing elements within a single machine, while clusters, MPPs, and grids use multiple computers to work on the same task. Specialized parallel computer architectures are sometimes used alongside traditional processors, for accelerating specific tasks.


In some cases parallelism is transparent to the programmer, such as in bit-level or instruction-level parallelism, but explicitly parallel algorithms, particularly those that use concurrency, are more difficult to write than sequential ones,[7] because concurrency introduces several new classes of potential software bugs, of which race conditions are the most common. Communication and synchronization between the different subtasks are typically some of the greatest obstacles to getting optimal parallel program performance.


A theoretical upper bound on the speed-up of a single program as a result of parallelization is given by Amdahl's law.


Background 

Types of parallelism Edit

Bit-level parallelism Edit

Main article: Bit-level parallelism

From the advent of very-large-scale integration (VLSI) computer-chip fabrication technology in the 1970s until about 1986, speed-up in computer architecture was driven by doubling computer word size—the amount of information the processor can manipulate per cycle.[32] Increasing the word size reduces the number of instructions the processor must execute to perform an operation on variables whose sizes are greater than the length of the word. For example, where an 8-bit processor must add two 16-bit integers, the processor must first add the 8 lower-order bits from each integer using the standard addition instruction, then add the 8 higher-order bits using an add-with-carry instruction and the carry bit from the lower order addition; thus, an 8-bit processor requires two instructions to complete a single operation, where a 16-bit processor would be able to complete the operation with a single instruction.


Historically, 4-bit microprocessors were replaced with 8-bit, then 16-bit, then 32-bit microprocessors. This trend generally came to an end with the introduction of 32-bit processors, which has been a standard in general-purpose computing for two decades. Not until the early 2000s, with the advent of x86-64 architectures, did 64-bit processors become commonplace.


Instruction-level parallelism Edit

Main article: Instruction-level parallelism


A canonical processor without pipeline. It takes five clock cycles to complete one instruction and thus the processor can issue subscalar performance (IPC = 0.2 < 1).

A computer program is, in essence, a stream of instructions executed by a processor. Without instruction-level parallelism, a processor can only issue less than one instruction per clock cycle (IPC < 1). These processors are known as subscalar processors. These instructions can be re-ordered and combined into groups which are then executed in parallel without changing the result of the program. This is known as instruction-level parallelism. Advances in instruction-level parallelism dominated computer architecture from the mid-1980s until the mid-1990s.[33]



A canonical five-stage pipelined processor. In the best case scenario, it takes one clock cycle to complete one instruction and thus the processor can issue scalar performance (IPC = 1).

All modern processors have multi-stage instruction pipelines. Each stage in the pipeline corresponds to a different action the processor performs on that instruction in that stage; a processor with an N-stage pipeline can have up to N different instructions at different stages of completion and thus can issue one instruction per clock cycle (IPC = 1). These processors are known as scalar processors. The canonical example of a pipelined processor is a RISC processor, with five stages: instruction fetch (IF), instruction decode (ID), execute (EX), memory access (MEM), and register write back (WB). The Pentium 4 processor had a 35-stage pipeline.[34]



A canonical five-stage pipelined processor with two execution units. In the best case scenario, it takes one clock cycle to complete two instructions and thus the processor can issue superscalar performance (IPC = 2 > 1).

Most modern processors also have multiple execution units. They usually combine this feature with pipelining and thus can issue more than one instruction per clock cycle (IPC > 1). These processors are known as superscalar processors. Superscalar processors differ from multi-core processors in that the several execution units are not entire processors (i.e. processing units). Instructions can be grouped together only if there is no data dependency between them. Scoreboarding and the Tomasulo algorithm (which is similar to scoreboarding but makes use of register renaming) are two of the most common techniques for implementing out-of-order execution and instruction-level parallelism.


Task parallelism Edit

Main article: Task parallelism

Task parallelisms is the characteristic of a parallel program that "entirely different calculations can be performed on either the same or different sets of data".[35] This contrasts with data parallelism, where the same calculation is performed on the same or different sets of data. Task parallelism involves the decomposition of a task into sub-tasks and then allocating each sub-task to a processor for execution. The processors would then execute these sub-tasks concurrently and often cooperatively. Task parallelism does not usually scale with the size of a problem.[36]


Superword level parallelism Edit

Superword level parallelism is a vectorization technique based on loop unrolling and basic block vectorization. It is distinct from loop vectorization algorithms in that it can exploit parallelism of inline code, such as manipulating coordinates, color channels or in loops unrolled by hand.[37]


Hardware Edit

Memory and communication Edit

Main memory in a parallel computer is either shared memory (shared between all processing elements in a single address space), or distributed memory (in which each processing element has its own local address space).[38] Distributed memory refers to the fact that the memory is logically distributed, but often implies that it is physically distributed as well. Distributed shared memory and memory virtualization combine the two approaches, where the processing element has its own local memory and access to the memory on non-local processors. Accesses to local memory are typically faster than accesses to non-local memory. On the supercomputers, distributed shared memory space can be implemented using the programming model such as PGAS. This model allows processes on one compute node to transparently access the remote memory of another compute node. All compute nodes are also connected to an external shared memory system via high-speed interconnect, such as Infiniband, this external shared memory system is known as burst buffer, which is typically built from arrays of non-volatile memory physically distributed across multiple I/O nodes.



A logical view of a non-uniform memory access (NUMA) architecture. Processors in one directory can access that directory's memory with less latency than they can access memory in the other directory's memory.

Computer architectures in which each element of main memory can be accessed with equal latency and bandwidth are known as uniform memory access (UMA) systems. Typically, that can be achieved only by a shared memory system, in which the memory is not physically distributed. A system that does not have this property is known as a non-uniform memory access (NUMA) architecture. Distributed memory systems have non-uniform memory access.


Computer systems make use of caches—small and fast memories located close to the processor which store temporary copies of memory values (nearby in both the physical and logical sense). Parallel computer systems have difficulties with caches that may store the same value in more than one location, with the possibility of incorrect program execution. These computers require a cache coherency system, which keeps track of cached values and strategically purges them, thus ensuring correct program execution. Bus snooping is one of the most common methods for keeping track of which values are being accessed (and thus should be purged). Designing large, high-performance cache coherence systems is a very difficult problem in computer architecture. As a result, shared memory computer architectures do not scale as well as distributed memory systems do.[38]


Processor–processor and processor–memory communication can be implemented in hardware in several ways, including via shared (either multiported or multiplexed) memory, a crossbar switch, a shared bus or an interconnect network of a myriad of topologies including star, ring, tree, hypercube, fat hypercube (a hypercube with more than one processor at a node), or n-dimensional mesh.


Parallel computers based on interconnected networks need to have some kind of routing to enable the passing of messages between nodes that are not directly connected. The medium used for communication between the processors is likely to be hierarchical in large multiprocessor machines.


Classes of parallel computers Edit

Parallel computers can be roughly classified according to the level at which the hardware supports parallelism. This classification is broadly analogous to the distance between basic computing nodes. These are not mutually exclusive; for example, clusters of symmetric multiprocessors are relatively common.


Multi-core computing Edit

Main article: Multi-core processor

A multi-core processor is a processor that includes multiple processing units (called "cores") on the same chip. This processor differs from a superscalar processor, which includes multiple execution units and can issue multiple instructions per clock cycle from one instruction stream (thread); in contrast, a multi-core processor can issue multiple instructions per clock cycle from multiple instruction streams. IBM's Cell microprocessor, designed for use in the Sony PlayStation 3, is a prominent multi-core processor. Each core in a multi-core processor can potentially be superscalar as well—that is, on every clock cycle, each core can issue multiple instructions from one thread.


Simultaneous multithreading (of which Intel's Hyper-Threading is the best known) was an early form of pseudo-multi-coreism. A processor capable of concurrent multithreading includes multiple execution units in the same processing unit—that is it has a superscalar architecture—and can issue multiple instructions per clock cycle from multiple threads. Temporal multithreading on the other hand includes a single execution unit in the same processing unit and can issue one instruction at a time from multiple threads.


Symmetric multiprocessing Edit

Main article: Symmetric multiprocessing

A symmetric multiprocessor (SMP) is a computer system with multiple identical processors that share memory and connect via a bus.[39] Bus contention prevents bus architectures from scaling. As a result, SMPs generally do not comprise more than 32 processors.[40] Because of the small size of the processors and the significant reduction in the requirements for bus bandwidth achieved by large caches, such symmetric multiprocessors are extremely cost-effective, provided that a sufficient amount of memory bandwidth exists.[39]


Distributed computing Edit

Main article: Distributed computing

A distributed computer (also known as a distributed memory multiprocessor) is a distributed memory computer system in which the processing elements are connected by a network. Distributed computers are highly scalable. The terms "concurrent computing", "parallel computing", and "distributed computing" have a lot of overlap, and no clear distinction exists between them.[41] The same system may be characterized both as "parallel" and "distributed"; the processors in a typical distributed system run concurrently in parallel.[42]


Cluster computing Edit

Main article: Computer cluster


A Beowulf cluster

A cluster is a group of loosely coupled computers that work together closely, so that in some respects they can be regarded as a single computer.[43] Clusters are composed of multiple standalone machines connected by a network. While machines in a cluster do not have to be symmetric, load balancing is more difficult if they are not. The most common type of cluster is the Beowulf cluster, which is a cluster implemented on multiple identical commercial off-the-shelf computers connected with a TCP/IP Ethernet local area network.[44] Beowulf technology was originally developed by Thomas Sterling and Donald Becker. 87% of all Top500 supercomputers are clusters.[45] The remaining are Massively Parallel Processors, explained below.


Because grid computing systems (described below) can easily handle embarrassingly parallel problems, modern clusters are typically designed to handle more difficult problems—problems that require nodes to share intermediate results with each other more often. This requires a high bandwidth and, more importantly, a low-latency interconnection network. Many historic and current supercomputers use customized high-performance network hardware specifically designed for cluster computing, such as the Cray Gemini network.[46] As of 2014, most current supercomputers use some off-the-shelf standard network hardware, often Myrinet, InfiniBand, or Gigabit Ethernet.


Massively parallel computing Edit

Main article: Massively parallel (computing)


A cabinet from IBM's Blue Gene/L massively parallel supercomputer

A massively parallel processor (MPP) is a single computer with many networked processors. MPPs have many of the same characteristics as clusters, but MPPs have specialized interconnect networks (whereas clusters use commodity hardware for networking). MPPs also tend to be larger than clusters, typically having "far more" than 100 processors.[47] In an MPP, "each CPU contains its own memory and copy of the operating system and application. Each subsystem communicates with the others via a high-speed interconnect."[48]


IBM's Blue Gene/L, the fifth fastest supercomputer in the world according to the June 2009 TOP500 ranking, is an MPP.


Grid computing Edit

Main article: Grid computing

Grid computing is the most distributed form of parallel computing. It makes use of computers communicating over the Internet to work on a given problem. Because of the low bandwidth and extremely high latency available on the Internet, distributed computing typically deals only with embarrassingly parallel problems. Many distributed computing applications have been created, of which SETI@home and Folding@home are the best-known examples.[49]


Most grid computing applications use middleware (software that sits between the operating system and the application to manage network resources and standardize the software interface). The most common distributed computing middleware is the Berkeley Open Infrastructure for Network Computing (BOINC). Often, distributed computing software makes use of "spare cycles", performing computations at times when a computer is idling.


Specialized parallel computers Edit

Within parallel computing, there are specialized parallel devices that remain niche areas of interest. While not domain-specific, they tend to be applicable to only a few classes of parallel problems.


Reconfigurable computing with field-programmable gate arrays Edit

Reconfigurable computing is the use of a field-programmable gate array (FPGA) as a co-processor to a general-purpose computer. An FPGA is, in essence, a computer chip that can rewire itself for a given task.


FPGAs can be programmed with hardware description languages such as VHDL[50] or Verilog.[51] However, programming in these languages can be tedious. Several vendors have created C to HDL languages that attempt to emulate the syntax and semantics of the C programming language, with which most programmers are familiar. The best known C to HDL languages are Mitrion-C, Impulse C, DIME-C, and Handel-C. Specific subsets of SystemC based on C++ can also be used for this purpose.


AMD's decision to open its HyperTransport technology to third-party vendors has become the enabling technology for high-performance reconfigurable computing.[52] According to Michael R. D'Amour, Chief Operating Officer of DRC Computer Corporation, "when we first walked into AMD, they called us 'the socket stealers.' Now they call us their partners."[52]


General-purpose computing on graphics processing units (GPGPU) Edit

Main article: GPGPU


Nvidia's Tesla GPGPU card

General-purpose computing on graphics processing units (GPGPU) is a fairly recent trend in computer engineering research. GPUs are co-processors that have been heavily optimized for computer graphics processing.[53] Computer graphics processing is a field dominated by data parallel operations—particularly linear algebra matrix operations.


In the early days, GPGPU programs used the normal graphics APIs for executing programs. However, several new programming languages and platforms have been built to do general purpose computation on GPUs with both Nvidia and AMD releasing programming environments with CUDA and Stream SDK respectively. Other GPU programming languages include BrookGPU, PeakStream, and RapidMind. Nvidia has also released specific products for computation in their Tesla series. The technology consortium Khronos Group has released the OpenCL specification, which is a framework for writing programs that execute across platforms consisting of CPUs and GPUs. AMD, Apple, Intel, Nvidia and others are supporting OpenCL.


Application-specific integrated circuits Edit

Main article: Application-specific integrated circuit

Several application-specific integrated circuit (ASIC) approaches have been devised for dealing with parallel applications.[54][55][56]


Because an ASIC is (by definition) specific to a given application, it can be fully optimized for that application. As a result, for a given application, an ASIC tends to outperform a general-purpose computer. However, ASICs are created by UV photolithography. This process requires a mask set, which can be extremely expensive. A mask set can cost over a million US dollars.[57] (The smaller the transistors required for the chip, the more expensive the mask will be.) Meanwhile, performance increases in general-purpose computing over time (as described by Moore's law) tend to wipe out these gains in only one or two chip generations.[52] High initial cost, and the tendency to be overtaken by Moore's-law-driven general-purpose computing, has rendered ASICs unfeasible for most parallel computing applications. However, some have been built. One example is the PFLOPS RIKEN MDGRAPE-3 machine which uses custom ASICs for molecular dynamics simulation.


Vector processors Edit

Main article: Vector processor


The Cray-1 is a vector processor

A vector processor is a CPU or computer system that can execute the same instruction on large sets of data. Vector processors have high-level operations that work on linear arrays of numbers or vectors. An example vector operation is A = B × C, where A, B, and C are each 64-element vectors of 64-bit floating-point numbers.[58] They are closely related to Flynn's SIMD classification.[58]


Cray computers became famous for their vector-processing computers in the 1970s and 1980s. However, vector processors—both as CPUs and as full computer systems—have generally disappeared. Modern processor instruction sets do include some vector processing instructions, such as with Freescale Semiconductor's AltiVec and Intel's Streaming SIMD Extensions (SSE).


Software Edit

Parallel programming languages Edit

Main article: List of concurrent and parallel programming languages

Concurrent programming languages, libraries, APIs, and parallel programming models (such as algorithmic skeletons) have been created for programming parallel computers. These can generally be divided into classes based on the assumptions they make about the underlying memory architecture—shared memory, distributed memory, or shared distributed memory. Shared memory programming languages communicate by manipulating shared memory variables. Distributed memory uses message passing. POSIX Threads and OpenMP are two of the most widely used shared memory APIs, whereas Message Passing Interface (MPI) is the most widely used message-passing system API.[59] One concept used in programming parallel programs is the future concept, where one part of a program promises to deliver a required datum to another part of a program at some future time.


CAPS entreprise and Pathscale are also coordinating their effort to make hybrid multi-core parallel programming (HMPP) directives an open standard called OpenHMPP. The OpenHMPP directive-based programming model offers a syntax to efficiently offload computations on hardware accelerators and to optimize data movement to/from the hardware memory. OpenHMPP directives describe remote procedure call (RPC) on an accelerator device (e.g. GPU) or more generally a set of cores. The directives annotate C or Fortran codes to describe two sets of functionalities: the offloading of procedures (denoted codelets) onto a remote device and the optimization of data transfers between the CPU main memory and the accelerator memory.


The rise of consumer GPUs has led to support for compute kernels, either in graphics APIs (referred to as compute shaders), in dedicated APIs (such as OpenCL), or in other language extensions.


Automatic parallelization Edit

Main article: Automatic parallelization

Automatic parallelization of a sequential program by a compiler is the "holy grail" of parallel computing, especially with the aforementioned limit of processor frequency. Despite decades of work by compiler researchers, automatic parallelization has had only limited success.[60]


Mainstream parallel programming languages remain either explicitly parallel or (at best) partially implicit, in which a programmer gives the compiler directives for parallelization. A few fully implicit parallel programming languages exist—SISAL, Parallel Haskell, SequenceL, System C (for FPGAs), Mitrion-C, VHDL, and Verilog.


Application checkpointing Edit

Main article: Application checkpointing

As a computer system grows in complexity, the mean time between failures usually decreases. Application checkpointing is a technique whereby the computer system takes a "snapshot" of the application—a record of all current resource allocations and variable states, akin to a core dump—; this information can be used to restore the program if the computer should fail. Application checkpointing means that the program has to restart from only its last checkpoint rather than the beginning. While checkpointing provides benefits in a variety of situations, it is especially useful in highly parallel systems with a large number of processors used in high performance computing.[61]

Prosedur Dan kinerja komputasi

 Kinerja Komputasi dengan Parallel Processing

Komputasi paralel adalah salah satu teknik melakukan komputasi secara bersamaan dengan memanfaatkan beberapa komputer secara bersamaan. Biasanyadiperlukan saat kapasitas yang diperlukan sangat besar, baik karena harus mengolah data dalam jumlah besar ataupun karena tuntutan proses komputasi yang banyak. 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.Penggunaan komputasi parallel prosessing merupakan pilihan yang cukup handal untuk saat ini untuk pengolahan data yang besar dan banyak, hal ini apabila dibandingkan dengan membeli suatu super komputer yang harganya sangat mahal maka penggunaan komputasi parallel prosessing merupakan pilihan yang sangat tepat untuk pengolahan data tersebut.

Tujuan utama dari pemrograman paralel adalah untuk meningkatkan performa komputasi. Semakin banyak hal yang bisa dilakukan secara bersamaan (dalam waktu yang sama), semakin banyak pekerjaan yang bisa diselesaikan. Pemrosesan paralel (parallel processing) adalah penggunakan lebih dari satu CPU untuk menjalankan sebuah program secara simultan.


Kinerja Parallel komputasi digunakan untuk melakukan perhitungan komputasi dengan menggunakan 2 atau lebih CPU/Processor dalam suatu komputer yang sama atau komputer yang berbeda dimana dalam hal ini setiap instruksi dibagi kedalam beberapa instruksi kemudian dikirim ke processor yang terlibat komputasi dan dilakukan secara bersamaan. Untuk proses pembagian proses komputasi tersebutdilakukan oleh suatu software yang betugas untuk mengatur komputasi.


Komputasi paralel membutuhkan:

algoritma

bahasa pemrograman

compiler

Sebagai besar komputer hanya mempunyai satu CPU, namun ada yang mempunyai lebih darisatu. Bahkan juga ada komputer dengan ribuan CPU. Komputer dengan satu CPU dapatmelakukan parallel processing dengan menghubungkannya dengan komputer lain pada jaringan. Namun, parallel processing ini memerlukan software canggih yang disebut distributed processing software.Parallel processing berbeda dengan multitasking, yaitu satu CPU mengeksekusi beberapa program sekaligus. Parallel processing disebut juga parallel computing.


Contoh struktur pengiriman permintaan dan jawaban dari parallel processing

Aristektur Komputer Parallel

Taksonomi Flynndan model pemrosesan parallel


Keempat kelompok komputer tersebut adalah :

1. Komputer SISD (Single Instruction stream-Single Data stream)

Pada komputer jenis ini semua instruksi dikerjakan terurut satu demi satu, tetapi jugadimungkinkan adanya

overlapping

dalam eksekusi setiap bagian instruksi ( pipelining ). Pada umumnya komputer SISD berupa komputer yang terdiri atas satu buah pemroses ( single processor ). Namun komputer SISD juga mungkin memiliki lebih dari satu unit fungsional(modul memori, unit pemroses, dan lain-lain), selama seluruh unit fungsional tersebut beradadalam kendali sebuah unit pengendali. Skema arsitektur global komputer SISD dapat dilihat padagambar .1 (a).

2. Komputer SIMD (Single Instruction stream-Multiple Data stream)

Pada komputer SIMD terdapat lebih dari satu elemen pemrosesan yang dikendalikan oleh sebuahunit pengendali yang sama. Seluruh elemen pemrosesan menerima dan menjalankan instruksiyang sama yang dikirimkan unit pengendali, namun melakukan operasi terhadap himpunan datayang berbeda yang berasal dari aliran data yang berbeda pula. Skema arsitektur global komputer SIMD dapat dilihat pada gambar .1 (b).

 3. Komputer MISD (Multiple Instruction stream-Single Data stream)

Komputer jenis ini memiliki n unit pemroses yang masing-masing menerima danmengoperasikan instruksi yang berbeda terhadap aliran data yang sama, dikarenakan setiap unit pemroses memiliki unit pengendali yang berbeda. Keluaran dari satu pemroses menjadi masukan bagi pemroses berikutnya. Belum ada perwujudan nyata dari komputer jenis ini kecuali dalam bentuk prototipe untuk penelitian. Skema arsitektur global komputer MISD dapat dilihat padagambar .1 (c).

4. Komputer MIMD (Multiple Instruction stream-Multiple Data stream)

Pada sistem komputer MIMD murni terdapat interaksi di antara n pemroses. Hal ini disebabkanseluruh aliran dari dan ke memori berasal dari space data yang sama bagi semua pemroses.Komputer MIMD bersifat tightly coupled jika tingkat interaksi antara pemroses tinggi dandisebut loosely coupled jika tingkat interaksi antara pemroses rendah.


Paralel prosessing komputasi adalah proses atau pekerjaan komputasi di komputer denganmemakai suatu bahasa pemrograman yang dijalankan secara paralel pada saat bersamaan. Secara umum komputasi paralel diperlukan untuk meningkatkan kecepatan komputasi biladibandingkan dengan pemakaian komputasi pada komputer tunggal.

Berikut ini adalah gambar perbedaan antara komputasi tunggal dengan parallel komputasi :


a)Komputasi Tunggal / serial


Realisasi dan dampak komputasi modern

 Komputasi sebetulnya bisa diartikan sebagai cara untuk menemukan pemecahan masalah dari data input dengan menggunakan suatu algoritma. Hal ini ialah apa yang disebut dengan teori komputasi, suatu sub-bidang dari ilmu komputer dan matematika. Selama ribuan tahun, perhitungan dan komputasi umumnya dilakukan dengan menggunakan pena dan kertas, atau kapur dan batu tulis, atau dikerjakan secara mental, kadang-kadang dengan bantuan suatu tabel. Namun sekarang, kebanyakan komputasi telah dilakukan dengan menggunakan komputer.

Secara umum iIlmu 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 (sains). Dalam penggunaan praktis, biasanya berupa 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.

Bidang ini berbeda dengan ilmu komputer (computer science), yang mengkaji komputasi, komputer dan pemrosesan informasi. Bidang ini juga berbeda dengan teori dan percobaan sebagai bentuk tradisional dari ilmu dan kerja keilmuan. Dalam ilmu alam, pendekatan ilmu komputasi dapat memberikan berbagai pemahaman baru, melalui penerapan model-model matematika dalam program komputer berdasarkan landasan teori yang telah berkembang, untuk menyelesaikan masalah-masalah nyata dalam ilmu tersebut.


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. Konsep ini pertama kali digagasi oleh John Von Neumann (1903-1957). Dalam kerjanya komputasi modern menghitung dan mencari solusi dari masalah yang ada, dan perhitungan yang dilakukan itu meliputi:

1. Akurasi (bit, Floating poin)

2. Kecepatan (Dalam satuan Hz)

3. Problem volume besar (Down sizing atau paralel)

4. Modeling (NN dan GA)

5. Kompleksitas (Menggunakan teori Big O).

Karakteristik Komputasi Modern

Karakteristik komputasi modern ada 3 macam, yaitu :

1. Komputer-komputer penyedia sumber daya bersifat heterogenous karena terdiri dari berbagai jenis perangkat keras, sistem operasi, serta aplikasi yang terpasang.

2. Komputer-komputer terhubung ke jarinagn yang luas dengan kapasitas bandwidth yang beragam.

3. Komputer maupun jaringan tidak terdedikasi, bisa hidup atau mati sewaktu-waktu tanpa jadwal yang jelas.

Sejarah Komputasi Modern

Secara historis, komputer panitera manusia yang dihitung sesuai dengan metode yang efektif. Komputer ini manusia melakukan berbagai perhitungan saat ini dilakukan oleh komputer elektronik, dan ribuan dari mereka yang bekerja dalam perdagangan, pemerintahan, dan lembaga penelitian. Istilah mesin komputasi , digunakan semakin dari tahun 1920, mengacu pada setiap mesin yang melakukan pekerjaan komputer manusia, yaitu, setiap mesin yang menghitung sesuai dengan metode yang efektif. Selama akhir 1940-an dan awal 1950-an, dengan munculnya mesin komputasi elektronik, mesin ‘kalimat’ komputasi secara bertahap memberi jalan hanya untuk ‘komputer’, awalnya biasanya dengan elektronik ‘awalan’ atau ‘digital’.

Macam-macam Komputasi Modern

Macam-macam 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 :

1. Mobile computing

Mobile computing atau komputasi bergerak memiliki beberapa penjelasan, salah satunya komputasi bergerak merupakan kemajuan teknologi komputer sehingga dapat berkomunikasi menggunakan jaringan tanpa menggunakan kabel dan mudah dibawa atau berpindah tempat, tetapi berbeda dengan komputasi nirkabel.

Dan berdasarkan penjelasan tersebut, untuk kemajuan teknologi ke arah yang lebih dinamis membutuhkan perubahan dari sisi manusia maupun alat. Dan dapat dilihat contoh dari perangkat komputasi bergerak seperti GPS, juga tipe dari komputasi bergerak seperti smart phone, dan lain sebagainya.

2. Grid computing

Komputasi grid menggunakan komputer yang terpisah oleh geografis, didistibusikan dan terhubung oleh jaringan untuk menyelasaikan masalah komputasi skala besar.

Ada beberapa daftar yang dapat dugunakan untuk mengenali sistem komputasi grid, adalah :

Sistem untuk koordinat sumber daya komputasi tidak dibawah kendali pusat.

Sistem menggunakan standard dan protocol yang terbuka.

Sistem mencoba mencapai kualitas pelayanan yang canggih, yang lebih baik diatas kualitas komponen individu pelayanan komputasi grid.

3. Cloud computing

Komputasi cloud merupakan gaya komputasi yang terukur dinamis dan sumber daya virtual yang sering menyediakan layanan melalui internet.

Komputasi cloud menggambarkan pelengkap baru, konsumsi dan layanan IT berbasis model dalam internet, dan biasanya melibatkan ketentuan dari keterukuran dinamis dan sumber daya virtual yang sering menyediakan layanan melalui internet.

Adapun perbedaan antara komputasi mobile, komputasi grid dan komputasi cloud, dapat dilihat penjelasannya dibawah ini :

Komputasi mobile menggunakan teknologi komputer yang bekerja seperti handphone, sedangkan komputasi grid dan cloud menggunakan komputer.

Biaya untuk tenaga komputasi mobile lebih mahal dibandingkan dengan komputasi grid dan cloud.

Komputasi mobile tidak membutuhkan tempat dan mudah dibawa kemana-mana, sedangkan grid dan cloud membutuhkan tempat yang khusus.

Untuk komputasi mobile proses tergantung si pengguna, komputasi grid proses tergantung pengguna mendapatkan server atau tidak, dan komputasi cloud prosesnya membutuhkan jaringan internet sebagai penghubungnya.

Dan ada juga persamaan antara komputasi mobile, komputasi grid, dan komputasi cloud, penjelasanya sebagai berikut :

Ketiganya merupakan metode untuk melakukan komputasi, pemecahan masalah, dan pencarian solusi.

Ketiganya memerlukan alat proses data yang modern seperti komputer, laptop atau telepon genggam untuk menjalankannya.

Dampak Adanya Komputasi Modern

Dampak dari adanya komputasi modern adalah dapat membantu manusia untuk menyelesaikan masalah-masalah yang kompleks dengan menggunakan komputer. Salah satu contohnya adalah biometric. Biometric berasal dari kata Bio dan Metric. Kata bio diambil dari bahasa yunani kuno yang berarti Hidup sedangkan Metric juga berasal dari bahasa yunani kuno yang berarti ukuran, jadi jika disimpulkan biometric berarti pengukuran hidup.

Tapi secara garis besar biometric merupakan pengukuran dari statistic analisa data biologi yang mengacu pada teknologi untuk menganalisa karakteristik suatu tubuh (individu). Dari penjelasan tersebut sudah jelas bahwa Biometric menggambarkan pendeteksian dan pengklasifikasian dari atribut fisik. Terdapat banyak teknik biometric yang berbeda, diantaranya :

Pembacaan sidik jari / telapak tangan

Geometri tangan

Pembacaan retina / iris

Pengenalan suara

Dinamika tanda tangan.

Dan menurut Don Tapscott (1995) dalam bukunya yang berjudul “The Digital Economy : Promise and Peril In The Age of Networked Intelligence” menggambarkan bagaimana dampak teknologi komputasi pada kehidupan manusia. Aplikasi teknologi kurang sempurna tanpa dukungan mesin pintar yang berkemampuan analitik. Kehadiran teknologi komputasi yang semakin canggih telah merubah gaya hidup manusia dan tuntutan pada kompetensi manusia. Kini kehidupan manusia semakin tergantung pada komputer. Berikut ini hal-hal yang menggambarkan konsep kepintaran komputasi yang didukung dengan aplikasi teknologi.

1. Produk yang digerakkan sistem komputer

a. Smart car (mobil pintar)

b. Smart card (kartu pintar)

c. Smart house (rumah pintar)

d. Smart road (jalan pintar)

2. Perancangan produk dikelola oleh komputer

3. Proses kerja yang digerakkan oleh komputer

4. Komputer menjadi sarana komunikasi yang efektif

5. Komputer sebagai pusat informasi

Di samping berdampak struktural pada peri kehidupan manusia, teknologi juga membangkitkan proses kultural dalam masyarakat yang diterpanya. Inilah gejala yang oleh N. Postman disebut technopoly, yang olehnya digambarkan sebagai berikut :

“Technopoly is a state of culture. It is also a state of mind. It consist in the deification of technology, which means that the culture seeks it’s satisfactions in technology, and takes it’s orders from technology”

Maka, yang menjadi masalah ialah sejauh mana suatu masyarakat siap memasuki zaman yang ditandai oleh supremasi teknologi sebagai daya pembangkit budaya baru tanpa merapuhkan ketahanan budayanya sendiri. Dengan demikian, maka tidak keliru pula untuk menyatakan bahwa dominasi teknologi akan berlanjut dengan berseminya budaya baru yang melahirkan berbagai nilai baru pula yang cenderung menjadi acuan perilaku manusia modern dalam berbagai pola interaksi dengan sesamanya.

Arsitektur memori pada komputer paralel

 Arsitektur Komputasi Paralel

 


Taksonomi Flynn membagi arsitektur komputer paralel dengan menggunakan sudut pandang instruksi dan data, sehingga terdapat empat jenis arsitektur komputer paralel :


SISD (Single Instruction, Single Data) : arsitektur ini adalah arsitektur yang mewakili komputer serial, di mana hanya ada satu prosesor dan satu aliran masukan data (memori) sehingga hanya ada satu task yang dapat dieksekusi pada suatu waktu. Arsitektur von Neumann termasuk dalam jenis ini

SIMD (Single Instruction, Multiple Data) : pada arsitektur ini, eksekusi sebuah instruksi akan dilakukan secara bersamaan oleh beberapa prosesor, di mana suatu prosesor dapat menggunakan data yang berbeda dengan prosesor lain. Karakteristik lain dari arsitektur ini adalah alur eksekusi instruksi yang deterministik (state dari instruksi dan data pada suatu waktu dapat dengan mudah diketahui). Arsitektur ini cocok untuk program yang dapat dibagi menjadi task-task yang mempunyai derajat keteraturan yang tinggi, misalnya sistem pengolah grafik

MISD (Multiple Instruction, Single Data) : pada arsitektur ini, berbagai instruksi akan dieksekusi secara bersamaan oleh beberapa prosesor dengan menggunakan data yang sama. Arsitektur ini kurang populer karena hanya sedikit permasalahan yang membutuhkan solusi dengan menggunakan karakteristik arsitektur ini. Contoh permasalahan yang mungkin membutuhkan arsitektur ini antara lain adalah multiple frequency filter dan program pemecah sandi yang menggunakan beberapa algoritma kriptografi sekaligus

MIMD (Multiple Instruction, Multiple Data) : pada arsitektur ini, berbagai instruksi dapat dieksekusi oleh beberapa prosesor di mana masing-masing prosesor dapat menggunakan data yang berbeda. Eksekusi instruksi pada arsitektur ini dapat dilakukan secara sinkron (pada suatu rentang waktu, jumlah instruksi yang dieksekusi oleh semua prosesor adalah sama) maupun asinkron, deterministik maupun non-deterministik. Selain itu, arsitektur ini dapat melakukan pekerjaan sesuai dengan karakteristik dari ketiga asitektur sebelumnya.

 


Arsitektur Memori pada Komputasi Paralel

 


Pada umumnya, ada dua buah arsitektur memori pada komputer paralel, yaitu shared memory dan distributed memory


Shared memory : arsitektur ini menyediakan global addressing sehingga berbagai prosesor mempunyai cara pengaksesan memori yang seragam. Setiap perubahan pada suatu lokasi memori oleh suatu prosesor akan selalu terlihat oleh prosesor lain. Kelebihan dari arsitektur ini antara lain adalah pengaksesan memori yang user friendly dan performansi yang baik dalam penggunaan data bersama antar task. Sedangkan kekurangannya antara lain adalah kurangnya skalabilitas ketika terjadi penambahan prosesor, di mana akan terjadi peningkatan traffic antara prosesor ke shared memory dan antara cache coherent system dengan memori sebenarnya.

Berdasarkan frekuensi akses, ada dua jenis shared memory :Uniform Memory Access (UMA) : setiap prosesor memiliki hak pengaksesan yang seragam dengan prosesor lain

Non Uniform Memory Access (NUMA) : tidak semua prosesor memiliki hak yang sama dalam mengakses memori

Distributed memory : arsitektur ini mempunyai karakteristik di mana setiap prosesor memiliki memorinya masing-masing, sehingga eksekusi instruksi dapat berjalan secara independen antara satu prosesor dengan yang lain. Prosesor akan menggunakan jaringan ketika membutuhkan akses ke memori non lokal. Akses ini sepenuhnya menjadi tanggung jawab penulis program. Kelebihan dari arsitektur ini adalah terjaganya skalabilitas ketika terjadi penambahan prosesor. Sedangkan kekurangannya adalah penulis program harus berurusan dengan detail komunikasi data antara prosesor dan memori non lokal.

 

Tujuan dan hambatan komputasi paralel

 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.


Di dalam komputasi parallel ada yang dinamakan dengan pemrograman parallel. Pemrograman paralel adalah teknik pemrograman komputer yang memungkinkan eksekusi perintah atau operasi secara bersamaan (komputasi paralel), baik dalam komputer dengan satu(prosesor tunggal) ataupun banyak (prosesor ganda dengan mesin paralel) CPU. Bila komputer yang digunakan secara bersamaan tersebut dilakukan oleh komputer-komputer terpisah yang terhubung dalam suatu jaringan komputer lebih sering istilah yang digunakanadalah sistem terdistribusi (distributed computing).


Perlu diingat adalah komputasi paralel berbeda dengan multitasking. Pengertian multitasking adalah komputer dengan processor tunggal mengeksekusi beberapa tugas secara bersamaan. Walaupun beberapa orang yang bergelut di bidang sistem operasi beranggapan bahwa komputer tunggal tidak bisa melakukan beberapa pekerjaan sekaligus, melainkan proses penjadwalan yang berlakukan pada sistem operasi membuat komputer seperti mengerjakan tugas secara bersamaan. Sedangkan komputasi paralel sudah dijelaskan sebelumnya, bahwa komputasi paralel menggunakan beberapa processor atau komputer.Selain itu komputasi paralel tidak menggunakan arsitektur Von Neumann.


 


Tujuan Komputasi Paralel

 


Tujuan utama penggunaan komputasi paralel adalah untuk mempersingkat waktu eksekusi program yang menggunakan komputasi serial. Beberapa alasan lain yang menjadikan suatu program menggunakan komputasi paralel antara lain :


Untuk permasalahan yang besar, terkadang sumber daya komputasi yang ada sekarang belum cukup mampu untuk mendukung penyelesaian terhadap permasalahan tersebut

Adanya sumber daya non-lokal yang dapat digunakan melalui jaringan atau internet

Penghematan biaya pengadaan perangkat keras, dengan menggunakan beberapa mesin yang murah sebagai alternatif penggunaan satu mesin yang bagus tapi mahal, walaupun menggunakan n buah prosesor

Adanya keterbatasan kapasitas memori pada mesin untuk komputasi serial.

 


Hambatan Komputasi Paralel

 


Penggunaan komputasi paralel sebagai solusi untuk mempersingkat waktu yang dibutuhkan untuk eksekusi program mempunyai beberapa hambatan. Hambatan-hambatan tersebut antara lain adalah :


Hukum Amdahl : percepatan waktu eksekusi program dengan menggunakan komputasi paralel tidak akan pernah mencapai kesempurnaan karena selalu ada bagian program yang harus dieksekusi secara serial.

Hambatan yang diakibatkan karena beban jaringan : dalam eksekusi program secara paralel, prosesor yang berada di mesin yang berbeda memerlukan pengiriman dan penerimaan data (atau instruksi) melalui jaringan. Untuk program yang dibagi menjadi task-task yang sering membutuhkan sinkronisasi, network latency menjadi masalah utama. Permasalahan ini muncul karena ketika suatu task membutuhkan data dari task yang lain, state ini dikirimkan melalui jaringan di mana kecepatan transfer data kurang dari kecepatan prosesor yang mengeksekusi instruksi task Hal ini menyebabkan task tersebut harus menunggu sampai data sampai terlebih dahulu, sebelum mengeksekusi instruksi selanjutnya. Jumlah waktu yang dibutuhkan untuk berkomunikasi melalui jaringan antar dua titik adalah jumlah dari startup time, per-hop time, dan per-word transfer time.

Hambatan yang terkait dengan beban waktu untuk inisiasi task, terminasi task, dan sinkronisasi.