производительность SSE и AVX, когда ширина полосы памяти ограничена

В приведенном ниже коде я изменилdataLen» и получить другую эффективность.

dataLen = 400 SSE время: 758000 долларов США AVX время: 483000 долларов США SSE> AVX

dataLen = 2400 SSE время: 4212000 долларов США AVX время: 2636000 долларов США SSE> AVX

dataLen = 2864 времени SSE: 6115000 долларов США, время AVX: 6146000 долларов США SSE ~ = AVX

dataLen = 3200 SSE время: 8049000 сша AVX время: 9297000 сша SSE < AVX

dataLen = 4000 SSE время: 10170000us AVX время: 11690000us SSE < AVX

Код SSE и AVX может быть упрощен следующим образом: buf3 [i] + = buf1 [1] * buf2 [i];

#include "testfun.h"
#include 
#include 
#include 
#include "immintrin.h"
using namespace std::chrono;

void testfun()
{
int dataLen = 4000; 
int N = 10000000;
float *buf1 = reinterpret_cast(_aligned_malloc(sizeof(float)*dataLen, 32));
float *buf2 = reinterpret_cast(_aligned_malloc(sizeof(float)*dataLen, 32));
float *buf3 = reinterpret_cast(_aligned_malloc(sizeof(float)*dataLen, 32));
for(int i=0; i

Ответы на вопрос(2)

Ваш ответ на вопрос