Building a C++ SIMD Abstraction (4/N) – Type Traits Are Your Friend

In this post I want to share with you how type traits can be an asset to C++ template code. Given that tsimd is based on a core template over a collection of values stored in a SIMD register, there's plenty of motivation for finding ways to keep the interface and implementation easy to use and difficult … Continue reading Building a C++ SIMD Abstraction (4/N) – Type Traits Are Your Friend

Building a C++ SIMD abstraction (2/N) – Status Quo (My Perspective)

Before looking at what SIMD abstraction I've come up with (that, by the way, isn't super novel), I think it's important to look at the status quo of existing methods for vectorizing C++ code. If you haven't yet, have a look at my previous post for motivation on why vectorizing code is useful. In my … Continue reading Building a C++ SIMD abstraction (2/N) – Status Quo (My Perspective)

Building a C++ SIMD abstraction (1/N) – Motivation

Howdy everyone out there! After a bit of a hiatus from writing, CppCast recently had Jonathan Boccara on as a guest to talk about blogging which has inspired me to get back to expository writing again. Recent developments in OSPRay since the summer have marked several deep changes and additions of our infrastructure, including some rewrites … Continue reading Building a C++ SIMD abstraction (1/N) – Motivation

“Over-engineered” code? I think you really mean “under-engineered”…

In the world of software development, the term "over-engineering" gets used more that I like. In my experience "over-engineering" is a label often used to characterize a negative opinion toward code which has an undesirable amount of complexity. In this case, I agree with the sentiment, but very much disagree with the choice in wording … Continue reading “Over-engineered” code? I think you really mean “under-engineered”…

Thread Parallelism (Part 3): A Very Brief Look at Performance

This is the final of my 3 part series looking at thread parallelism, specifically at existing solutions providing a generic parallel-for abstraction. In case you missed it, have a look at Part 1 and Part 2. This post is going to briefly look at performance of my last post's parallel_for() wrapper inside OSPRay. I do recognize … Continue reading Thread Parallelism (Part 3): A Very Brief Look at Performance