KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I've been using Intel's SSE intrinsics for quite some time with good performance gains. Hence, I expected the AVX intrinsics to further speed-up my programs. This, unfortunately, was not the case until now. Probably I am doing a stupid mistake, so I would be very grateful if somebody could help me out. I use Ubuntu 11.10 with g++ 4.6.1. I compiled my program (see below) with g++ simpleExample.cpp -O3 -march=native -o simpleExample The test system has a Intel i7-2600 CPU. Here is the code which exemplifies my problem. On my system, I get the output 98.715 ms, b[42] = 0.900038 // Naive 24.457 ms, b[42] = 0.900038 // SSE 24.646 ms, b[42] = 0.900038 // AVX Note that the computation sqrt(sqrt(sqrt(x))) was only chosen to ensure that memory bandwith does not limit execution speed; it is just an example. simpleExample.cpp: #include <immintrin.h> #include <iostream> #include <math.h> #include <sys/time.h> using namespace std; // ----------------------------------------------------------------------------- // This function returns the current time, expressed as seconds since the Epoch // ----------------------------------------------------------------------------- double getCurrentTime(){ struct timeval curr; struct timezone tz; gettimeofday(&curr, &tz); double tmp = static_cast<double>(curr.tv_sec) * static_cast<double>(1000000) + static_cast<double>(curr.tv_usec); return tmp*1e-6; } // ----------------------------------------------------------------------------- // Main routine // ----------------------------------------------------------------------------- int main() { srand48(0); // seed PRNG double e,s; // timestamp variables float *a, *b; // data pointers float *pA,*pB; // work pointer __m128 rA,rB; // variables for SSE __
Tags (comma-separated)
Save Edits
Cancel