Selama ini, untuk bisa mengakes GPU umumnya menggunakan bahasa C/C++, namun saat ini bahasa pemrograman Python pun bisa langsung mengakses GPU lho. Namun kita butuh melakukan instalasi library numba terlebih dahulu seperti yang sudah saya jelaskan pada tulisan sebelumnya.

Nah, pada kesempatan kali ini saya akan mencontohkan program sederhana yang dilakukan oleh CPU dan GPU.
Selamat menyimak.

Program
#simple.py

import numpy as np
from timeit import default_timer as timer


def VectorAdd(a,b,c):
for i in range(a.size):
c[i] = a[i] + b[i]

def main():
N = 32000000

A = np.ones(N,dtype=np.float32)
B = np.ones(N,dtype=np.float32)
C = np.zeros(N,dtype=np.float32)

start = timer()
VectorAdd(A,B,C)
vectoradd_time = timer() - start

print("C[:5] = " + str(C[:5]))
print("C[-5:]= " + str(C[-5:]))


print("VectorAdd took %f seconds" % vectoradd_time)


if __name__ == '__main__':
main()


Hasil ketika kita jalankan



Berikutnya kita adakan melakukan modifikasi pada program tersebut.
Perhatikan penambahan berikut:
1. library numba dengan meng-import vectorize
2. Assignment kernel ke cuda
2. modifikasi fungsi VectorAdd menjadi hanya dua argumen VectorAdd(a,b)
3. pemanggilan fungsi VectorAdd menjado C = VectorAdd(a,b)

#simple_gpu.py

import numpy as np
from timeit import default_timer as timer
from numba import vectorize


@vectorize(["float32(float32,float32)"],target = 'cuda')
def VectorAdd(a,b):
        return a + b

def main():
        N = 32000000

        A = np.ones(N,dtype=np.float32)
        B = np.ones(N,dtype=np.float32)
        C = np.zeros(N,dtype=np.float32)

        start = timer()
        C = VectorAdd(A,B)
        vectoradd_time = timer() - start

        print("C[:5] = " + str(C[:5]))
        print("C[-5:]= " + str(C[-5:]))


        print("VectorAdd took %f seconds" % vectoradd_time)


if __name__ == '__main__':
        main()

 

Setelah kita jalankan, berikut adalah hasilnya:

Dapat kita lihat perbandingan waktu anatara CPU dan GPU. Dengan CPU penjumlahan vector membutuhkan waktu 8.26 detik, sementara dengan GPU hanya membutuhkan waktu 0.99 detik.

Melihat Profil

Kemudian jika kita hendak memastikan bahwa komputasi berjalan di GPU lakukan perintah berikut untuk melihat bagaimana profil dari GPU saat dijalankan..

 

Leave a Reply

Your email address will not be published. Required fields are marked *