Tại sao mọi người sử dụng GPU để tính toán hiệu năng cao thay vì chip chuyên dụng hơn?


105

Theo hiểu biết của tôi, mọi người bắt đầu sử dụng GPU cho điện toán nói chung vì chúng là một nguồn năng lượng tính toán bổ sung. Và mặc dù chúng không nhanh như CPU ​​cho mỗi hoạt động, chúng có nhiều lõi, vì vậy chúng có thể được điều chỉnh tốt hơn để xử lý song song so với CPU. Điều này có ý nghĩa nếu bạn đã sở hữu một máy tính có GPU để xử lý đồ họa, nhưng bạn không cần đồ họa và muốn có thêm sức mạnh tính toán. Nhưng tôi cũng hiểu rằng mọi người mua GPU đặc biệt để thêm sức mạnh tính toán, không có ý định sử dụng chúng để xử lý đồ họa. Đối với tôi, điều này có vẻ tương tự như sau:

Tôi cần phải cắt cỏ của tôi, nhưng máy cắt cỏ của tôi là wimpy. Vì vậy, tôi loại bỏ cái lồng ra khỏi cái quạt hộp tôi giữ trong phòng ngủ và mài lưỡi dao. Tôi dán băng keo vào máy cắt của mình và tôi thấy rằng nó hoạt động khá tốt. Nhiều năm sau, tôi là nhân viên thu mua cho một doanh nghiệp chăm sóc cỏ lớn. Tôi có một ngân sách khá lớn để chi cho các dụng cụ cắt cỏ. Thay vì mua máy cắt cỏ, tôi mua một loạt quạt hộp. Một lần nữa, chúng hoạt động tốt, nhưng tôi phải trả tiền cho các bộ phận phụ (như cái lồng) mà tôi sẽ không sử dụng. (vì mục đích tương tự này, chúng ta phải giả sử rằng máy cắt cỏ và quạt hộp có giá tương đương nhau)

Vậy tại sao không có thị trường cho chip hoặc thiết bị có sức mạnh xử lý của GPU, mà không phải là chi phí đồ họa? Tôi có thể nghĩ về một vài lời giải thích có thể. Mà trong số họ, nếu có, là chính xác?

  • Một giải pháp thay thế như vậy sẽ quá tốn kém để phát triển khi GPU đã là một lựa chọn tốt (máy cắt cỏ không tồn tại, tại sao không sử dụng quạt hộp hoàn toàn tốt này?).
  • Thực tế là 'G' là viết tắt của đồ họa chỉ biểu thị một mục đích sử dụng và không thực sự có nghĩa là bất kỳ nỗ lực nào giúp chip thích ứng tốt hơn với xử lý đồ họa hơn bất kỳ loại công việc nào khác (máy cắt cỏ và quạt hộp là điều tương tự khi bạn đi thẳng vào nó, không cần sửa đổi để có được một chức năng như cái khác).
  • Các GPU hiện đại mang cùng tên với người tiền nhiệm cổ đại của chúng, nhưng ngày nay, các GPU cao cấp không được thiết kế để xử lý đồ họa cụ thể (quạt hộp hiện đại được thiết kế để hoạt động chủ yếu như máy cắt cỏ, ngay cả khi cũ hơn).
  • Thật dễ dàng để dịch khá nhiều vấn đề sang ngôn ngữ xử lý đồ họa (cỏ có thể được cắt bằng cách thổi khí qua nó rất nhanh).

BIÊN TẬP:

Câu hỏi của tôi đã được trả lời, nhưng dựa trên một số ý kiến ​​và câu trả lời, tôi cảm thấy rằng tôi nên làm rõ câu hỏi của mình. Tôi không hỏi tại sao mọi người không mua tính toán của riêng họ. Rõ ràng điều đó sẽ là quá đắt hầu hết thời gian.

Tôi chỉ đơn giản quan sát thấy rằng dường như có nhu cầu về các thiết bị có thể nhanh chóng thực hiện các tính toán song song. Tôi đã tự hỏi tại sao có vẻ như thiết bị tối ưu như vậy là Bộ xử lý đồ họa, trái ngược với một thiết bị được thiết kế cho mục đích này.


66
Bởi vì họ chuyên ngành cho loại điều này; về cơ bản nó là cùng một loại toán. Và nVidia đã xây dựng và bán các bo mạch chỉ dành cho GPU để mọi người thực hiện loại khủng hoảng số song song này.
Heptite

7
Hãy nhớ rằng chúng tôi có các "đơn vị" chuyên dụng được thêm vào chip. AES được thực hiện trong phần cứng (tôi nghĩ) trên CPU. AVX cũng được thực hiện trong phần cứng. Tuy nhiên, bạn dừng lại ở đâu? Nhà sản xuất chip không biết bạn cần gì và hầu hết mọi người không có khả năng (công nghệ hoặc tài chính) để có chip riêng được thiết kế cho các nhiệm vụ rất cụ thể. Card đồ họa là - như đã nói khác - một loại kiến ​​trúc chuyên biệt, vốn cho vay tốt cho một số nhiệm vụ nhất định. Chúng không tốt cho mọi thứ - nhưng cho một số nhiệm vụ cụ thể và do đó được sử dụng ở đó.
DetlevCM

