Về cơ bản mà nói, CUDA C/C++ là một ngôn ngữ lập trình cấp cao. Còn PTX gần với ngôn ngữ máy hơn, nó “sát” với chi tiết phần cứng (close-to-metal) hơn. Khi dùng PTX, lập trình viên có thể “nhìn rõ” các thành phần nhân xử lý hơn và từ đó, tiến hành tối ưu được chi tiết hơn tới từng thanh ghi, tập lệnh, điều chỉnh phân luồng thread. Đây là điều mà CUDA C/C++ hay các ngôn ngữ cấp cao khác không có được.
Bài phân tích có đoạn: “Do mô hình DeepSeek V3 được công khai như nguồn mở, nên các báo cáo kỹ thuật về V3 được mô tả rất chi tiết. Các tài liệu này thể hiện quy mô cấp thấp được thực hiện bởi DeepSeek. Nói theo kiểu đơn giản, mức độ tối ưu có thể gói gọn trong câu “dường như họ xây lại tất cả mọi thứ từ số không”. Lấy ví dụ, khi train V3 với GPU NVIDIA H800, DeepSeek tuỳ chỉnh được tới từng phần tính toán cơ bản của GPU, được gọi là SM (Streaming Multiprocessor), cho hợp với nhu cầu của họ. Trong tổng 132 SM, họ có thể dành riêng ra 20 SM chỉ để đảm nhận liên lạc giữa máy chủ và máy chủ thay vì chỉ tính toán dữ liệu”.
Lập trình assembly được xem là cảnh giới tối cao gần với máy móc nhất
Mặc dù sự tối ưu lập trình cấp thấp đem lại lợi ích hiệu năng rất cao, nhưng nó đòi hỏi sự đầu tư cao độ vì tính phức tạp của từng cấu hình chip, rất khó để triển khai trên nhiều thế hệ vi xử lý. Đây cũng là lý do tại sao các ngôn ngữ lập trình cấp cao như CUDA C/C++ được dùng phổ biến hơn, vì lập trình viên có thể nhanh chóng triển khai ứng dụng hơn mà không phải ngại sản phẩm của mình gặp trục trặc khi nâng cấp phần cứng xử lý.
Nếu bạn chưa biết thì trong lĩnh vực lập trình có rất nhiều ngôn ngữ, thường được chia thành các cấp độ gồm: cấp thấp, cấp trung và cấp cao. Thông thường khi nghe tới việc chia cấp độ như vầy, người ta sẽ cho rằng những ngôn ngữ cấp cao là ngôn ngữ hiện đại hơn, mạnh mẽ hơn các ngôn ngữ cấp thấp, điều này đúng và không đúng. Đúng ở chỗ ngôn ngữ lập trình cấp cao sẽ gần gũi hơn với lập trình viên, dễ đọc dễ hiểu, có những tính năng tiện lợi và mạnh. Còn không đúng ở chỗ nó mạnh với lập trình viên nhưng yếu nếu xét về mặt phần cứng. Lập trình là để viết nên các đoạn mã, tạo thành các phần mềm, ứng dụng để khai thác sức mạnh phần cứng, tuy nhiên phần cứng máy tính luôn hoạt động với mã nhị phân thuần túy, còn ngôn ngữ mà lập trình viên sử dụng, cuối cùng vẫn cần phải được biên dịch thành mã nhị phân, có vậy thì máy tính mới hiểu được.
Gần đạt mức assembly trong bài viết có nghĩa là cách các lập trình viên tại DeepSeek sử dụng công cụ PTX gần với ngôn ngữ assembly (hợp ngữ). Assembly là ngôn ngữ lập trình bậc thấp nhất, đại diện cho các lệnh máy tính dưới dạng ký hiệu dễ đọc hơn so với mã nhị phân. Dĩ nhiên con người hiện tại không thể lập trình theo kiểu 0 1 được. Mỗi lệnh assembly thực hiện một thao tác rất cụ thể, ví dụ như di chuyển dữ liệu, thực hiện phép tính, hoặc nhảy đến một vị trí khác trong chương trình. Assembly cũng cho phép lập trình viên tương tác trực tiếp với các thành phần phần cứng như thanh ghi (register), bộ nhớ cũng như các thành phần khác. Nếu bạn muốn tối ưu hết mức có thể để đạt được hiệu quả tối đa, assembly là cách tốt nhất, điều khiển phần cứng trực tiếp. Lấy ví dụ bạn là 1 giám đốc điều hành, bạn sẽ điều hành 1 nhóm các quản lý cấp cao, bên dưới quản lý cấp cao lại có thêm nhiều quản lý thấp hơn, dưới đó lại có từng tổ trưởng đứng đầu từng nhóm nhỏ, dưới cùng mới là nhân viên trực tiếp làm việc. Vì cấp độ quản lý của bạn quá cao nên bạn không thể ra lệnh chi tiết và cụ thể cho từng nhân viên mà bạn sẽ truyền đạt yêu cầu cho quản lý cấp bậc liền kề. Những quản lý này sẽ lại truyền đạt xuống cấp dưới, cứ thế… tới lượt nhân viên thực hiện yêu cầu. Vì không thể cụ thể và chi li nên nhiều khả năng yêu cầu của bạn có thể được thực hiện chỉ với 2 nhân viên là hiệu quả nhất, thì bên dưới điều động tới 10 nhân viên cùng làm, nôm na kiểu như vậy.