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
Author: jeffamstutz
Building a C++ SIMD Abstraction (3/N) – A Tour of ‘tsimd’
In this post I want to introduce the library I've been working on for a couple of months now: tsimd. My last post looked at what is out there for C++ developers to vectorize code, motivating the need for tsimd. You don't have to agree with everything I say (it's just an opinion!), but have … Continue reading Building a C++ SIMD Abstraction (3/N) – A Tour of ‘tsimd’
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”…
Plain Pointers Considered Harmful
It's all in title: I argue that the use of a plain pointer should be avoided as I believe they are generally harmful. Before an army of disagreeing C++ programmers come at me angry with torches and pitchforks, I want to preface this with saying that I primarily care about C++ interfaces. What I mean is if … Continue reading Plain Pointers Considered Harmful
What Features I Like the Most in C++11 (Part 3)
After a week off from writing I have decided to add another post in my C++11 favorite features series. I took a look back at Part 1 and Part 2 and (with some prodding from Twitter) noticed there are a few other features I love using in C++11. The list is getting pretty long now, but … Continue reading What Features I Like the Most in C++11 (Part 3)
What Features I Like the Most in C++11 (Part 2)
My last post started a list of features in C++11 that I enjoy using and think C++ programmers should be aware of moving forward. However, the list was getting too long, so this post is a continuation of that list. In case you missed it, have a look at Part 1. The list continues... Defaulted and … Continue reading What Features I Like the Most in C++11 (Part 2)
What Features I Like the Most in C++11 (Part 1)
I recently received some feedback from a colleague that my posts have made the assumption that readers understand C++ features added by the C++11 standard. Because I agree with this observation I want to take a brief step back and look at some C++11 features which have been very useful to me and the projects I … Continue reading What Features I Like the Most in C++11 (Part 1)
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