4
Một sự tương tự chính xác hơn sẽ thay thế quạt hộp bằng kết hợp canh tác rộng 100 mét.
MooseBoys

6
PC của tôi đã có sẵn GPU để sử dụng, việc thiết kế và sản xuất một con chip chuyên dụng sẽ khiến tôi phải trả lại vài triệu.
PlasmaHH

19
Hãy thử một sự tương tự khác. Giả sử chúng ta có quạt hộp, và chúng ta có cánh quạt máy bay trực thăng. Trong thế giới giả thuyết của chúng tôi, các ứng dụng cho quạt hộp cần những chiếc quạt lớn hơn đang chạy với tốc độ cao hơn, cho đến khi chúng tôi kết thúc với quạt hộp bằng sợi carbon dài 20m và sản xuất hàng loạt khiến chúng trở nên rẻ. Sau đó, một người nào đó nhận ra rằng một chiếc quạt hộp 20m về cơ bản chỉ là một cánh quạt máy bay trực thăng với một cái lồng xung quanh nó. Nó thực sự là tương tự.
Graham

Câu trả lời:


109

Nó thực sự là một sự kết hợp của tất cả các giải thích của bạn. Rẻ hơn và dễ dàng hơn, đã tồn tại và thiết kế đã thay đổi khỏi đồ họa thuần túy.


Một GPU hiện đại có thể được xem là bộ xử lý truyền phát chủ yếu với một số phần cứng đồ họa bổ sung (và một số bộ tăng tốc chức năng cố định, ví dụ để mã hóa và giải mã video). Lập trình GPGPU ngày nay sử dụng các API được thiết kế riêng cho mục đích này (OpenCL, Nvidia CUDA, AMD APP).

Trong một hoặc hai thập kỷ qua, GPU đã phát triển từ một đường ống có chức năng cố định (chỉ có khá nhiều đồ họa) sang một đường ống có thể lập trình (các shader cho phép bạn viết các hướng dẫn tùy chỉnh) cho các API hiện đại hơn như OpenCL cung cấp quyền truy cập trực tiếp vào lõi shader mà không cần đường ống đồ họa đi kèm.

Các bit đồ họa còn lại là nhỏ. Chúng là một phần nhỏ trong chi phí của thẻ mà không rẻ hơn đáng kể để loại bỏ chúng và bạn phải chịu chi phí cho một thiết kế bổ sung. Vì vậy, điều này thường không được thực hiện - không có tương đương định hướng tính toán của hầu hết các GPU - ngoại trừ ở các tầng cao nhất và những thứ này khá đắt.

GPU "chơi game" thông thường được sử dụng rất phổ biến vì tính kinh tế của quy mô và sự đơn giản tương đối làm cho chúng rẻ và dễ dàng để bắt đầu. Đó là một con đường khá dễ dàng từ lập trình đồ họa đến tăng tốc các chương trình khác với GPGPU. Bạn cũng dễ dàng nâng cấp phần cứng vì có sẵn các sản phẩm mới hơn và nhanh hơn, không giống như các tùy chọn khác.


Về cơ bản, các lựa chọn đi xuống:

  • CPU đa năng, tuyệt vời để phân nhánh và mã tuần tự
  • GPU "chơi game" bình thường
  • GPU định hướng tính toán, ví dụ Nvidia TeslaRadeon Bản năng Những thứ này thường không hỗ trợ đầu ra đồ họa, vì vậy GPU là một chút sai lầm. Tuy nhiên, họ sử dụng các lõi GPU tương tự như các GPU thông thường và mã OpenCL / CUDA / APP có thể di chuyển trực tiếp ít nhiều.
  • Các GPU, sử dụng một mô hình lập trình rất khác nhau và có xu hướng rất tốn kém. Đây là nơi tồn tại một rào cản đáng kể để nhập cảnh. Chúng cũng không nhất thiết phải nhanh hơn GPU, tùy thuộc vào khối lượng công việc.
  • ASIC, mạch được thiết kế tùy chỉnh (phần cứng). Điều này rất tốn kém và chỉ trở nên đáng giá với quy mô cực lớn (ít nhất là chúng ta đang nói đến hàng ngàn đơn vị), và ở đó bạn chắc chắn rằng chương trình sẽ không bao giờ cần phải thay đổi. Chúng hiếm khi khả thi trong thế giới thực. Bạn cũng sẽ phải thiết kế lại và kiểm tra toàn bộ mọi thứ mỗi khi công nghệ tiến bộ - bạn không thể trao đổi trong bộ xử lý mới như bạn có thể với CPU và GPU.

16
ASIC cũng có ý nghĩa khi điện toán thực sự trả tiền cho chính nó (khai thác tiền điện tử)
ratchet freak

