Traffine I/O

Bahasa Indonesia

2022-10-23

CPU dan GPU

Apa itu CPU

CPU (Central Processing Unit) seperti otak komputer, memproses perangkat lunak dan perangkat keras seperti mouse dan keyboard untuk membuatnya bekerja seperti yang diharapkan. CPU memiliki komponen standar berikut ini

  • Unit Komputasi
    Melakukan operasi aritmatika dan logika pada data yang disimpan dalam memori utama.
  • Unit kontrol
    Membaca program yang tersimpan dalam memori utama dan mengeksekusi berbagai proses dengan mendekode instruksi dengan decoder.
  • Jam
    Indikator kecepatan sinyal yang dipancarkan oleh CPU saat memproses
  • Register
    Area memori penyimpanan di dalam CPU

Komponen-komponen ini bekerja sama untuk menciptakan lingkungan yang memungkinkan pemrosesan paralel tugas berkecepatan tinggi: saat clock CPU digerakkan, CPU beralih di antara ratusan tugas yang berbeda per detik dengan kecepatan tinggi. Hal ini memungkinkan operasi simultan seperti menampilkan desktop atau menghubungkan ke Internet.

CPU juga memiliki konsep "core". Saat ini, karena kecepatan clock mencapai batasnya, CPU yang disebutkan di atas disebut sebagai "core", dan telah menjadi arus utama untuk memiliki banyak core untuk melakukan banyak proses secara paralel. Beberapa core seperti memiliki beberapa CPU yang dibangun ke dalam satu CPU.

Apa itu GPU

GPU (Graphics Processing Unit) adalah prosesor khusus dengan daya komputasi matematika yang ditingkatkan, cocok untuk tugas-tugas seperti grafik komputer dan pembelajaran mesin. Misalnya, penggambaran gambar membutuhkan matematika yang kompleks untuk dirender dan komputasi paralel agar matematika kompleks tersebut bekerja dengan benar. CPU tidak dibuat untuk menangani beban tersebut. GPU, seperti CPU, memiliki core dan memori, tetapi GPU mengkhususkan diri dalam pemrosesan data paralel dengan banyak core dan digunakan dalam domain grafis. GPU juga memiliki kinerja pemrosesan paralel yang lebih baik daripada CPU dan lebih baik dalam operasi matriks, itulah sebabnya GPU sering digunakan dalam domain pembelajaran mendalam.

Perbedaan antara CPU dan GPU

Berikut ini adalah perbedaan antara CPU dan GPU dalam hal jumlah core dan bidang keahlian.

CPU GPU
Jumlah core Beberapa Ribuan
Bidang keahlian Pemrosesan komputasi yang berurutan dan kompleks Pemrosesan paralel

Jumlah core

Core adalah tempat pemrosesan komputasi komputer berlangsung, dan semakin banyak core, semakin besar jumlah pemrosesan yang dapat dilakukan sekaligus.

Bidang keahlian

CPU bagus dalam memproses tugas-tugas yang berkelanjutan dan kompleks. Misalnya, CPU pandai melakukan operasi berdasarkan instruksi program dan menjalankan instruksi tersebut sambil mengendalikan memori, layar, mouse, keyboard, dll. CPU bagus dalam memproses tugas-tugas yang berurutan dan kompleks. Instruksi tersebut harus diproses secara berurutan, dan lebih banyak core tidak selalu berarti pemrosesan yang lebih cepat. Sebaliknya, GPU bagus dalam memproses tugas-tugas sederhana. Misalnya, pemrosesan gambar seperti grafik 3D membutuhkan sejumlah besar perhitungan sederhana, membuat GPU cocok untuk tugas ini.

Perbandingan Kinerja

Berikut ini adalah kode yang dipelajari oleh neural network untuk 1563 gambar. Kita akan menjalankan kode ini pada CPU dan GPU di lingkungan Google Colab dan membandingkan kinerjanya.

import numpy as np
import matplotlib.pyplot as plt
import keras
from keras.datasets import cifar10
from keras.models import Sequential
from keras.layers import Dense, Dropout, Activation, Flatten
from keras.layers import Conv2D, MaxPooling2D
from keras.optimizers import Adam

(x_train, t_train), (x_test, t_test) = cifar10.load_data()

batch_size = 32
epochs = 1
n_class = 10

t_train = keras.utils.to_categorical(t_train, n_class)
t_test = keras.utils.to_categorical(t_test, n_class)

model = Sequential()

model.add(Conv2D(32, (3, 3), padding='same', input_shape=x_train.shape[1:]))
model.add(Activation('relu'))
model.add(Conv2D(32, (3, 3)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))

model.add(Conv2D(64, (3, 3), padding='same'))
model.add(Activation('relu'))
model.add(Conv2D(64, (3, 3)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))

model.add(Flatten())
model.add(Dense(256))
model.add(Activation('relu'))
model.add(Dropout(0.5))
model.add(Dense(n_class))
model.add(Activation('softmax'))

model.compile(optimizer=Adam(), loss='categorical_crossentropy', metrics=['accuracy'])

x_train = x_train / 255
x_test = x_test / 255

model.fit(x_train, t_train, epochs=epochs, batch_size=batch_size, validation_data=(x_test, t_test))

Langkah pertama adalah menjalankannya pada CPU, yang menghasilkan hasil 255 detik.

1563/1563 [==============================] - 255s 163ms/step - loss: 1.4949 - accuracy: 0.4569 - val_loss: 1.0942 - val_accuracy: 0.6151

Selanjutnya, kita menjalankannya di GPU. Hasilnya adalah 9 detik.

1563/1563 [==============================] - 9s 5ms/step - loss: 1.5829 - accuracy: 0.4223 - val_loss: 1.2229 - val_accuracy: 0.5606

Dengan demikian, pilihan GPU dapat sangat mengurangi waktu pembelajaran.

Referensi

https://www.weka.io/blog/cpu-vs-gpu/

Ryusei Kakujo

researchgatelinkedingithub

Focusing on data science for mobility

Bench Press 100kg!