Định cấu hình tính năng tối ưu hoá theo hướng dẫn của hồ sơ trong Visual Studio

Ra mắt dịch vụ hỗ trợ Tối ưu hoá theo hướng dẫn của hồ sơ trong AGDE phiên bản 22.2.71.

Xác định vị trí phần cài đặt PGO

Mở phần cài đặt dự án trên Solution Explorer (Trình khám phá giải pháp).

Trình đơn thuộc tính của Solution Explorer (Trình khám phá giải pháp) trong Visual Studio cho dự án hiện tại.

Hình 1: Cửa sổ Solution Explorer (Trình khám phá giải pháp) trong Visual Studio.

Hãy nhớ đặt Nền tảng của bạn thành một cấu hình Android (ví dụ: Android-arm64-v8a).

Trong bảng điều khiển bên trái, hãy chọn Configuration Properties > General (Thuộc tính cấu hình > Chung). Sau đó, tìm nhóm thuộc tính có tên là PGO.

Hộp thoại Project Properties (Thuộc tính của dự án) với các thuộc tính General (Chung) hiển thị, và phần cài đặt PGO được làm nổi bật

Hình 2: Hộp thoại Project Properties (Thuộc tính của dự án).

Bật bản dựng PGO-Instrumented (Được đo lường theo PGO) trong dự án

Thêm cấu hình mới có tên là Instrumented (Đo lường) vào dự án của bạn. Cấu hình này dựa trên cấu hình mà bạn sử dụng trong quá trình phát triển để kiểm thử. Đây sẽ là bản dựng được tối ưu hoá theo truyền thống (bạn vẫn có thể bật thêm các tính năng gỡ lỗi miễn là bạn giữ nguyên chế độ cài đặt tối ưu hoá của trình biên dịch).

Nhấp vào Configuration Manager… (Trình quản lý cấu hình…) trong hộp thoại Trang thuộc tính.

Phần đầu của hộp thoại Trang thuộc tính, hiển thị trình đơn thả xuống Active Solution Configuration (Cấu hình giải pháp đang hoạt động) và Platform (Nền tảng) cũng như nút Configuration Manager (Trình quản lý cấu hình)

Hình 3: Hộp thoại Configuration Manager (Trình quản lý cấu hình).

Trong hộp thoại Configuration Manager (Trình quản lý cấu hình), hãy chọn trình đơn thả xuống Active solution configuration (Cấu hình giải pháp đang hoạt động) rồi chọn <New…> (Mới).

Hộp thoại Configuration Manager (Trình quản lý cấu hình), trong đó trình đơn thả xuống Active Solution Configuration (Cấu hình giải pháp đang hoạt động) được mở và tuỳ chọn New (Mới) được làm nổi bật.

Hình 4: Tạo cấu hình bản dựng mới.

… và tạo một cấu hình PGO-Instrumented (Được đo lường theo PGO) mới.

Hộp thoại New Solution Configuration (Cấu hình giải pháp mới), tạo một cấu hình bản dựng PGO-Instrumented (Được đo lường theo PGO) mới dựa trên cấu hình bản phát hành hiện có

Hình 5: Hộp thoại New Solution Configuration (Cấu hình giải pháp mới).

Nếu muốn cho phép xây dựng ở chế độ PGO-Instrumented (Được đo lường theo PGO) để bạn có thể tạo một hồ sơ cho trò chơi của mình, hãy chọn Instrumented (Được đo lường) trong danh sách các tuỳ chọn cho tuỳ chọn cài đặt Profile-Guided Optimization Mode (Chế độ tối ưu hoá theo hướng dẫn của hồ sơ).

Hộp thoại Thuộc tính của dự án được mở tới phần cài đặt General (Chung), với chế độ cài đặt PGO hiển thị và Profile-Guided Optimization Mode (Chế độ tối ưu hoá theo hướng dẫn của hồ sơ) được đặt thành Instrumented (Được đo lường).

Hình 6: Hộp thoại Thuộc tính của dự án với các chế độ cài đặt PGO được làm nổi bật.

Đối với chế độ cài đặt Profile Guided Optimization Profiles (Cấu hình tối ưu hoá theo hướng dẫn của hồ sơ), hãy nhập đường dẫn đến thư mục đó để ghi tệp dữ liệu hồ sơ đầu ra thô vào thiết bị Android của bạn. Thông thường, giá trị này phải là /data/data/<package name>/cache/ – trong đó <package name> là tên gói đầy đủ của tệp APK, ví dụ: com.google.sample.tunnel.

Để biết thêm thông tin chuyên sâu về cách hoạt động của tính năng này, hãy xem tài liệu về Clang.

Ghi dữ liệu hồ sơ PGO-Instrumented (Được đo lường theo PGO) vào thiết bị của bạn

Hệ thống đo lường bằng PGO thường ghi dữ liệu PGO vào thiết bị khi một quy trình thoát. Trên Android, các ứng dụng không thoát mà luôn bị chấm dứt. Điều này nghĩa là chức năng "ghi vào ổ đĩa" mặc định không bao giờ kích hoạt, yêu cầu ứng dụng của bạn phải ghi dữ liệu PGO theo cách thủ công.

