2011-08-24 24 views
6

SSE4.2 komut seti için destek alması beklenen bir Xeon W3550 işlemcim var ancak c programımda SSE2'yi geçmeye çalıştığımda bir derleyici hatası alıyorum. BenSSSE3 etkin cpu'da kullanılamıyor

$cat /procs/cpuinfo 

kullandığınızda

#error "SSE4.2 instruction set not enabled" 

bütün ilgili sse komut setlerini algılar ama

$cpuid 

sadece SSE ve SSE2 algılar.

İşletim sistemim kernel 2.6.38-11-jenerik ile 11.04 ubuntu'dur.

Bunu nasıl düzeltebileceğiniz hakkında bir fikriniz var mı? Teşekkürler.

DÜZENLEME: Steve-o'nun yorumuna dayalı bir güncelleme aşağıda. Üstbilgi dosyaları < * mmintrin.h> #ifndef preprocessor yönergesini kullanarak ilişkili oldukları sse sürümü için bir kontrol gerçekleştirir.

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

Yani soru neden bu SSSE3 etkin olma cpu rağmen geri sahte geliyor sonra sanırım.

+0

bir GCC sınırlama gibi talimatların derleme ana platform veya mimarlık sınırlı değildir geliyor. Sadece çalışma zamanındaki işlemci sınırını bir seg hatası veya benzeriyle görürsünüz. –

cevap

11

-msse4.2 ile bina yapmayı denedin mi? SSE4.2 yerleşik işlevleri ve kod üretimi için

  • Destek -msse4.2 yoluyla ulaşılabilir bulunmaktadır.
  • Her iki SSE4.1 ve SSE4.2 desteği, -msse4 aracılığıyla etkinleştirilebilir.

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

+1

Hayır Yapmadım. Bu mükemmel çalıştı ve kodum artık SSE3 komutlarını kullanarak başarıyla derleniyor ve çalışıyor! – NGaffney

+1

Ayrıca, CPU'nuzun desteklediği şeylere dayanan şeyleri etkinleştiren '-march = native' vardır. – caf

İlgili konular