Deaktivieren Sie die AVX2-Funktionen auf Nicht-Haswell-Prozessoren
Ich habe AVX2-Code geschrieben, der auf einem Haswell i7-Prozessor ausgeführt werden soll. Dieselbe Codebasis wird auch auf Nicht-Haswell-Prozessoren verwendet, bei denen derselbe Code durch ihre SSE-Entsprechungen ersetzt werden sollte. Ich habe mich gefragt, ob es für den Compiler eine Möglichkeit gibt, AVX2-Anweisungen auf Nicht-Haswell-Prozessoren zu ignorieren. Ich brauche so etwas wie:
public void useSSEorAVX(...){
IF (compiler directive detected AVX2)
AVX2 code (this part is ready)
ELSE
SSE code (this part is also ready)
}
}
Im Moment kommentiere ich verwandten Code aus, bevor ich ihn kompiliere, aber es muss einen effizienteren Weg geben, dies zu tun. Ich benutze Ubuntu und gcc. Danke für Ihre Hilfe.