Ứng dụng của bạn phải gọi __llvm_profile_write_file một cách rõ ràng để ghi dữ liệu hồ sơ. Ký hiệu này chỉ có sẵn khi tạo một bản dựng PGO-Instrumented (Được đo lường theo PGO). Để làm việc này dễ dàng hơn, bạn nên sử dụng mẫu sau đây khi khai báo trước __llvm_profile_write_file.

#ifdef PGO_INSTRUMENT
extern "C" int __llvm_profile_write_file(void);
#else
extern "C" int __llvm_profile_write_file(void) { return 0; }
#endif

Việc gọi hàm này sẽ ghi dữ liệu hồ sơ vào thư mục mà bạn đã chỉ định trước đó.

Thực hiện một lượt chạy hồ sơ

Để tạo hồ sơ, bạn cần chạy APK được tạo bằng khả năng đo lường PGO trên thiết bị mục tiêu. Sau khi bạn thực thi mã theo mong muốn và đã kích hoạt lệnh gọi đến hàm __llvm_profile_write_file, ứng dụng sẽ ghi dữ liệu hồ sơ vào bộ nhớ.

Tại thời điểm này, hãy sao chép các hồ sơ từ thiết bị để trình biên dịch sử dụng.

Chuẩn bị dữ liệu hồ sơ để trình biên dịch sử dụng

Khi được sử dụng riêng biệt, llvm-profdata của công cụ dòng lệnh vận chuyển dưới dạng một phần của Clang/LLVM trong Android NDK sẽ được dùng để chuẩn bị tệp dữ liệu hồ sơ mà trình biên dịch sử dụng trong quá trình tối ưu hoá bản dựng theo hướng dẫn của hồ sơ.

AGDE tự động thực hiện bước này cho bạn bằng cách hợp nhất mọi tệp dữ liệu hồ sơ mà bạn đã thêm vào dự án, và sử dụng các tệp đó khi tuỳ chọn cài đặt Profile-Guided Optimization Mode (Chế độ tối ưu hoá theo hướng dẫn của hồ sơ) trong các trang thuộc tính của dự án được đặt thành Optimized (Tối ưu hoá).

Xây dựng dự án khi bật tính năng Tối ưu hoá theo hướng dẫn của hồ sơ

Sau khi bạn ghi lại (các) hồ sơ của mình và thêm hồ sơ đó vào dự án, trình biên dịch có thể dùng dữ liệu đó để tinh chỉnh tính năng tối ưu hoá bản dựng.

Tạo một cấu hình dự án mới cho Bản dựng PGO-Optimized (Được tối ưu hoá theo PGO) để bạn chỉ xây dựng ở chế độ này khi cần.

Hộp thoại New Solution Configuration (Cấu hình giải pháp mới) tạo một cấu hình bản dựng dựa trên Bản phát hành, nhưng lần này tên cấu hình bản dựng mới là PGO-Optimized (Được tối ưu hoá theo PGO).

Hình 7: Tạo cấu hình Bản dựng PGO-Optimized (Được tối ưu hoá theo PGO) mới.

Đặt tuỳ chọn cài đặt Profile-Guided Optimization Mode (Chế độ tối ưu hoá theo hướng dẫn của hồ sơ) trong các trang thuộc tính của dự án thành Optimized (Tối ưu hoá).

Hộp thoại Thuộc tính của dự án được mở tới phần cài đặt General (Chung), với chế độ cài đặt PGO hiển thị và Profile-Guided Optimization Mode (Chế độ tối ưu hoá theo hướng dẫn của hồ sơ) được đặt thành Optimized (Tối ưu hoá)

Hình 8: Đặt chế độ Tối ưu hoá PGO thành Optimized (Tối ưu hoá).

Sao chép các tệp từ thiết bị và thêm các tệp đó vào dự án của bạn trong Solution Explorer (Trình khám phá giải pháp). Trình biên dịch chọn các tệp dữ liệu hồ sơ này vào lần tiếp theo bạn tạo cấu hình PGO-Optimized (Được tối ưu hoá theo PGO) và dùng chúng để tinh chỉnh cách tối ưu hoá mã của bạn.

Bạn có thể sao chép các tệp dữ liệu hồ sơ vào dự án từ thiết bị bằng cách dùng ADB hoặc Trình khám phá trên thiết bị Android.

Sử dụng tính năng Tối ưu hoá theo hướng dẫn của hồ sơ bên ngoài AGDE

Nếu đang sử dụng một hệ thống xây dựng không được AGDE hỗ trợ, bạn có thể phải chỉnh sửa trực tiếp bản dựng của mình. Tài liệu về Clang trình bày các nút chuyển cần thiết – -fprofile-generate-fprofile-use.

Nếu bạn đang sử dụng một công cụ phần mềm trung gian cho trò chơi, hãy tham khảo tài liệu về công cụ đó để xem cách bật PGO (nếu được hỗ trợ).