2011-08-24 27 views
6

Tôi có bộ xử lý Xeon W3550 được cho là có hỗ trợ cho bộ lệnh SSE4.2 nhưng khi tôi thử và sử dụng bất kỳ thứ gì trong quá trình SSE2 trong chương trình c của mình, tôi nhận được lỗi trình biên dịch.Không thể sử dụng SSSE3 trên cpu được kích hoạt

#error "SSE4.2 instruction set not enabled" 

Khi tôi sử dụng

$cat /procs/cpuinfo 

nó phát hiện tất cả các bộ giảng dạy SSE có liên quan nhưng

$cpuid 

chỉ phát hiện SSE và SSE2.

Hệ điều hành của tôi là ubuntu 11.04 với hạt nhân 2.6.38-11-chung.

Bất kỳ ý tưởng nào về cách sửa lỗi này? Cảm ơn.

CHỈNH SỬA: Bản cập nhật dựa trên nhận xét của Steve-o bên dưới. Các tệp tiêu đề < * mmintrin.h> thực hiện kiểm tra phiên bản sse mà chúng được liên kết với bằng cách sử dụng chỉ thị tiền xử lý #ifndef ví dụ:

#ifndef __SSSE3__ 
#error "SSSE3 instruction set not enabled". 

Vì vậy, tôi đoán câu hỏi là tại sao điều này trở lại sai mặc dù CPU đang được kích hoạt SSSE3.

+0

Âm thanh như một giới hạn GCC, biên soạn các hướng dẫn không chỉ giới hạn cho nền tảng máy chủ hoặc kiến ​​trúc. Bạn sẽ chỉ nhận thấy giới hạn bộ xử lý khi chạy, với lỗi seg hoặc tương tự. –

Trả lời

11

Bạn đã thử xây dựng với -msse4.2?

  • Hỗ trợ cho các chức năng dựng sẵn SSE4.2 và tạo mã là có sẵn qua -msse4.2.
  • Có thể bật cả hỗ trợ SSE4.1 và SSE4.2 qua -msse4.

http://gcc.gnu.org/gcc-4.3/changes.html

+1

Không. Điều này làm việc hoàn hảo và mã của tôi bây giờ đang biên dịch và chạy thành công bằng cách sử dụng lệnh SSE3, cảm ơn! – NGaffney

+1

Ngoài ra còn có '-march = native' sẽ cho phép mọi thứ dựa trên những gì CPU của bạn hỗ trợ. – caf

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