- vừa được xem lúc

[Lập trình song song] Bài 1: Giới thiệu về CPU-GPU

0 0 28

Người đăng: CisMine

Theo Viblo Asia

Trước khi tìm hiểu thế nào là lập trình song song cũng như cách code thì mình phải biết 1 chút về lịch sử hình thành nên ở bài 1 mình sẽ giới thiệu sơ lược những điều bạn nên biết ở lĩnh vực này.

Những điều bạn nên biết về CPU-GPU

Chắc chắn ở đây phần lớn các bạn đều quen thuộc với 2 từ CPUGPU, nhưng sẽ có 1 số ít thì không, nên mình sẽ đi nhanh qua 2 khái niệm này và lịch sử của chúng.

CPU là gì?

CPU(Central Processing Units) là bộ xử lý trung tâm của máy tính hay có thể nói là "não bộ" của máy tính. Và bộ não này có thể thực hiện các phép tính liên quan đến số học, đo lường, so sánh, logic, đồng thời nhập hoặc xuất dữ liệu từ các mã lệnh trên máy tính.

Làm thế nào để đánh giá đó 1 là con CPU chất lượng? chúng ta phần lớn sẽ dựa vào 2 thông số:

  • Clock speed - Tốc độ xung nhịp(cũng là "xung nhịp" hoặc "tần số") có thể hiểu đơn giản là tốc độ hoạt động của CPU, tốc độ càng nhanh thì CPU chạy càng lẹ
  • Cores - số lượng nhân(số lượng các đơn vị xử lý độc lập trong CPU).

Sự phát triển và các trở ngại

biểu đồ mô tả sự biến đổi tần số CPU theo thời gian

image.png

biểu đồ mô tả sự biến đổi công suất CPU theo thời gian

Qua 2 biểu đồ ta có thể thấy sự phát triển nhanh chóng của CPU qua từng giai đoạn nhưng vào giữa năm 2004-2005 đã có sự thụt lùi vậy thì nguyên nhân là gì?

Hai vấn đề chính mà CPU đối mặt vào thời điểm đó là "Power wall" và "Memory wall".

  • Để giải thích 1 cách đơn giản, việc tăng công suất có nghĩa là xử lý nhanh hơn từ các CPU mạnh hơn. Tuy nhiên, CPU mạnh hơn có thể yêu cầu điện áp cao hơn để duy trì tính ổn định ở tốc độ như vậy, do đó không thể tăng tốc độ xung nhịp của bộ xử lý hoài được.

  • Vấn đề thứ hai là độ trễ(latency) khi truy cập bộ nhớ. Nếu máy tính có CPU mạnh nhưng truy cập bộ nhớ kém, nó sẽ mất thời gian lớn, đó là lý do tại sao hiệu suất của nhiều công việc được xác định bởi thời gian truy cập bộ nhớ.

Và từ đó thời kì song song bắt đầu diễn ra với ý tưởng đầu tiên là dual core và càng về sau ta có khái niệm GPU

GPU là gì?

GPU (Graphics Processing Unit) là các thành phần phần cứng chuyên biệt được thiết kế để tăng tốc xử lý đồ họa và các nhiệm vụ tính toán song song. Ban đầu, chúng được phát triển để sử dụng trong các trò chơi máy tính và ứng dụng đồ họa, nhưng hiện nay chúng cũng được sử dụng rộng rãi trong các ứng dụng khoa học và kỹ thuật. image.png

Những biểu đồ này minh họa rõ ràng sự tính toán nhanh hơn của GPU so với CPU.

Parallel processing

parallel processing tức là xử lý song song vậy thì ở đây chúng ta song song điều gì?

Giả sử một giáo viên giao cho một lớp học 10 câu hỏi để trả lời. Giải pháp đơn giản nhất là để học sinh giỏi nhất trong lớp hoàn thành tất cả 10 câu hỏi. Tuy nhiên, nếu chúng ta có thể tìm và đào tạo 9 học sinh còn lại để trở nên giỏi như học sinh giỏi nhất, chúng ta có thể tăng tốc quá trình trả lời câu hỏi lên 10 lần và đó chính là cách GPU hoạt động.

Tóm lại, việc tiết kiệm thời gian bằng cách chia nhỏ nhiệm vụ lớn thành những nhiệm vụ nhỏ hơn có thể được xử lý đồng thời là lợi ích tốt nhất của xử lý song song.

Tuy nhiên, có một số hạn chế khi chia nhỏ nhiệm vụ, ví dụ như khi giáo viên giao cho lớp N câu hỏi nhưng chúng ta không thể tìm được đủ N học sinh để chuẩn bị và hoàn thành các nhiệm vụ đó hoặc là các bài toán đều liên quan đến nhau, đáp án câu 1 là lời giải cho câu 2 chẳng hạn.

Tóm lại qua bài viết này bạn đã hiểu 1 số khái niệm về cpu-gpu và xin chúc mừng là bạn bắt đầu nhập môn vào lập trình song song trên gpu bằg cuda-C 😆😆

Tham khảo

1.http://www.edwardbosworth.com/My5155_Slides/Chapter01/ThePowerWall.htm

2.https://www.cs.princeton.edu/~dpw/courses/cos326-12/lec/15-parallel-intro.pdf

Bình luận

Bài viết tương tự

- vừa được xem lúc

GPU programming với Golang

GPU programming với Golang. Ở bài trước mình có giới thiệu về kĩ thuật lập trình GPU với OpenCL bằng C/C++.

0 0 27

- vừa được xem lúc

Allocating Memory on HPC ( Slurm Scripts)

Bài viết này giải thích cách yêu cầu bộ nhớ trong các Slurm Scripts và cách xử lý các lỗi thường gặp liên quan đến bộ nhớ CPU và GPU. Lưu ý rằng "memory" luôn đề cập đến RAM .

0 0 27

- vừa được xem lúc

[Lập trình song song] Bài 2: Cài đặt môi trường code CudaC

Trước khi code thì chúng ta phải setup môi trường để code thì ở bài này mình sẽ hướng dẫn các bạn cách setup và đối với những ai sở hữu máy tính mà không có GPU thì cũng đừng có lo vì chúng ta sẽ code

0 0 18

- vừa được xem lúc

[Lập trình song song] Bài bonus 1: Cách thức hoạt động của máy tính

Ở bài này mình sẽ nói qua về cách máy tính hoạt động trong việc lấy và xử lí data qua ví dụ cực kì trực quan và dễ hiểu . Và xin lưu ý là ví dụ này sẽ được nhắc lại khá nhiều trong các bài học về lập

0 0 19

- vừa được xem lúc

[Lập trình song song] Bài bonus 2: Các thuật ngữ trong lập trình song song

Ở bài này mình sẽ giải thích các thuật ngữ thường hay được đề cập tới trong lập trình song song. .

0 0 23

- vừa được xem lúc

[Lập trình song song] Bài 3: Hello world cuda-C

Ở các bài trước chúng ta đã học quá nhiều lý thuyết rùi, nên ở bài này chúng ta sẽ bắt đầu code những dòng đầu tiên bằng ngôn ngữ cuda-C và 1 lần nữa nếu máy tính các bạn không có GPU thì không sao cả

0 0 25