Tag Archives: Optimization

Adventure with SIMD – Part 5 – Detecting legal SIMD instructions

When i first started looking into SIMD/AutoVectorization there were a couple of questions that first came into my head. If the compiler is doing this automatically for me what version of the SIMD instructions is it using? What if my … Continue reading

Posted in C++, Development, Programming | Tagged , , , , , | 1 Comment

Adventures with SIMD – Part 4 – SIMD Intrinsics

Looking at how we write a simple SIMD loop with Intrinsics Continue reading

Posted in C++, Development, Programming | Tagged , , , , | 1 Comment

Recording Timings for Optimization Measurement Experiments

In a number of my blog posts up to this point I’ve used a simple timing function call recordTime() to record time between 2 points in the code. I’ve been doing optimization enough to know you must measure everything. There … Continue reading

Posted in C++, Development, Programming | Tagged , , , | Leave a comment

Adventures in SIMD – Part 3 – OpenMP

I know before anyone says anything I know OpenMP isn’t SIMD, but in the process of evaluating SIMD and its suitability I do not want to overlook similar technologies. So up to now my interactions with OpenMP have really been … Continue reading

Posted in C++, Development, Programming | Tagged , , , , , , | Leave a comment

Adventures in SIMD – Part2 – AutoVectorization

AutoVectorization ideally should solve all our SIMDization problems, it is where the compiler looks at our code and decides it can craft better vectorized code for us and assembles the instructions using SIMD vector optimized instructions. In practice AutoVectorization is … Continue reading

Posted in C++, Development | Tagged , , , , , | Leave a comment

A loop is a loop is a loop…or is it

This is a aside to my SIMD posts, but it really shows AutoVectorization in action.. You might think all for next loops were built equal, but recently whilst looking at a tight looping in Intel VTune I was surprised that the loop … Continue reading

Posted in C++, Development | Tagged , , , , | Leave a comment

Adventures in SIMD – Part 1- Introduction

Over the last 20 years we’ve seen massive growth in the speeds of CPU architectures where clock speeds where constantly increasing, however in the last couple of years we’ve seen this growth drastically slow. We’ve seen numbers of cores grow … Continue reading

Posted in C++, Development | Tagged , , , , , , , | Leave a comment

When MOD went bad

When I recently used Intel VTune to understand why a hash based container seemed to be slow, it showed me something that surprised me. A “General Exploration” analysis showed excessive “DIV” instructions, caused by a mod function (e.g.) (in a tight loop) … Continue reading

Posted in C++ | Tagged , , | 1 Comment

33 years of developing!

Years after I first started programming on my ZX Spectrum, I still find myself doing what I love and getting paid for it, only the world has a much different way of learning than it used to. Gone are the … Continue reading

Posted in C++, Development | Tagged , , , , | Leave a comment