4
Trên thực tế, các GPU thường tệ hơn GPU. Vấn đề là đồ họa rất linh hoạt; họ có thể thực hiện nhiều hoạt động khác nhau. Tuy nhiên, tính toán nói chung là một dạng toán học và trên thực tế, phần lớn chỉ là hai phép toán: phép cộng và phép nhân (phép trừ và phép chia là các biến thể của các phép tính trên). GPU rất, rất tốt ở hai hoạt động đó, nhiều hơn cả GPU.
MSalters

19
Bạn cần làm rõ hơn về FPGA. Ý tưởng rằng có một "bước lên" là một chút sai lệch. Họ là một bước đi ngang.
Yakk

6
Lấy ví dụ về cái cuối cùng, Google có "Đơn vị xử lý kéo căng" của riêng họ để học máy. Ở mức độ nào họ tùy chỉnh không rõ ràng, nhưng được mô tả là ASIC.
mbrig

4
@MSalters Một trong những điểm bán hàng chính của GPU so với GPU là hiệu năng / Oát, điều này trở nên quan trọng hơn khi các trung tâm dữ liệu bắt đầu chạm vào tường điện (các GPU thường có hiệu suất năng lượng cao hơn). Theo như toán học, các GPU có thể so sánh với GPU trong số học điểm cố định và số nguyên và chỉ bị trễ trong toán học dấu phẩy động.
wilcroft

32

Tương tự yêu thích của tôi:

  • CPU : Một thiên tài Polymath. Có thể làm một hoặc hai việc một lúc nhưng những việc đó có thể rất phức tạp.
  • GPU : Một tấn công nhân tay nghề thấp. Mỗi người trong số họ không thể làm những vấn đề lớn, nhưng về khối lượng, bạn có thể làm được rất nhiều việc. Đối với câu hỏi của bạn, có một số đồ họa trên đầu nhưng tôi tin rằng nó không đáng kể.
  • ASIC / FPGA : Một công ty. Bạn có thể thuê một tấn công nhân có tay nghề thấp hoặc một vài thiên tài, hoặc sự kết hợp của những công nhân có trình độ thấp và thiên tài.

Những gì bạn sử dụng phụ thuộc vào độ nhạy chi phí, mức độ mà một nhiệm vụ là song song và các yếu tố khác. Do thị trường đã diễn ra như thế nào, GPU là lựa chọn tốt nhất cho hầu hết các ứng dụng song song và CPU là lựa chọn tốt nhất khi năng lượng và chi phí đơn vị là mối quan tâm chính.

Trực tiếp đến câu hỏi của bạn: tại sao GPU qua ASIC / FPGA? Nói chung là chi phí. Ngay cả với giá GPU tăng cao hiện nay, việc sử dụng GPU vẫn rẻ hơn (nói chung) so với thiết kế ASIC để đáp ứng nhu cầu của bạn. Như @ user912264 chỉ ra, có những nhiệm vụ cụ thể có thể hữu ích cho ASIC / FPGA. Nếu bạn có một nhiệm vụ duy nhất và bạn sẽ được hưởng lợi từ quy mô thì có thể xứng đáng để thiết kế ASIC / FPGA. Trong thực tế, bạn có thể thiết kế / mua / cấp phép thiết kế đồ họa cho mục đích này. Điều này được thực hiện để cung cấp năng lượng cho các pixel trong TV độ nét cao chẳng hạn.


7
Nhận xét không phải là để trả lời dù sao, và đây có vẻ là một câu trả lời hợp lý với tôi.
Raimund Krämer

1
@BobtheMogicMoose Nhưng có thể là các đơn đặt hàng có cường độ nhanh hơn để sử dụng một GPU tùy chỉnh được thiết kế để phân tích bộ gen hơn là có mã tương đương trong GPU. Khi bạn trả tiền cho các nhà khoa học để chờ đợi kết quả, thì bản đồ nhanh hơn sẽ tự trả tiền rất nhanh.
doneal24

Các nhà phát triển phổ biến cũng dễ tiếp cận hơn rất nhiều đối với nhà phát triển thông thường - ví dụ Microsoft có giải pháp AI trên nền tảng đám mây bằng cách sử dụng các GPU (Project BrainWave). AWS có một số dịch vụ là tốt. Bất cứ ai cũng có thể thuê một số đồ họa tùy chỉnh cho các tác vụ chuyên dụng mà không phải tự xây dựng nó, không khả thi cho nhiều trường hợp sử dụng ngay cả vài năm trước.
brichin

Vâng, tôi nghĩ rằng thậm chí có bộ dụng cụ sở thích đồ họa có thể so sánh với arduino raspberry-pi. Tôi vẫn nghĩ rằng lập trình đồ họa tốn kém hơn nhiều so với các kiến ​​trúc phát triển hơn.
BobtheMagicMoose

10

Sự tương tự của bạn là xấu. Tương tự như vậy, khi bạn mua thiết bị cho một doanh nghiệp chăm sóc cỏ lớn, bạn cho rằng có sẵn máy cắt cỏ tốt. Đây không phải là trường hợp trong thế giới điện toán - GPU là công cụ tốt nhất có sẵn.

