J’essaye de comstackr un programme C en utilisant cmake qui utilise les composants insortingnsèques de SIMD. Quand j’essaye de le comstackr, j’obtiens deux erreurs
/ usr / lib / gcc / x86_64-linux-gnu / 5 / include / smminsortingn.h : 326: 1: erreur: l’inlining a échoué dans l’appel à always_inline ‘_mm_mullo_epi32’: déséquilibre d’option spécifique à la cible _mm_mullo_epi32 (__m128i __X, __m128i __y)
/ usr / lib / gcc / x86_64-linux-gnu / 5 / include / tmminsortingn.h : 136: 1: erreur: l’inlignage a échoué dans l’appel à always_inline ‘_mm_shuffle_epi8’: déséquilibre d’option spécifique à l’objective _mm_shuffle_epi8 (__m128i __X, __m128i __y)
Ce problème a déjà été résolu ici StackOverflow en définissant
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -msse4.1")
J’essaie la même chose et beaucoup d’autres options. Mais mon projet ne parvient toujours pas à comstackr.
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -msse4.1") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -sse4_1") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=nehalem") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -msse4.1 -msse4.2") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=native") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -ssse3")
Puisque vous comstackz du code C, pas du C ++, vous avez besoin de:
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -msse4.1")
Vous pouvez vous débarrasser de tous les autres -march XXX
et -msseXXX
.
Si vous utilisez un mélange de C et C ++, vous pouvez également append:
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -msse4.1")