algoritma shuffle exchange (simd perfect shuffle) menggunakan bahasa c dengan compiler gcc pada...
DESCRIPTION
Algoritma Shuffle Exchange (SIMD Perfect Shuffle) Menggunakan Bahasa C dengan Compiler GCC pada Sistem Operasi Linux Ubuntu 12.04TRANSCRIPT
Algoritma Shuffle Exchange (SIMD Perfect Shuffle)Menggunakan Bahasa C dengan Compiler GCC
pada Sistem Operasi Linux Ubuntu 12.04
Disusun oleh
1. Pebi Yudha K. 2A1112782. Suratmin 2A1131463. Anggun Hariawan 2A113068
Kelas 4KB02 (Mahasiswa Transfer)
Fakultas Ilmu Komputer dan Teknologi Informasi
UNIVERSITAS GUNADARMA
Kode Program Selengkapnya: shuffle-exchange.c
/******************************************************************************* * * * Algoritma Shuffle Exchange * * Hak Cipta (C) Pebi Yudha K. - 2013 * * * * UNIVERSITAS GUNADARMA * * * ******************************************************************************/
#include <math.h>#include <stdio.h>#include <stdlib.h>#include <time.h>
typedef unsigned short int USHORT;
void shuffle(USHORT banyak_prosesor, int *prosesor, int *dummy);void exchange(USHORT banyak_prosesor, int *prosesor, int *dummy);
int main(void){
USHORT n_prosesor, indeks;float log_n;clock_t t;int prosesor[256], dummy_prosesor[256];
for (;;){
printf("\nTentukan banyak prosesor (integer maks. 256) : ");scanf("%hu", &n_prosesor);
if ((n_prosesor > 0) && (n_prosesor <= 256)) break;}
printf("\nMasukan data untuk setiap prosesor\n");
for (indeks = 0; indeks < n_prosesor; indeks++){
printf("Data untuk prosesor %d: ", indeks + 1);scanf("%d", &prosesor[indeks]);
}
printf("\nData di setiap prosesor\n");
for (indeks = 0; indeks < n_prosesor; indeks++)printf("%d\t", prosesor[indeks]);
log_n = log10(n_prosesor) / log10(2);
for (indeks = 1; indeks <= log_n; indeks++){
printf("\nIterasi ke-%d\n", indeks);t = clock();
shuffle(n_prosesor, prosesor, dummy_prosesor);
exchange(n_prosesor, prosesor, dummy_prosesor);
t = clock() - t;printf("\nWaktu proses %f s\n", ((double) t) / CLOCKS_PER_SEC);
}
printf("\n");return EXIT_SUCCESS;
}
void shuffle(USHORT banyak_prosesor, int *prosesor, int *dummy){
USHORT indeks, j, tengah;
tengah = (banyak_prosesor / 2) - 1;
for (indeks = 0; indeks < banyak_prosesor; indeks++){
if ((indeks >= 0) && (indeks <= tengah))j = 2 * indeks;
elsej = (2 * indeks) + 1 - banyak_prosesor;
dummy[indeks] = prosesor[j];}
for (indeks = 0; indeks < banyak_prosesor; indeks++){
prosesor[indeks] = dummy[indeks];printf("%d\t", dummy[indeks]);
}
return;}
void exchange(USHORT banyak_prosesor, int *prosesor, int *dummy){
USHORT indeks;int temp;
printf("\n");
for (indeks = 0; indeks < banyak_prosesor; (indeks += 2)){
dummy[indeks] = prosesor[indeks + 1];dummy[indeks + 1] = prosesor[indeks];
}
for (indeks = 0; indeks < banyak_prosesor; indeks++)printf("%d\t", dummy[indeks]);
printf("\n");
for (indeks = 0; indeks < banyak_prosesor; indeks++){
prosesor[indeks] += dummy[indeks];printf("%d\t", prosesor[indeks]);
}
return;}
Tampilan Input/Output dengan Input 16 Prosesor