Chi phí R & D và tăng hiệu suất có thể cho một con chip chuyên dụng có thể quá cao để biện minh cho việc chế tạo một con chip.

Điều đó nói rằng, tôi biết rằng Nvidia đã đưa ra một số GPU dành riêng cho điện toán cho mục đích chung - chúng không có đầu ra video - giống như bán quạt hộp với các lồng đã được gỡ bỏ.


9

Tất nhiên, bạn có thể sử dụng chip chuyên dụng, cho hiệu quả năng lượng hoặc tốc độ tính toán. Hãy để tôi nói cho bạn lịch sử khai thác Bitcoin:

  • Bitcoin là mới, chuyên viên máy tính của tôi khai thác với CPU của họ.
  • Bitcoin có phần mới, thông minh của tôi với GPU của họ.
  • Bitcoin bây giờ (loại) nổi tiếng, mọi người mua đồ họa.
  • Bitcoin hiện đã nổi tiếng (2013), ngay cả những người mới mua ASIC ("Mạch tích hợp dành riêng cho ứng dụng") để khai thác hiệu quả.
  • Chặn giảm phần thưởng (định kỳ), thậm chí ASIC cũ không còn có lãi nữa.

Vì vậy, không có lý do để sử dụng GPU thay vì một "máy tính khổng lồ" chuyên dụng. Các ưu đãi kinh tế càng lớn, phần cứng càng được chuyên môn hóa. Tuy nhiên, chúng khá khó để thiết kế và không thể sản xuất nếu bạn không sản xuất hàng ngàn cùng một lúc. Nếu không thể thiết kế chip, bạn có thể mua một trong số đó từ Walmart gần nhất.

TL; DR Tất nhiên bạn có thể sử dụng chip chuyên dụng hơn.


1
"Tất nhiên bạn có thể sử dụng các chip chuyên dụng hơn" - nhưng có các chip chuyên dụng cho bitcoin (SHA-256), sau đó cho litecoin (tiền điện tử) và đó là khá nhiều. Phần cứng máy tính hiệu năng cao cho các vấn đề khác không tồn tại. (Nghĩa là, với hiệu suất cao hơn GPU cao cấp hiện tại)
Agent_L

8

Những gì bạn mô tả trong tương tự của bạn là chính xác những gì đã xảy ra. Ngay khi bạn chộp lấy quạt của mình và mài lưỡi dao để cố gắng sử dụng nó như một máy cắt, một nhóm nghiên cứu nhận ra "Này, chúng tôi có một số đơn vị xử lý đa lõi khá đẹp ở đây, hãy thử sử dụng nó cho các tính toán cho mục đích chung! ".

Kết quả là tốt và bóng bắt đầu lăn. GPU đi từ một thiết bị chỉ có đồ họa để hỗ trợ tính toán cho mục đích chung để hỗ trợ trong các tình huống đòi hỏi khắt khe nhất.

Bởi vì dù sao hoạt động đòi hỏi tính toán nhất mà chúng tôi mong đợi từ máy tính là đồ họa. Nó đủ để nhìn vào những tiến bộ tuyệt vời của cách các trò chơi ngày nay so với cách chúng đã làm cách đây vài năm. Điều này có nghĩa là rất nhiều nỗ lực và tiền bạc đã đi vào sự phát triển của GPU và thực tế là chúng cũng có thể được sử dụng để tăng tốc một loại tính toán đa năng nhất định (nghĩa là cực kỳ song song) vừa được thêm vào mức độ phổ biến của chúng.

Vì vậy, kết luận, lời giải thích đầu tiên mà bạn đưa ra là chính xác nhất:

  • Một sự thay thế như vậy sẽ quá tốn kém để phát triển khi GPU đã là một lựa chọn tốt.

GPU ở đó đã có sẵn, chúng có sẵn cho mọi người và họ đã làm việc.


5
Tôi phải không đồng ý về "hoạt động đòi hỏi tính toán nhất" là đồ họa, tất nhiên phụ thuộc vào chính xác "chúng ta" là ai. Đối với người dùng phổ thông, có, nhưng trong cộng đồng khoa học & kỹ thuật, có nhiều thứ đòi hỏi khắt khe hơn đồ họa. Rốt cuộc, đồ họa chấp nhận được (như đối với các trò chơi) có thể được thực hiện với một kết hợp PC và GPU tầm trung duy nhất. Các vấn đề quan trọng thường kết hợp hàng trăm hoặc hàng nghìn đơn vị như vậy để có được hiệu suất trong phạm vi petaflop - và sau đó các sự cố vẫn có thể mất vài ngày hoặc vài tuần tính toán thời gian.
jamesqf

Hoạt động đòi hỏi tính toán cao nhất mà tôi mong đợi từ máy tính của mình là đồ họa kỹ thuật , nhưng tính toán cấu trúc từ chuyển động không phải là điều mà hầu hết mọi người (hoặc nhà thiết kế GPU) nghĩ đến khi họ nghe thấy từ "đồ họa".
Đánh dấu

5

