Performance Optimization, SIMD and Cache

Поділитися
Вставка
  • Опубліковано 12 січ 2025

КОМЕНТАРІ • 50

  • @armpap1
    @armpap1 5 років тому +25

    Very insightful and still relevant in 2019.

  • @steveradomski5119
    @steveradomski5119 10 місяців тому

    This is so dense and hits so many important topics without any fluff.

  • @MatthewBooth
    @MatthewBooth 9 років тому +11

    Really interesting talk by a valve developer on the importance of optimising for cache. Python must make CPU developers cry.

    • @migdalskiy
      @migdalskiy  9 років тому +8

      +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.

  • @iestynne
    @iestynne 9 років тому +20

    Bravo! Best animations for a technical talk that I have seen :)

    • @migdalskiy
      @migdalskiy  9 років тому

      iestyn Bleasdale-Shepherd Thanks!

  • @MasthaX
    @MasthaX 3 роки тому +1

    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.

  • @corymarsh6178
    @corymarsh6178 3 роки тому +1

    Thanks for putting this out. Great video. I wish more US programmers were knowledgeable at this level.

  • @PopescuAlexandruCristian
    @PopescuAlexandruCristian 8 років тому +5

    Great talk. I especially liked the relative pointers and the Big O sections.

  • @WesleyRobb
    @WesleyRobb 9 років тому +3

    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.

  • @riibbert
    @riibbert 4 роки тому +1

    Very good presentation. Surely I will follow your advices to improve my project's perfomance!

  • @Trogzul
    @Trogzul 9 років тому +1

    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 :)

    • @migdalskiy
      @migdalskiy  9 років тому +1

      +Trogzul Thank you for the encouraging feedback!

  • @stingray427
    @stingray427 3 роки тому

    wow, so many thoughtful insights! One of the most informative video for me! Thx a lot!

  • @PauloZaffari
    @PauloZaffari 9 років тому

    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.

    • @migdalskiy
      @migdalskiy  9 років тому

      Paulo Zaffari I'm glad you liked it, please forward it to everyone you think would benefit :)

  • @GordonAitchJay
    @GordonAitchJay 8 років тому +4

    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.

  • @JasperLaw
    @JasperLaw 7 років тому

    Thank you so much! This is not only invaluable, but also really, really interesting.

  • @michaelan9688
    @michaelan9688 Рік тому

    Looking forward to the improvements of sse 4.1 for Dota 2 later this year ;)

  • @AlexandruEne0x0
    @AlexandruEne0x0 9 років тому

    A really nice and informative presentation. Thanks for taking the time and recording this :).

  • @sandeepchandappillai9814
    @sandeepchandappillai9814 8 років тому +1

    Highly Enlightening !
    Thank you .

  • @tamasionut2279
    @tamasionut2279 8 років тому

    @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.

  • @Олег-ю3щ4ъ
    @Олег-ю3щ4ъ 8 років тому +1

    Thanks, really useful. Is any chance to see more such kind of videos in future?

    • @migdalskiy
      @migdalskiy  8 років тому

      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 :)

  • @Sicaine
    @Sicaine 9 років тому +1

    Wonderful easy to understand video with nice visualisation. Now when do you do a follow up talk on the hard parts? :-)

    • @migdalskiy
      @migdalskiy  9 років тому +13

      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.

  • @tomasarce6435
    @tomasarce6435 3 роки тому

    You should make more videos like this

  • @Mike.Garcia
    @Mike.Garcia 5 років тому +1

    Good talk!

  • @SAS1122334455
    @SAS1122334455 7 років тому

    классное видео
    pls do more like this!

  • @vladdydaddy1026
    @vladdydaddy1026 2 роки тому +1

    I wonder If Sergiy will work on Left 4 Dead 3 or Portal 3 lol

  • @andriinikolaiev8255
    @andriinikolaiev8255 3 роки тому

    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;}
    };

    • @migdalskiy
      @migdalskiy  3 роки тому +2

      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.

  • @Bestmann3n
    @Bestmann3n 6 років тому

    Do you have any recommended in-depth resources for the topics you covered? Great talk by the way, thank you!

  • @miniputyin
    @miniputyin 9 років тому +9

    Someone got something working @31:56 :D

    • @migdalskiy
      @migdalskiy  9 років тому

      +András Gajdács I'll do better next time :)

    • @miniputyin
      @miniputyin 9 років тому +5

      +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.

    • @icguy
      @icguy 8 років тому

      lol tényleg :D

  • @raicuandi
    @raicuandi 9 років тому

    Great job!

  • @romanromanchuk7718
    @romanromanchuk7718 3 роки тому

    are you from Belarus?

  • @satellite964
    @satellite964 5 років тому

    teach us master!

  • @voodoo5191
    @voodoo5191 3 роки тому

    You look like isaac clarke from dead space 1

  • @grassboy7573
    @grassboy7573 Рік тому +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

    • @migdalskiy
      @migdalskiy  Рік тому +2

      Beware of impostors. I don't even use discord.

    • @grassboy7573
      @grassboy7573 Рік тому

      @@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?

  • @konstantinrebrov675
    @konstantinrebrov675 5 років тому

    Слишком много слов. Пожалуйста попроще и покороче. The details get in the way, and there are too many terms that are not explained. Hard to follow in general.

    • @daniil-shevtsov
      @daniil-shevtsov Рік тому

      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

  • @keptleroymg6877
    @keptleroymg6877 2 роки тому

    Lol at game dev calling micro cycles ticks

  • @GordonAitchJay
    @GordonAitchJay 8 років тому +4

    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.