+Matthew Booth Thank you for the comment! Python is definitely not the best choice to write highly optimized rendering engine... But there are different tools for different jobs. Python's great for writing high level logic in a readable way and iterating fast. And there are CUDA and C++ bindings for the critical parts. Although debugging the PythonC++ bridge isn't very convenient.
This is the sort of stuff game programmers should also know, whenever I see videos about game development it's never, or rarely anything related to optimization. It's the sort of things many if not all beginner programmers will be thrown off by noticing that their application or system does not scale well which in most cases can be largely mitigated by actually knowing what your code blocks do on a hardware level.
Great presentation. Thank you for taking the time to share these valuable insights and your experience with us! Some 5 min talks on specific topics would be awesome.
Must say, great video. Especially for me as someone who is studying game programming, this was very enlightening, and much easier to follow than a lot of the other stuff I have read/watched. So, thank you very much :)
31:50 "So we talked about how CPU works and then about a weird little trick that can help you lose 32 bytes in a day or less." haha! Thanks for the video, I learned a lot.
@Sergiy Migdalskiy @19:30 How can you check if a cache line is being used by another core? Is there a way to check for the MESI/MOESI/MESIF bits? PS: Great presentation, btw.
Sigi Thanks for the praise :) What parts do you mean? What did you find hard? I'm thinking about recording another talk, very short, ~5 minutes, a single subject. Like, explain binary numbers with fractions. Useful for implementing quantization correctly. And understanding IEEE floats well.
Great talk :). But I have question though. In 60th slide there example of implementation of RPointer. I do not really understand implementation of operator -> Why does it use m_nOffset twice in return operator? And how is base pointer for offset provided there. For context: There is an implementation from slides: template class RPointer { unsigned short m_nOffset; public: T* operator -> () { Assert( m_nOffset != 0 ); // must not be NULL return ( ( byte* )&m_nOffset ) + m_nOffset; } void operator = (T*p){m_nOffset = p?((byte*)p)-(byte*)this:0;} };
Thanks for watching! The first use is to take the address of the RPointer itself. The second is to add the offset to it. m_nOffset holds the offset, in bytes, from the memory location holding m_nOffset itself. That's the whole idea. If you memmove that memory anywhere else, it'll still point to the same data. No fixups needed.
+Sergiy Migdalskiy Just to make things clear, there's nothing wrong with your speech, I really do enjoyed your presentation! I was talking about the background noise, if you listen closely you can hear an outcry (which I suppose is due to someone got something finally working). Anyway, I can't wait to get more details about Source 2. I hope it will revolutionize game development and gaming experience just like the Source engine did in the early 2000's.
@@migdalskiy wait are you sure? i have just been messaged by Sergiy Checker#8140, he has your face on the profile picture and has claimed that i need to buy a 50 dollar steam gift card to unban my steam account for false accusations, could it be somebody is pretending to be you or is it really you who tried scamming me?
Слишком много слов. Пожалуйста попроще и покороче. The details get in the way, and there are too many terms that are not explained. Hard to follow in general.
I think this talk is more for people who are already knowledgeable in this area. If you want something simpler and more beginner-friendly about the same subject, I liked this talk (Practical Optimizations - Jason Booth): ua-cam.com/video/NAVbI1HIzCE/v-deo.html
31:50 "So we talked about how CPU works and then about a weird little trick that can help you lose 32 bytes in a day or less." haha! Thanks for the video, I learned a lot.
Very insightful and still relevant in 2019.
This is so dense and hits so many important topics without any fluff.
Really interesting talk by a valve developer on the importance of optimising for cache. Python must make CPU developers cry.
+Matthew Booth Thank you for the comment! Python is definitely not the best choice to write highly optimized rendering engine... But there are different tools for different jobs. Python's great for writing high level logic in a readable way and iterating fast. And there are CUDA and C++ bindings for the critical parts. Although debugging the PythonC++ bridge isn't very convenient.
Bravo! Best animations for a technical talk that I have seen :)
iestyn Bleasdale-Shepherd Thanks!
This is the sort of stuff game programmers should also know, whenever I see videos about game development it's never, or rarely anything related to optimization. It's the sort of things many if not all beginner programmers will be thrown off by noticing that their application or system does not scale well which in most cases can be largely mitigated by actually knowing what your code blocks do on a hardware level.
Thanks for putting this out. Great video. I wish more US programmers were knowledgeable at this level.
Great talk. I especially liked the relative pointers and the Big O sections.
Great presentation. Thank you for taking the time to share these valuable insights and your experience with us! Some 5 min talks on specific topics would be awesome.
Very good presentation. Surely I will follow your advices to improve my project's perfomance!
Must say, great video. Especially for me as someone who is studying game programming, this was very enlightening, and much easier to follow than a lot of the other stuff I have read/watched. So, thank you very much :)
+Trogzul Thank you for the encouraging feedback!
wow, so many thoughtful insights! One of the most informative video for me! Thx a lot!
Really good presentation.
All who want to work as engine programmers should see it.
It wouldn't be bad if game programmers saw it too.
Paulo Zaffari I'm glad you liked it, please forward it to everyone you think would benefit :)
31:50 "So we talked about how CPU works and then about a weird little trick that can help you lose 32 bytes in a day or less." haha!
Thanks for the video, I learned a lot.
Thank you so much! This is not only invaluable, but also really, really interesting.
Looking forward to the improvements of sse 4.1 for Dota 2 later this year ;)
A really nice and informative presentation. Thanks for taking the time and recording this :).
Highly Enlightening !
Thank you .
@Sergiy Migdalskiy @19:30 How can you check if a cache line is being used by another core? Is there a way to check for the MESI/MOESI/MESIF bits?
PS: Great presentation, btw.
Thanks, really useful. Is any chance to see more such kind of videos in future?
You can count on it, when I have more time or find someone willing and able to work on the production of one with me :)
Wonderful easy to understand video with nice visualisation. Now when do you do a follow up talk on the hard parts? :-)
Sigi Thanks for the praise :)
What parts do you mean? What did you find hard?
I'm thinking about recording another talk, very short, ~5 minutes, a single subject. Like, explain binary numbers with fractions. Useful for implementing quantization correctly. And understanding IEEE floats well.
You should make more videos like this
Good talk!
классное видео
pls do more like this!
I wonder If Sergiy will work on Left 4 Dead 3 or Portal 3 lol
Great talk :). But I have question though.
In 60th slide there example of implementation of RPointer.
I do not really understand implementation of operator ->
Why does it use m_nOffset twice in return operator?
And how is base pointer for offset provided there.
For context: There is an implementation from slides:
template
class RPointer
{
unsigned short m_nOffset;
public:
T* operator -> ()
{
Assert( m_nOffset != 0 ); // must not be NULL
return ( ( byte* )&m_nOffset ) + m_nOffset;
}
void operator = (T*p){m_nOffset = p?((byte*)p)-(byte*)this:0;}
};
Thanks for watching!
The first use is to take the address of the RPointer itself. The second is to add the offset to it.
m_nOffset holds the offset, in bytes, from the memory location holding m_nOffset itself. That's the whole idea. If you memmove that memory anywhere else, it'll still point to the same data. No fixups needed.
Do you have any recommended in-depth resources for the topics you covered? Great talk by the way, thank you!
Someone got something working @31:56 :D
+András Gajdács I'll do better next time :)
+Sergiy Migdalskiy Just to make things clear, there's nothing wrong with your speech, I really do enjoyed your presentation! I was talking about the background noise, if you listen closely you can hear an outcry (which I suppose is due to someone got something finally working). Anyway, I can't wait to get more details about Source 2. I hope it will revolutionize game development and gaming experience just like the Source engine did in the early 2000's.
lol tényleg :D
Great job!
Andy Robbins Thanks!
are you from Belarus?
teach us master!
You look like isaac clarke from dead space 1
please, if this man messages you on discord, do not do what he asks for, i have lost 30 euros cause of his dirty doings
Beware of impostors. I don't even use discord.
@@migdalskiy wait are you sure? i have just been messaged by Sergiy Checker#8140, he has your face on the profile picture and has claimed that i need to buy a 50 dollar steam gift card to unban my steam account for false accusations, could it be somebody is pretending to be you or is it really you who tried scamming me?
Слишком много слов. Пожалуйста попроще и покороче. The details get in the way, and there are too many terms that are not explained. Hard to follow in general.
I think this talk is more for people who are already knowledgeable in this area. If you want something simpler and more beginner-friendly about the same subject, I liked this talk (Practical Optimizations - Jason Booth): ua-cam.com/video/NAVbI1HIzCE/v-deo.html
Lol at game dev calling micro cycles ticks
31:50 "So we talked about how CPU works and then about a weird little trick that can help you lose 32 bytes in a day or less." haha!
Thanks for the video, I learned a lot.