Cụ thể, GPU không phải là "lõi" theo nghĩa "song song hóa nhiệm vụ". Đối với hầu hết các phần, nó ở dạng "song song dữ liệu". SIMD là "một lệnh nhiều dữ liệu". Điều này có nghĩa là bạn sẽ không làm điều này:

for parallel i in range(0,1024): c[i] = a[i] * b[i]

Điều này có nghĩa là bạn có 1024 con trỏ lệnh tất cả thực hiện các nhiệm vụ riêng biệt tiến triển ở các mức độ khác nhau. SIMD, hoặc "điện toán véc tơ" sẽ thực hiện các hướng dẫn trên toàn bộ mảng cùng một lúc, giống như sau:

c = a * b

Các "vòng lặp" nằm trong hướng dẫn "*" và "=", thay vì nằm ngoài hướng dẫn. Ở trên sẽ làm điều này cho tất cả 1024 phần tử cùng một lúc, tại con trỏ lệnh CÙNG cho tất cả chúng. Nó giống như có ba thanh ghi lớn cho a, b và c. Mã SIMD cực kỳ hạn chế và chỉ hoạt động tốt đối với các sự cố không quá "phân nhánh".

Trong trường hợp thực tế, các giá trị SIMD này không lớn bằng 1024 mục. Hãy tưởng tượng một biến đó là một nhóm int32 liên kết với nhau. Bạn có thể nghĩ về phép nhân và gán như một hướng dẫn máy thực sự.

int32_x64 c; int32_x64 b; int32_x64 a; c = b * a;

GPU thực sự phức tạp hơn SIMD, nhưng đó là bản chất của chúng. Đó là lý do tại sao bạn không thể ném một thuật toán CPU ngẫu nhiên lên GPU và mong đợi một sự tăng tốc. Thuật toán phân nhánh càng nhiều, thuật toán càng phù hợp với GPU.


5

Các câu trả lời khác ở đây là khá tốt. Tôi cũng sẽ ném vào 2 xu của mình.

Một lý do khiến CPU trở nên quá phổ biến là chúng linh hoạt. Bạn có thể lập trình lại chúng cho vô số nhiệm vụ. Ngày nay, các công ty sản xuất sản phẩm gắn CPU hoặc vi điều khiển nhỏ vào một thứ gì đó và lập trình chức năng của nó rẻ hơn và nhanh hơn so với việc phát triển mạch tùy chỉnh để thực hiện cùng một nhiệm vụ.

Bằng cách sử dụng cùng một thiết bị với các thiết bị khác, bạn có thể tận dụng các giải pháp đã biết cho các sự cố khi sử dụng cùng thiết bị đó (hoặc tương tự). Và khi nền tảng trưởng thành, các giải pháp của bạn phát triển và trở nên rất trưởng thành và tối ưu hóa. Những người viết mã trên các thiết bị này cũng có được chuyên môn và trở nên rất giỏi trong nghề của họ.

Nếu bạn đã tạo ra một loại thiết bị mới từ đầu, một số thay thế cho GPU, sẽ mất nhiều năm để ngay cả những người dùng đầu tiên thực sự hiểu được cách sử dụng nó. Nếu bạn gắn ASIC vào CPU, làm thế nào để bạn tối ưu hóa tính toán giảm tải cho thiết bị đó?

Cộng đồng kiến ​​trúc máy tính đã trở nên ồn ào với ý tưởng này trong nhiều năm (rõ ràng nó đã phổ biến trước đây, nhưng gần đây đã chứng kiến ​​sự phục hưng). Những 'máy gia tốc' (thuật ngữ của chúng) có mức độ lập trình lại khác nhau. Vấn đề là, làm thế nào hẹp bạn xác định phạm vi của vấn đề mà máy gia tốc của bạn có thể giải quyết? Tôi thậm chí đã nói chuyện với một số người đang làm việc tạo ra một máy gia tốc sử dụng các mạch tương tự với op-amps để tính toán các phương trình vi phân. Ý tưởng tuyệt vời, nhưng phạm vi cực kỳ hẹp.

Sau khi bạn có một máy gia tốc làm việc, các lực lượng kinh tế sẽ quyết định số phận của bạn. Quán tính thị trường là một lực lượng đáng kinh ngạc. Ngay cả khi một cái gì đó là một ý tưởng tuyệt vời, nó có khả thi về mặt kinh tế để tái cấu trúc các giải pháp làm việc của bạn để sử dụng thiết bị mới này không? Co le không.

GPU thực sự khủng khiếp đối với một số loại vấn đề nhất định, vì vậy rất nhiều người / công ty đang làm việc trên các loại thiết bị khác. Nhưng GPU đã quá cố thủ, liệu các thiết bị của họ có trở nên khả thi về mặt kinh tế không? Tôi đoán chúng ta sẽ thấy.

Chỉnh sửa: Mở rộng câu trả lời của tôi một chút, bây giờ tôi xuống xe.

