2011-11-10 24 views
6

Bạn có khuyên bạn nên đọc mã PTX của hạt nhân để tìm hiểu cách tối ưu hóa hạt nhân của bạn hơn nữa không?Tôi có nên xem xét PTX để tối ưu hóa hạt nhân của mình không? Nếu vậy, làm thế nào?

Một ví dụ: Tôi đọc, người ta có thể tìm hiểu từ mã PTX nếu việc bỏ vòng lặp tự động hoạt động. Nếu đây không phải là trường hợp, một trong những sẽ phải unroll các vòng bằng tay trong mã hạt nhân.

  • Có trường hợp sử dụng nào khác cho mã PTX không?
  • Bạn có nhìn vào mã PTX của mình không?
  • Tôi có thể tìm hiểu làm cách nào để có thể đọc mã PTX CUDA tạo cho hạt nhân của tôi?
+2

Bạn có thể tháo rời mã nhị phân. IMO bạn nên xem xét, để tránh rơi vào "Tôi nghĩ rằng nó sẽ tối ưu hóa" loại bẫy và có thể nhìn thấy những gì bạn đang thực sự làm khi bạn đang tối ưu hóa hạt nhân. – harold

Trả lời

13

Điểm đầu tiên để tạo ra về PTX là nó chỉ là một biểu diễn trung gian của mã chạy trên GPU - ngôn ngữ lắp ráp máy ảo. PTX được lắp ráp để nhắm mục tiêu mã máy bằng ptxas vào thời gian biên dịch hoặc bằng trình điều khiển khi chạy. Vì vậy, khi bạn nhìn vào PTX, bạn đang xem xét trình biên dịch phát ra, nhưng không phải là những gì GPU thực sự sẽ chạy. Cũng có thể viết mã PTX của riêng bạn, hoặc từ đầu (đây là mô hình biên dịch JIT duy nhất được hỗ trợ trong CUDA), hoặc như một phần của bộ phận lắp ráp nội tuyến trong mã CUDA C (sau này được hỗ trợ chính thức từ CUDA 4.0, nhưng " không chính thức "được hỗ trợ lâu hơn thế). CUDA luôn được gửi kèm với hướng dẫn đầy đủ về ngôn ngữ PTX với bộ công cụ, và nó được viết đầy đủ. ocelot project đã sử dụng tài liệu này để triển khai trình biên dịch chéo PTX của riêng chúng, cho phép mã CUDA chạy tự nhiên trên phần cứng khác, bộ xử lý x86 ban đầu, nhưng gần đây hơn GPU AMD.

Nếu bạn muốn xem GPU đang chạy như thế nào (trái ngược với những gì trình biên dịch phát ra), NVIDIA hiện cung cấp công cụ phân tách nhị phân có tên là cudaobjdump có thể hiển thị các đoạn mã máy thực tế trong mã được biên dịch cho GPU Fermi. Có một công cụ cũ, không chính thức được gọi là decuda hoạt động với GPU G80 và G90.

Có nói rằng, có rất nhiều điều cần học từ đầu ra PTX, đặc biệt là cách trình biên dịch áp dụng tối ưu hóa và hướng dẫn nào nó phát ra để thực hiện một số cấu trúc C nhất định. Mọi phiên bản bộ công cụ NVIDIA CUDA đều có a guide to nvccdocumentation for the PTX language. Có rất nhiều thông tin chứa trong cả hai tài liệu để tìm hiểu cách biên dịch mã hạt nhân CUDA C/C++ thành PTX và để hiểu hướng dẫn PTX sẽ làm gì.

Các vấn đề liên quan