Here’s another deep session for C&B 2012 on August 5-8 – if you haven’t registered yet, register soon. We got a bigger venue this time, but as I write this the event is currently almost 75% full with five weeks to go.
I know, I’ve already posted three sessions and a panel. But there’s just so much about C++11 to cover, so here’s a fourth brand-new session I’ll do at C&B 2012 that goes deeper on its topic than I’ve ever been willing to go before.
atomic<> Weapons: The C++11 Memory Model and Modern Hardware
This session in one word: Deep.
It’s a session that includes topics I’ve publicly said for years is Stuff You Shouldn’t Need To Know and I Just Won’t Teach, but it’s becoming achingly clear that people do need to know about it. Achingly, heartbreakingly clear, because some hardware incents you to pull out the big guns to achieve top performance, and C++ programmers just are so addicted to full performance that they’ll reach for the big red levers with the flashing warning lights. Since we can’t keep people from pulling the big red levers, we’d better document the A to Z of what the levers actually do, so that people don’t SCRAM unless they really, really, really meant to.
This session covers:
- The facts: The C++11 memory model and what it requires you to do to make sure your code is correct and stays correct. We’ll include clear answers to several FAQs: “how do the compiler and hardware cooperate to remember how to respect these rules?”, “what is a race condition?”, and the ageless one-hand-clapping question “how is a race condition like a debugger?”
- The tools: The deep interrelationships and fundamental tradeoffs among mutexes, atomics, and fences/barriers. I’ll try to convince you why standalone memory barriers are bad, and why barriers should always be associated with a specific load or store.
- The unspeakables: I’ll grudgingly and reluctantly talk about the Thing I Said I’d Never Teach That Programmers Should Never Need To Now: relaxed atomics. Don’t use them! If you can avoid it. But here’s what you need to know, even though it would be nice if you didn’t need to know it.
- The rapidly-changing hardware reality: How locks and atomics map to hardware instructions on ARM and x86/x64, and throw in POWER and Itanium for good measure – and I’ll cover how and why the answers are actually different last year and this year, and how they will likely be different again a few years from now. We’ll cover how the latest CPU and GPU hardware memory models are rapidly evolving, and how this directly affects C++ programmers.
- Coda: Volatile and “compiler-only” memory barriers. It’s important to understand exactly what atomic and volatile are and aren’t for. I’ll show both why they’re both utterly unrelated (they have exactly zero overlapping uses, really) and yet are fundamentally related when viewed from the perspective of talking about the memory model. Also, people keep seeing and asking about “compiler-only” memory barriers and when to use them – they do have a valid-though-rare use, but it’s not the use that most people are trying to use them for, so beware!
For me, this is going to be the deepest and most fun C&B yet. At previous C&Bs I’ve spoken about not only code, but also meta topics like design and C++’s role in the marketplace. This time it looks like all my talks will be back to Just Code. Fun times!
Here a snapshot of the list of C&B 2012 sessions so far:
Universal References in C++11 (Scott)
You Don’t Know [keyword] and [keyword] (Herb)
Convincing Your Colleagues (Panel)
Initial Thoughts on Effective C++11 (Scott)
Modern C++ = Clean, Safe, and Faster Than Ever (Panel)
Error Resilience in C++11 (Andrei)
C++ Concurrency – 2012 State of the Art (and Standard) (Herb)
C++ Parallelism – 2012 State of the Art (and Standard) (Herb)
Secrets of the C++11 Threading API (Scott)
atomic<> Weapons: The C++11 Memory Model and Modern Hardware (Herb)
It’ll be a blast. I hope to see many of you there. Register soon.
June 29, 2012 at 12:42 pm
[…] I know, I’ve already posted three sessions and a panel. But there’s just so much about C++11 to cover, so here’s a fourth brand-new session I’ll do at C&B 2012 that goes deeper on its topic than I’ve ever been willing to go before. atomic<> Weapons: The C++11 Memory Model and Modern Hardware […]
June 29, 2012 at 1:29 pm
Herb,
A $3000+ USD cost in this financial climate for a 2 day course is not justifiable for the overwhelming majority of people.
Could you kindly upload a video of the talk or at the very least provide the slides on-line for free?
July 2, 2012 at 12:48 pm
FYI, it’s actually a 3 day course (3 1/2 days including the opening reception). I bought the slides for the first year, attended last year, and am attending again this year. The slides were useful, and the videos of the talks too, but the benefit of the course goes far beyond just the presentations themselves. It’s a chance to meet and talk with some of the most high-level C++ people around, and have some really interesting discussions. It’s unfortunate that you don’t have room in your training budget for this.
July 10, 2012 at 1:38 am
Hi,
It is great to see the C++ community waking up to this reality. I program in Java and C++ and have been quite interested to see how far behind the curve in the ‘you cannot ignore anything’ view of the world C++ has been. The idea that there are things what one should not teach in the innards of a language is sadly inappropriate. The reason is simply that someone somewhere will know it. If your students/co-workers do not know it - they laws of free market competition will kick in and the rest is just the way it is.
As a Java programmer I have, several times, gone into the source code of the JVM to figure out what is going on to get that extra 10% of performance (sometime 100%). It is work like that which has allowed Java to claw its way back from having a bad performance reputation. So it is with C++, reputations take years to build, months to loose and decades to recover.
The new standard brings in potential performance killers like shared pointers with their atomic underpinnings. The implications of these techniques cannot be ignored any more than the implications of garbage collection can on a VM.
Good on you for picking up on this quickly and making the pivot!
July 16, 2012 at 4:27 pm
3 grand for an individual ticket to this thing? You gotta be KIDDING me.
July 25, 2012 at 8:00 am
Nope, that’s correct, and it’s worth every penny. Apparently other people think so too, because they sold out their first one 2 years ago and due to the length of the wait list, set up a second one later that year. They then almost sold out last year’s which had 2/3 more seats, IIRC, and have sold about the same number of tickets to this year’s as they did to last year’s, with still 10 days ago. This is not aimed at your average C++ developer, and the max attendance and cost reflect that.
July 25, 2012 at 8:03 am
But what about us poor “average C++ developers” that want to enjoy it too? Is this thing only for royalty? The prices actually piss me off, it’s offensive. It’s like I’m not good enough or allowed to take in knowledge.
July 26, 2012 at 10:16 am
If you don’t feel it’s worth that much, or you don’t have a training budget for it, then don’t go. That doesn’t mean there’s anything inherently wrong with the cost.
July 26, 2012 at 11:36 am
There *is* something inherently wrong with the cost. If you saw that the average price for a fountain soda was $300, wouldn’t that be an outrage? What if the cost of gas was $45 per gallon?
The way the pricing is setup is only feasible for companies that take employees there for training. But it (by-design) seems to eliminate people that want to go on personal interest. I could take a week long vacation to a tropical island for 3 grand, just to put it into perspective for you.
July 31, 2012 at 10:20 am
“There *is* something inherently wrong with the cost.”
Well, you are certainly entitled to you opinion, but that doesn’t mean that it is a fact.
“If you saw that the average price for a fountain soda was $300, wouldn’t that be an outrage? What if the cost of gas was $45 per gallon?”
Yes, but this conference is not a necessity. The inability for you to attend isn’t going to mean that you can’t get to the store to buy food, or that you must immediately stop being a C++ programmer.
“The way the pricing is setup is only feasible for companies that take employees there for training. But it (by-design) seems to eliminate people that want to go on personal interest. I could take a week long vacation to a tropical island for 3 grand, just to put it into perspective for you.”
I don’t need perspective. I know it is expensive. I would not be attending this if I didn’t have a training budget for it at my company, and if the people I work for didn’t feel that it was a good thing for me to attend. We are not sending other people from the company because we don’t have that much extra in our budget, and other people are attending other things. If I could not afford it, then I would simply find other avenues of training. We couldn’t afford it the first year, so instead we purchased the handouts when they were made available following the conference.
The only thing inherently wrong here is that you feel entitled to attend this event for less than what the organizers are charging for it. What right do you have to insist that Herb, Scott, and Andrei charge less for their considerable time and effort spent organizing the conference, preparing brand new presentation materials, and then spending 4 days presenting it and then having discussions with the attendees?
Herb has already said that he’s going to be making most if not all of his recordings available on-line FOR FREE. If you want to attend, meet the presenters, ask them questions, engage in discussions with them, and network with the other attendees, then you have to pay for it. If you just want to see the presentations, then they’ll be available FOR FREE later. You can’t get any cheaper than that.
July 31, 2012 at 10:32 am
I think you’ve completely missed the point of my analogies. Necessity or not is irrelevant - there’s a certain “reasonable” expectation of what something should cost. Statistically this price would be approved by majority of people in a survey. I guarantee that if you take 100 C++ programmers in the game industry that work for companies that will not provide for the cost of attendance and ask them if they feel the price is “fair”, most will vote that it is unfair.
It’s quite possible that they could charge $45 per person (for personal interest and attendance) and easily increase attendance by an order of magnitude. They would still get the same amount of compensation for their efforts (which are appreciated) and at the same time allow others to join that may not be fortunate enough to have a company to shell out thousands of dollars.
The price is quite arrogant, you can only defend it because you were selected to attend at no cost to you personally. The disappointment of not being able to go is something you won’t experience, so thus I do not expect you to be understanding.
Enjoy the conference.
August 6, 2012 at 5:09 pm
No, I didn’t miss the point at all. Again, your “reasonable” expectation is entirely subjective.
Your sense of scale here is way off. Decreasing the cost to 1.5% of the original cost and expecting to make it up by a 10X increase in attendance is just astounding. $45 per person would not even come close to covering the costs of the food, let alone the entire conference: rental of a conference room for 3 days, equipment rental for the A/V equipment, an opening reception, 6 meals plus room rental, plus refreshments in the conference room. Then there’s the cost of hosting the website, accepting payments for the conference, producing the conference materials (full color copies of the presentation slides for every attendee). There is a bare minimum required per person just to cover costs. I’m sure it’s not $3000 (due to various discounts that are offered, such as group discounts, early bird discounts, and alumni discounts), but it’s also no where near $45.
Increasing the attendance by an order of magnitude would also eliminate one of the big benefits of the conference, the ability to actually spend time talking with the presenters, and to ask questions during the presentation and have it answered. It would also require a much larger venue to have 1000 people in one room at the same time.
“The price is quite arrogant,’
Not nearly as arrogant as the pittance that you are willing to pay for it.
“you can only defend it because you were selected to attend at no cost to you personally.”
That is untrue. It is also not completely at no cost to me.
“The disappointment of not being able to go is something you won’t experience, so thus I do not expect you to be understanding.”
I wanted to attend the first one, but neither I nor my company could afford it at the time. I was disappointed, but that’s not the fault of the conference organizers.
Good bye!
August 6, 2012 at 5:24 pm
No matter how passionate you may be about your opinion against mine, it’s still just as subjective as you claim mine to be. So, there is no winner here.
I don’t need you to change my mind or provide your response to my every letter typed. Just accept my opinion as subjective and move on. Why do you feel compelled to respond continuously? By responding you contradict the very basis of your argument (opinions (naturally subjective) cannot be argued, so why argue?).
I stated that I disagree with the pricing, I won’t bother to redundantly go over the reasoning again. So please, go enjoy your completely paid for attendance and feel fortunate that you are a “chosen one”.