Một nghiên cứu trường hợp thận trọng là dự án Intel Larrabee. Nó khởi đầu như một thiết bị xử lý song song có thể làm đồ họa trong phần mềm; nó không có phần cứng đồ họa chuyên dụng. Tôi đã nói chuyện với một người làm việc trong dự án, và một lý do chính khiến họ nói rằng nó thất bại và bị hủy bỏ (bên cạnh chính trị nội bộ khủng khiếp) là họ không thể có được trình biên dịch để tạo ra mã tốt cho nó. Tất nhiên nó tạo ra mã làm việc, nhưng nếu toàn bộ điểm của sản phẩm là hiệu suất tối đa thì tốt hơn bạn nên có một trình biên dịch tạo mã khá tối ưu. Điều này trở lại với nhận xét trước đây của tôi về việc thiếu chuyên môn sâu về cả phần cứng và phần mềm cho thiết bị mới của bạn là một vấn đề lớn.

Một số yếu tố của thiết kế Larrabee đã biến nó thành Xeon Phi / Intel MIC. Sản phẩm này thực sự làm cho nó ra thị trường. Nó hoàn toàn tập trung vào việc song song hóa các tính toán khoa học và loại HPC khác. Có vẻ như đó là một thất bại thương mại bây giờ. Một người khác mà tôi đã nói chuyện với Intel ngụ ý rằng họ chỉ không cạnh tranh về giá / hiệu năng với GPU.

Mọi người đã cố gắng tích hợp tổng hợp logic cho các trình biên dịch vào các trình biên dịch, để bạn có thể tự động tạo mã cho các trình tăng tốc của bạn. Họ không làm việc tốt.

Một nơi dường như là mảnh đất thực sự màu mỡ cho máy gia tốc, hoặc các lựa chọn thay thế khác cho GPU, là đám mây. Nền kinh tế quy mô tồn tại tại các công ty lớn như Google, Amazon và Microsoft khiến việc đầu tư vào các chương trình tính toán thay thế đáng giá. Ai đó đã đề cập đến các đơn vị xử lý tenor của Google. Microsoft có các GPU và các thứ khác trên khắp cơ sở hạ tầng Bing và Azure. Câu chuyện tương tự với Amazon. Nó hoàn toàn có ý nghĩa nếu quy mô có thể bù đắp khoản đầu tư của bạn về thời gian, tiền bạc và nước mắt kỹ sư.

Tóm lại, chuyên môn hóa là mâu thuẫn với rất nhiều thứ khác (kinh tế, sự trưởng thành của nền tảng, chuyên môn kỹ thuật, vv). Chuyên môn hóa có thể cải thiện đáng kể hiệu suất của bạn, nhưng nó thu hẹp phạm vi mà thiết bị của bạn được áp dụng. Câu trả lời của tôi tập trung vào rất nhiều tiêu cực, nhưng chuyên môn hóa cũng có rất nhiều lợi ích. Nó hoàn toàn nên được theo đuổi và điều tra, và như tôi đã đề cập, nhiều nhóm đang theo đuổi nó khá tích cực.

Xin lỗi, chỉnh sửa lại: Tôi nghĩ tiền đề ban đầu của bạn là sai. Tôi tin rằng đó không phải là một trường hợp tìm kiếm thêm nguồn sức mạnh tính toán, và nhiều trường hợp mọi người nhận ra một cơ hội. Lập trình đồ họa rất nặng về đại số tuyến tính và GPU được thiết kế để thực hiện hiệu quả các hoạt động phổ biến như nhân ma trận, hoạt động véc tơ, v.v. Các hoạt động cũng rất phổ biến đối với máy tính khoa học.

Sự quan tâm đến GPU bắt đầu ngay khi mọi người nhận ra rằng những lời hứa mà dự án Intel / HP EPIC đưa ra đã bị cường điệu hóa quá mức (cuối những năm 90 đầu những năm 2000). Không có giải pháp chung cho song song hóa trình biên dịch. Vì vậy, thay vì nói "chúng ta tìm thấy sức mạnh xử lý nhiều hơn ở đâu, ồ chúng ta có thể thử GPU", tôi nghĩ rằng đó là "chúng ta có một cái gì đó tốt khi tính toán song song, chúng ta có thể làm cho điều này có thể lập trình chung hơn". Rất nhiều người tham gia vào cộng đồng máy tính khoa học, những người đã có mã Fortran song song họ có thể chạy trên máy Cray hoặc Tera (Tera MTA có 128 luồng phần cứng). Có lẽ có sự chuyển động từ cả hai hướng, nhưng tôi chỉ nghe đề cập đến nguồn gốc của GPGPU từ hướng này.


"Máy gia tốc" bạn đang đề cập đến phần cứng tùy chỉnh hoặc siêu cụm của các nút tính toán công suất thấp? Bạn có thể giải thích bằng cách cung cấp tài liệu tham khảo cho một số phần cứng máy gia tốc mẫu.
manav mn

