Chương 47 simd ưu hóa cùng chú ý hạng mục
SIMD( Một ngón tay lệnh số nhiều căn cứ lưu ) là một loại song hành tính toán kỹ thuật, cho phép một cái vi xử lý tại cùng một đồng hồ chu kỳ bên trong xử lý nhiều cái số liệu.
Cái này khiến vi xử lý có thể cao hiệu xử lý vectơ cùng ma trận tính toán.
Phía dưới là một chút SIMD kỹ thuật ứng dụng thực tế nêu ví dụ:
1.
Hình ảnh xử lý:
Tại hình ảnh Xử Lý lĩnh vực, SIMD kỹ thuật bị đông đảo ứng dụng tại hình ảnh thu phóng, xoay tròn, sóng lọc chờ thao tác.
Tỷ như, đối với một tấm lớn nhỏ vì NxN hình ảnh, sử dụng SIMD kỹ thuật có thể thực hiện N cái pixel giá trị đồng thời xử lý, đề cao thật lớn tốc độ xử lý.
2.
Âm tần xử lý:
Âm tần Xử Lý lĩnh vực đồng dạng được lợi tại SIMD kỹ thuật, như âm tần tín hiệu sóng lọc, hỗn vang dội cùng cân đối các loại thao tác.
Thông qua đối với nhiều cái âm tần hàng mẫu đồng thời tiến hành xử lý, có thể rõ rệt đề cao âm tần xử lý tốc độ cùng hiệu suất.
3.
Khoa học tính toán:
Tại khoa học tính toán lĩnh vực, SIMD kỹ thuật có thể dùng tại ma trận tính toán, vật lý mô phỏng cùng ưu hóa toán pháp các loại nhiệm vụ. Thông qua tại cùng một đồng hồ chu kỳ bên trong xử lý nhiều cái số liệu, có thể tăng tốc đại quy mô ma trận tính toán, phương trình bậc một cầu giải và trị số tích phân các loại tính toán nhiệm vụ.
4.
Máy móc học tập:
Mặc dù SIMD tại máy móc trong học tập ứng dụng tương đối hơi ít, nhưng ở một ít tràng cảnh phía dưới, như cuốn tích mạng lưới thần kinh (CNN) bên trong, có thể sử dụng SIMD kỹ thuật gia tốc ma trận tính toán.
Tại chiều sâu học tập hệ thống nhưcùng PyTorch bên trong, có thể nhằm vào đặc biệt phần cứng ( Nhưtiến hành ưu hóa, lấy lợi dụng SIMD kỹ thuật gia tốc tính toán.
Cần thiết phải chú ý chính là, cũng không phải là tất cả vi xử lý đều duy trì SIMD kiến trúc tập lệnh.
Trước mắt, thường gặp ủng hộ SIMD kỹ thuật vi xử lý cơ cấu có: x86( Như SSE, AVX series mở rộng kiến trúc tập lệnh ), ARM( Như NEON) cùng MIPS( Như MDMX).
Muốn ưu hóa SIMD kiến trúc tập lệnh sử dụng, cần chú ý phía dưới mấy phương diện:
1.
Bảo đảm trình biên dịch ủng hộ SIMD:
Đầu tiên, cần bảo đảm trình biên dịch ủng hộ chỗ mục tiêu lý khí cơ cấu SIMD kiến trúc tập lệnh.
Số đông hiện đại trình biên dịch ( Nhưđẳng ) đều duy trì tự động vectơ hóa, tức trình biên dịch sẽ căn cứ vào dấu hiệu bên trong tuần hoàn và mấy tổ thao tác tự động cắm vào SIMD chỉ lệnh.
Có thể thông qua điều chỉnh trình biên dịch tuyển hạng ( Nhưđẳng ) tới khống chế tự động vectơ hóa hành vi.
2.
Thủ động vectơ hóa dấu hiệu:
Mặc dù trình biên dịch có thể thực hiện trình độ nhất định tự động vectơ hóa, nhưng thủ động vectơ hóa dấu hiệu bình thường có thể thu được cao hơn tính năng.
Vì thủ động vectơ hóa dấu hiệu, có thể áp dụng phía dưới sách lược:
- Sử dụng bên trong liên tổng hợp: Tại dưới một ít tình huống, có thể thông qua bên trong liên tổng hợp trực tiếp cắm vào SIMD chỉ lệnh.
Nhưng mà, loại phương pháp này cấy ghép tính chất độ chênh lệch, có thể không thích hợp tại tất cả vi xử lý cơ cấu.
- Sử dụng SIMD chỉ lệnh kho hàm số: Rất nhiều SIMD kho cung cấp nhằm vào phổ biến thao tác vectơ hóa thực hiện.
Tỷ như, Intel cung cấpkho cùng ARM cung cấpkho.
3.
Số liệu sắp đặt cùng phỏng vấn hình thức:
Vì đề cao SIMD chỉ lệnh sử dụng hiệu suất, cần chú ý số liệu sắp đặt cùng phỏng vấn hình thức.
Tận khả năng sử dụng liên tục bộ nhớ tồn trữ số liệu kết cấu, đồng thời bảo đảm bộ nhớ phỏng vấn bước dài cùng SIMD thanh ghi độ rộng phối hợp.
Tỷ như, tại xử lý 4 cái Đan Tinh Độ phù điểm số vectơ lúc, hẳn là sử dụng liên tục 128 vị bộ nhớ không gian.
4.
Đầy đủ lợi dụng thanh ghi văn kiện:
SIMD kiến trúc tập lệnh bình thường có nhiều cái thanh ghi văn kiện, có thể lợi dụng bọn chúng đồng thời xử lý nhiều cái số liệu nguyên tố. Tỷ như, tại xử lý 4 cái Đan Tinh Độ phù điểm số vectơ lúc, có thể đưa chúng nó chia hai tổ, mỗi tổ sử dụng hai cái thanh ghi, từ đó thực hiện cao hơn song hành độ.
5.
Tránh không cần thiết bộ nhớ phỏng vấn:
SIMD chỉ lệnh thi hành tốc độ bị giới hạn bộ nhớ phỏng vấn tốc độ. Bởi vậy, ứng tận lực giảm bớt không cần thiết bộ nhớ phỏng vấn.
Tỷ như, tại trong tuần hoàn, có thể đem mấy tổ nguyên tố đọc vào thanh ghi, tiếp đó tại trong thanh ghi hoàn thành tính toán, cuối cùng đem kết quả viết trở về bộ nhớ.
6.
Chi nhánh dự đoán cùng dây chuyền sản xuất ưu hóa:
Bởi vì SIMD chỉ lệnh bình thường cần nhiều cái đồng hồ chu kỳ mới có thể hoàn thành, bởi vậy cần chú ý chi nhánh dự đoán cùng dây chuyền sản xuất ưu hóa.
Tận lực giảm bớt điều kiện chi nhánh cùng nhảy chuyển, để bảo trì chỉ lệnh lưu tính liên tục.
Ngoài ra, bảo đảm tăng thêm cùng tồn trữ thao tác cùng tính toán thao tác ở giữa ỷ lại quan hệ, lấy tối đại hóa chỉ lệnh cấp song hành tính chất.
7.
Tính năng phân tích cùng điều ưu:
Sử dụng tính năng phân tích công cụ ( Nhưđẳng ) tới phân biệt dấu hiệu bên trong tính năng bình cảnh.
Nhằm vào bình cảnh tiến hành điều ưu, đồng thời căn cứ vào tính năng kết quả phân tích điều chỉnh SIMD chỉ lệnh sử dụng sách lược.
Tại sử dụng SIMD kiến trúc tập lệnh lúc, cần thiết phải chú ý phía dưới mấy điểm:
1.
Số liệu xếp hợp lý:
SIMD chỉ lệnh yêu cầu số liệu ở bên trong tồn bên trong địa chỉ là tự nhiên xếp hợp lý. Tỷ như, tại sử dụng 32 vị rộng SIMD thanh ghi xử lý số liệu lúc, yêu cầu số liệu nơi khởi đầu chỉ là 4 bội số. Nếu như số liệu không có chính xác xếp hợp lý, tính năng có thể sẽ rõ rệt giảm xuống, thậm chí dẫn đến chương trình sai lầm.
2.
Thanh ghi độ rộng cùng nguyên tố loại hình:
Khác biệt SIMD kiến trúc tập lệnh có khác biệt thanh ghi độ rộng cùng nguyên tố loại hình.
Tỷ như, x86 SSE kiến trúc tập lệnh sử dụng 128 vị rộng thanh ghi, có thể tồn trữ 4 cái Đan Tinh Độ phù điểm số;ARM NEON kiến trúc tập lệnh sử dụng 128 vị rộng thanh ghi, có thể tồn trữ 4 cái 32 vị số nguyên hoặc 8 cái 16 vị số nguyên.
Tại sử dụng SIMD chỉ lệnh lúc, cần bảo đảm thanh ghi độ rộng cùng nguyên tố loại hình cùng ứng dụng trong trình tự số liệu kết cấu xứng đôi.
3.
Bộ nhớ phỏng vấn hình thức:
Tận khả năng sử dụng liên tục bộ nhớ phỏng vấn hình thức, lấy tối đại hóa SIMD chỉ lệnh sử dụng hiệu suất.
Tránh vượt qua nhiều cái cache làm được phỏng vấn, bởi vì khả năng này dẫn đến tính năng hạ xuống.
4.
Số liệu tính ỷ lại:
Khi sử dụng SIMD chỉ lệnh xử lý có số liệu ỷ lại quan hệ tính toán lúc, cần bảo đảm ỷ lại quan hệ sẽ không phá hư chỉ lệnh cấp song hành tính chất.
Có thể sử dụng che mã thanh ghi tới xử lý có ỷ lại quan hệ số liệu nguyên tố, từ đó bảo trì song hành độ.
5.
Trình biên dịch ưu hóa:
Trình biên dịch bình thường sẽ tự động đối với dấu hiệu tiến hành vectơ hóa, nhưng có khi tự động vectơ hóa có thể không cách nào đạt đến tốt nhất tính năng.
Thủ động điều chỉnh trình biên dịch tuyển hạng hoặc sử dụng bên trong liên tổng hợp có thể cung cấp tốt hơn tính năng.
Nhưng mà, thủ động điều chỉnh cần cân nhắc cấy ghép tính chất cùng khai phát hiệu suất.
6.
Tính năng khảo thí cùng phân tích:
Tại khai phát quá trình bên trong, cần sử dụng tính năng phân tích công cụ ( Nhưđẳng ) tới phân biệt tính năng bình cảnh.
Căn cứ vào tính năng kết quả phân tích, điều chỉnh SIMD chỉ lệnh sử dụng sách lược, lấy đề cao chương trình tính năng.
7.
Cấy ghép tính chất cùng kiêm dung tính:
Tại sử dụng SIMD chỉ lệnh lúc, cần thiết phải chú ý chỗ mục tiêu lý khí cơ cấu ủng hộ tình huống.
Bảo đảm dấu hiệu kiêm dung tính cùng có thể cấy ghép tính chất, để tại khác biệt vi xử lý cơ cấu bên trên vận hành.
8.
Dấu hiệu có thể đọc tính chất cùng có thể giữ gìn tính chất:
Quá độ sử dụng SIMD chỉ lệnh có thể sẽ dẫn đến dấu hiệu khó mà đọc cùng giữ gìn.
Trong biên chế viết dấu hiệu lúc, ứng cân bằng tính năng cùng có thể đọc tính chất.
Tại mang tính then chốt có thể bình cảnh chỗ sử dụng SIMD chỉ lệnh, mà tại cái khác bộ phận sử dụng phổ thông dấu hiệu.