벡터의 모든 요소를 추가하기 위해 인라인 함수를 구현했지만 비 SIMD 추가보다 빠르지는 않습니다. 선언 :이 벡터의 모든 int 값을 추가 내 두 가지 방법 #define N 128
#define M N
int __attribute__((aligned(32)))temp8[8];
__m256i vec;
int __attribute__((align
this question에 따르면 이번에는 5 x 5 및 7 x 7의 가로 덧셈을 구현했습니다. 제대로 작동하지만 빠르지 않습니다. 더 빠를 수 있습니까? hadd과 다른 명령어를 사용하려고했지만 개선이 제한되었습니다. 예를 들어, _mm256_bsrli_epi128을 사용하면 약간 더 나아졌지만 차선 때문에 이점을 망칠 여분의 순열이 필요합니다. 따라서
인텔 SSE4.2 내장 함수에는 64 비트 CRC 함수가 있습니다. unsigned __int64 _mm_crc32_u64 (unsigned __int64 crc, unsigned __int64 v)
그러나 AVX2 내장 함수에서 256 비트 버전의 CRC 계산을 찾을 수 없습니다. 내 프로그램에서 256 비트 변수 (__m256i)를 사용하고 있으므로
AVX (ARM NEON에서 제공)를 처음 접했고 AVX에 많은 U8 산술이 부족하다는 사실에 놀라움을 금치 못했습니다. 는 그러므로 나는 인라인 함수와 max(a,b)-min(a,b)에 의지했다 : static inline __m256i _mm256_abd_epu8(__m256i a, __m256i b)
{
return _mm256_sub_ep
AVX2 벡터를 상수로 나누고 싶습니다. 나는 this question과 많은 다른 페이지들을 방문했다. 도움이 될만한 무엇인가를 보니 Fixed-point arithmetic와 나는 이해하지 못했다. 그래서 문제는이 부서가 병목입니다. I는 두 가지 시도 : 먼저 플로트와 AVX 명령으로 동작 할 캐스팅 : 첫번째 방법에서는 //outside the bo
저는 심플한 초보자입니다. (AVX2 호환 컴퓨터를 사용하고 있기 때문에) 주제에 관한 this 기사를 읽었습니다. 이제 포인터가 정렬되었는지 확인하기 위해 this 질문을 읽었습니다. #include <iostream>
#include <immintrin.h>
#define is_aligned(POINTER, BYTE_COUNT) \
(((
인텔 내장 함수를 사용하여 여러 개의 단 정밀도 연산을 병렬로 수행하는 알고리즘을 작성했습니다. 내 알고리즘의 각 반복의 결과는 단일 256 비트 벡터 (__m256)의 0이 아닌 항목의 수입니다. 예를 들어 : 반복의 결과가 4 벡터의 수가 제로가 아닌 항목을 계산하는 가장 빠른 방법은 무엇입니까이다 00000000 FFFFFFFF 00000000 000