Xin lỗi, tôi nghĩ rằng tôi đã làm rõ điều đó từ bối cảnh. Máy gia tốc chỉ là một thuật ngữ ô cho bộ đồng xử lý hoặc thẻ giảm tải. Điểm nổi ban đầu nằm trong bộ đồng xử lý chứ không phải CPU chính và nó sẽ được coi là máy gia tốc. GPU, DSP, Xeon Phi, FPGA khi chúng nằm trên thẻ PCIe hoặc một cái gì đó tương tự, phương trình vi phân tương tự tôi đã đề cập, có những thiết bị hỗ trợ ảo hóa, có nghiên cứu hiện tại về máy gia tốc mạng thần kinh. Đó là tất cả các ví dụ về máy gia tốc.
NerdPirate

4

nhập mô tả hình ảnh ở đây

Một ASIC (silicon tùy chỉnh) rất nhanh, nhưng nó rất tốn kém để thiết kế và sản xuất. ASIC từng là mục đích cụ thể và CPU là một phương pháp cho phép máy tính được "lập trình" để các tác vụ điện toán có thể được thực hiện bằng phần mềm. CPU sớm đã cho mọi người khả năng tận dụng sức mạnh của ASIC mà không phải trả chi phí lớn bằng cách lập trình chip trong lĩnh vực này. Cách tiếp cận này đã thành công vì nó đã tạo ra máy tính (rất) nhanh mà bạn đang sử dụng ngay bây giờ.

Vậy tại sao GPU?

Vào giữa những năm 90, 3DFX nhận ra rằng các tác vụ kết xuất 3D đặc biệt đến mức một ASIC tùy chỉnh sẽ hoạt động NHIỀU hơn CPU. Họ đã tạo ra một bộ đồng xử lý máy tính đã giảm tải các tác vụ kết xuất 3D từ CPU sang bộ đồng xử lý này, chúng được gọi là "GPU". Sự cạnh tranh và nhu cầu thị trường đã thúc đẩy sự đổi mới trong không gian này đến điểm mà GPU đang thực hiện các phép tính NHIỀU nhanh hơn CPU, vì vậy câu hỏi đặt ra, "Tại sao tôi không thể sử dụng GPU để bẻ khóa số của mình thay vì CPU?" Các nhà sản xuất GPU thấy nhu cầu và cách kiếm được nhiều tiền hơn, vì vậy họ bắt đầu thay đổi nền tảng của mình để cho phép các nhà phát triển sử dụng phần cứng của họ. Nhưng phần cứng phần cứng đặc biệt có mục đích đến mức vẫn còn những hạn chế trong những gì bạn có thể yêu cầu GPU làm. Tôi sẽ không đi vào chi tiết cụ thể tại sao ở đây.

Vậy tại sao silicon không có mục đích cụ thể hơn? Tại sao đồ họa CHỈ?

Hai lý do: 1) Giá cả. GPU đã có một thị trường tốt và có thể biện minh cho nó, nhưng ngay cả khi đó, đó là một rủi ro rất lớn. Không ai thực sự biết nếu 3DFX có thể kiếm được lợi nhuận (hóa ra, họ thực sự không thể, và không còn tồn tại). Ngay cả bây giờ, với quy mô của thị trường GPU, thực sự chỉ có 3 đối thủ. 2) CPU thực sự đáp ứng nhu cầu "silicon tùy chỉnh" với các phần mở rộng hướng dẫn. Nghĩ lại về MMX - đây thực sự là nỗ lực của Intel để tăng tốc đồ họa trong CPU ngay khi 3DFX đang tăng tốc. Kể từ đó, tập lệnh x86 đã phát triển khá lớn với tất cả các tiện ích mở rộng tùy chỉnh này. Nhiều trong số các tiện ích mở rộng này có ý nghĩa vào thời điểm đó (như MMX), nhưng phần lớn chỉ là trọng lượng chết trong bộ xử lý. Tuy nhiên, bạn không thể xóa chúng vì nó phá vỡ phần mềm hiện có. Nó ' Đây thực sự là một trong những điểm bán hàng cho ARM - ARM là một bộ hướng dẫn rút gọn. Không có nhiều phần mở rộng hướng dẫn, nhưng điều này làm cho silicon nhỏ hơn và rẻ hơn để sản xuất.

Dường như với tôi như bạn có thể kiếm được nhiều tiền nếu bạn có thể giảm chi phí silicon tùy chỉnh. Không ai làm việc này à?

Có một công nghệ được gọi là FPGA - mảng cổng lập trình trường, đã xuất hiện từ những ngày đầu của máy tính. Về cơ bản, đây là một vi mạch mà bạn có thể thiết kế "trong lĩnh vực" bằng phần mềm. Đó là công nghệ rất tuyệt vời, nhưng tất cả các cấu trúc cần thiết để làm cho chip có thể lập trình chiếm rất nhiều silicon và khiến chip chạy ở tốc độ xung nhịp thấp hơn nhiều. Các GPU có thể nhanh hơn CPU, nếu bạn có đủ silicon trên chip VÀ có thể thực hiện song song nhiệm vụ một cách hiệu quả. Nhưng họ bị giới hạn về số lượng logic bạn có thể đặt vào chúng. Tất cả trừ các GPU đắt nhất đều chậm hơn GPU để khai thác bitcoin sớm, nhưng các đối tác ASIC của họ đã chấm dứt hiệu quả lợi nhuận của việc khai thác GPU. Các loại tiền điện tử khác đã sử dụng các thuật toán cụ thể không thể song song hóa, do đó, FPGA và ASIC '

