2010-03-23 41 views
7

Tôi quan tâm đến việc biết GCC khác với ICC của Intel như thế nào về các mức tối ưu hóa và phục vụ cho kiến ​​trúc bộ vi xử lý cụ thể. Tôi đang sử dụng GCC 4.1.2 20070626 và ICC v11.1 cho Linux.ICC vs GCC - Kiến trúc tối ưu và CPU

Mức độ tối ưu hóa của ICC (O1 đến O3) khác với GCC như thế nào, nếu chúng khác nhau?

ICC có thể phục vụ riêng cho các kiến ​​trúc khác nhau (IA-32, intel64 và IA-64). Tôi đã đọc rằng GCC có tùy chọn trình biên dịch -march mà tôi nghĩ là tương tự, nhưng tôi không thể tìm thấy một danh sách các tùy chọn để sử dụng. Tôi đang sử dụng Intel Xeon X5570, phiên bản 64 bit. Có bất kỳ tùy chọn trình biên dịch GCC nào khác mà tôi có thể sử dụng để phục vụ các ứng dụng của mình cho CPU Intel 64 bit không?

Cảm ơn bạn.

Kính trọng, Rayne

Trả lời

1

Xem phần 3.17.15 trong cuốn hướng dẫn GCC, ie386 and x86-64 Options để xem danh sách đầy đủ và mô tả của tất cả các tùy chọn áp dụng đối với những kiến ​​trúc (IA-64 là Itanium, và nó không chắc bạn có một những).

Các tùy chọn quan trọng nhất trong bối cảnh này là:

  • -m64 Tạo mã 64-bit;
  • -march= Tạo hướng dẫn cho loại CPU cụ thể; và
  • -mtune= Điều chỉnh mã cho loại CPU cụ thể.
-1

tùy chọn điều chỉnh, tháo rời mã và thấy sự khác biệt

+0

không phải là câu trả lời rất hữu ích vì điều này sẽ chỉ áp dụng cho mã mà anh đã có và không áp dụng cho mã mà anh có thể viết trong tương lai. –

+2

và làm cách nào để đo lường hiệu quả của trình tối ưu hóa GCC hoặc ICC của mã không tồn tại? –

1

icc -O2 -unroll2 là tương đương với gcc-O3 -ffast-toán -fno-cx-giới hạn tầm -funroll-vòng - param max-unroll-times = 2 -O1 không cho phép tự động vector hóa simd cho trình biên dịch, vì vậy có ít sự khác biệt. Cả icc và gcc đều cung cấp các trình biên dịch được xây dựng riêng để nhắm vào chế độ 64 bit; nếu cả hai trình biên dịch gcc đều được cài đặt, lời khuyên ở trên về -m64 sẽ được hỗ trợ. icc hy vọng bạn chọn, nếu cả hai được cài đặt, bằng cách tìm nguồn cung ứng kịch bản thiết lập đường dẫn của họ. -march = native là tùy chọn gcc để sử dụng tập lệnh đầy đủ của máy xây dựng. icc có thể quan sát điều này nhưng có một tùy chọn tương đương -xHost. Tại thời điểm câu hỏi này, tùy chọn icc đó có thể chỉ hoạt động đối với các CPU Intel.

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