Giới hạn chính của FPGA là kích thước silicon - bạn có thể lắp bao nhiêu logic vào chip? Thứ hai là tốc độ xung nhịp, bởi vì thật khó để tối ưu hóa những thứ như điểm nóng, rò rỉ và trò chuyện chéo trong một đồ họa. Các phương pháp chế tạo mới hơn đã giảm thiểu các vấn đề này và Intel đã hợp tác với Altera để cung cấp một loại đồ họa có thể được sử dụng bởi các kỹ sư để tận dụng lợi ích của "silicon tùy chỉnh" như một bộ đồng xử lý trong máy chủ. Vì vậy, nó đang đến, trong một ý nghĩa.

Các GPU sẽ bao giờ thay thế CPU và GPU?

Có lẽ không sớm. Các CPU và GPU mới nhất là MASSIVE và silicon được điều chỉnh cao cho hiệu suất nhiệt và điện. Bạn không thể tối ưu hóa đồ họa giống như cách bạn có thể sử dụng ASIC tùy chỉnh. Chặn một số công nghệ đột phá, CPU có thể sẽ vẫn là cốt lõi của máy tính của bạn với bộ đồng xử lý GPU và GPU.


1
Nhiều trong số các tiện ích mở rộng này có ý nghĩa vào thời điểm đó (như MMX), nhưng phần lớn chỉ là trọng lượng chết trong bộ xử lý. Kết xuất 3D khác xa với trường hợp sử dụng duy nhất cho SIMD. Hầu hết "trọng lượng" của MMX là các đơn vị thực thi và chúng có thể được chia sẻ với vectơ rộng hơn như SSE2, AVX2 và AVX512. Chúng được sử dụng nhiều cho mã hóa video chất lượng cao trên CPU và nhiều tác vụ khác, bao gồm cả tính toán hiệu năng cao. Nhưng cũng triển khai thư viện của memchr, strlen, và nhiều thứ khác. ví dụ: lọc một mảng nhiều hơn 1 phần tử cùng một lúc
Peter Cordes

3

Thật vậy, có một bảng chuyên dụng cho điện toán tốc độ cao, ví dụ Xilinx có một danh sách 178 bo mạch PCI-e sử dụng các GPU của họ, và khoảng một phần ba trong số các bo mạch này là "crunchers số" với một hoặc một vài chip FPGA mạnh mẽ và rất nhiều bộ nhớ DDR. Ngoài ra còn có các bảng DSP hiệu suất cao ( ví dụ ) nhằm vào các tác vụ tính toán hiệu năng cao.

Tôi đoán sự phổ biến của các bảng GPU bắt nguồn từ mục tiêu của họ vào một nhóm khách hàng rộng hơn. Bạn không phải đầu tư vào phần cứng đặc biệt để chơi với Nvidia CUDA, do đó, khi bạn có một nhiệm vụ đòi hỏi phần cứng đặc biệt, GPU Nvidia sẽ có lợi thế cạnh tranh trong đó bạn đã biết cách lập trình chúng.


2

Tôi nghĩ rằng câu trả lời cho câu hỏi của bạn tùy thuộc vào cách xác định tính toán hiệu suất cao.

Nói chung, tính toán hiệu suất cao có liên quan đến thời gian tính toán. Trong trường hợp đó, tôi muốn chia sẻ liên kết của cụm máy tính hiệu năng cao .

Liên kết được chỉ định lý do sử dụng GPU; Việc sử dụng card đồ họa (hay đúng hơn là GPU của chúng) để thực hiện các tính toán cho điện toán lưới sẽ tiết kiệm hơn rất nhiều so với sử dụng CPU, mặc dù ít chính xác hơn.


2
GPGPU cao cấp có thông lượng tốt cho phân tích 64 bit double, không chỉ 32 bit chính xác đơn float. (Một số GPU thông thường tiết kiệm đồ trên CTNH double). Tất cả các nhà cung cấp chính đều hỗ trợ toán học của FP FP (tôi nghĩ ngay cả với các biến thể). Vì vậy, không có tổn thất chính xác trừ khi bạn muốn đánh đổi độ chính xác để thực hiện, ví dụ với FP độ chính xác một nửa 16 bit, thông lượng tốt hơn trên một số phần cứng (và dĩ nhiên là một nửa băng thông bộ nhớ). Mã hiệu suất cao trên CPU cũng thường sử dụng 32 bit float, để có được gấp đôi số phần tử trên mỗi vectơ SIMD và một nửa băng thông bộ nhớ.
Peter Cordes

1
@PeterCordes Tôi đã thấy một số công việc trong tính toán gần đúng thậm chí giảm xuống điểm nổi tám bit, mặc dù tôi không nghĩ nhiều GPU hỗ trợ phần cứng.
JAB
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.