Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse

The New Coffee Room

  1. TNCR
  2. General Discussion
  3. Stupid computer question

Stupid computer question

Scheduled Pinned Locked Moved General Discussion
12 Posts 9 Posters 115 Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • KlausK Offline
    KlausK Offline
    Klaus
    wrote on last edited by Klaus
    #3

    Think of it as additional processors that can do work in parallel.

    They don't automatically speed things up, though. Things get faster by adding cores if you run different applications in parallel, or if you have applications that have been programmed to make use of multiple cores (which isn't an easy thing to do). But if you run only a single CPU-intensive application and it hasn't been programmed to use multiple cores (and sometimes this isn't possible, not even in theory), then additional cores won't improve anything.

    Modern graphics cards have even more cores than CPUs do, but these cores are a rather different matter. You cannot run independent programs on them, like in CPU cores. Rather, basically every core has to execute exactly the same program in lock-step, but each of them works on a different region of memory (e.g. regions of your screen - but these days graphics cards are also quite popular for general-purpose computing).

    HoraceH 1 Reply Last reply
    • AxtremusA Away
      AxtremusA Away
      Axtremus
      wrote on last edited by
      #4

      Think of # of cores like # of surgeons in an OR.

      In theory more surgeons can work on different, multiple parts of the same patient and/or on different, multiple patients simultaneously, thus allowing the OR to clear more complex cases and/or more patients quicker.

      But in practice there are limits, like when they share the same gas passer or have limited number of specialized instruments, like when one surgeon cannot perform a certain step until after another surgeon completed a different step, like when different specialists are called to do different steps, like when the patient can only take so much at any point in time, etc.

      The computing equivalents of all those limitations would be things like "shared resource" when only one "core" can use a particular I/O port or a particular memory region at a time, necessary serializations when some computations depend the results from some other computations, having different types of "cores" optimized for different things (e.g., "general purpose core" vs "graphics core" vs "neural engine accelerators", "energy-efficient core" vs "high-performance core"), overall chip limit such as the absolute total thermal load that the chip cannot exceed or it would shutdown or meltdown.

      1 Reply Last reply
      • MikM Offline
        MikM Offline
        Mik
        wrote on last edited by
        #5

        Very good responses.

        “I am fond of pigs. Dogs look up to us. Cats look down on us. Pigs treat us as equals.” ~Winston S. Churchill

        markM 1 Reply Last reply
        • MikM Mik

          Very good responses.

          markM Offline
          markM Offline
          mark
          wrote on last edited by
          #6

          @mik said in Stupid computer question:

          Very good responses.

          Agreed.

          Each core is in essence a CPU that shares cache memory, memory controller, and other I/O to the outside world. A 2 core processor is not 2x as fast as a single core. The boost in performance is usually measured in percentages of increased performance that depend on various pre-requisites to be realized.

          First the OS and application need to take advantage of the multiple cores/threads. Not all applications do this. Or they do it in various ways depending on how many things they need to do at once.

          Games and Audio processing demand a fast single core thread vs. multiple cores beyond about 8 cores. Audio processing does take advantage of more cores but not as much as 3D rendering for example.

          3D animation and rendering, Video processing, scientific applications for simulations of weather, etc produce much faster results, and the more cores/threads that are available, the better.

          Modern OSes are fully multi-threaded and as such, perform better with more cores as system related processes can run much more efficiently on multi-core systems.

          Virtual Machines (Hyper-V, etc) the more cores the merrier!

          For your home web browsing/shopping/video streaming, etc. 4 cores is plenty.

          1 Reply Last reply
          • CopperC Offline
            CopperC Offline
            Copper
            wrote on last edited by Copper
            #7

            The pun will make it easier for him.

            ![alt text](f1fff3f1-5f73-46de-abb7-c66ae03c3261-image.png image url)

            1 Reply Last reply
            • AxtremusA Away
              AxtremusA Away
              Axtremus
              wrote on last edited by
              #8

              Just got around to creating a couple of videos using iMovie.
              From monitoring the numbers reported by Activity Monitor (basically the graphical version of Unix's "top" utility), it does not look like iMovie does much parallel processing. The M1 chip supposedly has eight general computing cores plus eight graphics cores, but when transcoding video for export it looks like no more than two general computing cores are used and no graphics core was used, which is somewhat disappointing seeing that the encoding of prerecorded video is supposedly the sort of computing tasks that is more easily parallelized. :man-shrugging:

              1 Reply Last reply
              • KlausK Klaus

                Think of it as additional processors that can do work in parallel.

                They don't automatically speed things up, though. Things get faster by adding cores if you run different applications in parallel, or if you have applications that have been programmed to make use of multiple cores (which isn't an easy thing to do). But if you run only a single CPU-intensive application and it hasn't been programmed to use multiple cores (and sometimes this isn't possible, not even in theory), then additional cores won't improve anything.

                Modern graphics cards have even more cores than CPUs do, but these cores are a rather different matter. You cannot run independent programs on them, like in CPU cores. Rather, basically every core has to execute exactly the same program in lock-step, but each of them works on a different region of memory (e.g. regions of your screen - but these days graphics cards are also quite popular for general-purpose computing).

                HoraceH Offline
                HoraceH Offline
                Horace
                wrote on last edited by
                #9

                @klaus said in Stupid computer question:

                They don't automatically speed things up, though. Things get faster by adding cores if you run different applications in parallel, or if you have applications that have been programmed to make use of multiple cores (which isn't an easy thing to do).

                Unless parallel operations are built into the language. Then it's pretty easy.

                Education is extremely important.

                KlausK 1 Reply Last reply
                • X Offline
                  X Offline
                  xenon
                  wrote on last edited by xenon
                  #10

                  Cores are also an easy concept to market. There are lots of things in computer architecture that contribute towards performance: clock speed (Ghz), cache, pipeline depth, memory I/O, etc.

                  Then there's the matter of how optimized the SW is for a particular type of architecture.

                  But cores are discrete and easy to understand. And to be fair, they are correlated with performance for many application types.

                  "This one has two little processors in it... this one has six... this one eight.."

                  1 Reply Last reply
                  • HoraceH Horace

                    @klaus said in Stupid computer question:

                    They don't automatically speed things up, though. Things get faster by adding cores if you run different applications in parallel, or if you have applications that have been programmed to make use of multiple cores (which isn't an easy thing to do).

                    Unless parallel operations are built into the language. Then it's pretty easy.

                    KlausK Offline
                    KlausK Offline
                    Klaus
                    wrote on last edited by Klaus
                    #11

                    @horace said in Stupid computer question:

                    @klaus said in Stupid computer question:

                    They don't automatically speed things up, though. Things get faster by adding cores if you run different applications in parallel, or if you have applications that have been programmed to make use of multiple cores (which isn't an easy thing to do).

                    Unless parallel operations are built into the language. Then it's pretty easy.

                    Try to program a parallel sorting procedure that is faster than a good sequential algorithm. Not easy, regardless of language support.

                    Or here’s another one that is most likely impossible: write a simulator for a single core that uses multiple cores, such that doubling the number of cores would approximately double the performance of the simulation (it can be 100x slower on 8 cores, say, that’s not the point, only the speed up matters). If you can do that, I’ll promise that you’ll win every prize computer science has to offer and likely become a billionaire. In CS circles, this is known as the “NC=P” problem (not to be confused with the better known but completely different “P=NP” problem).

                    There’s much more to parallel programming than “parallel for loops”.

                    HoraceH 1 Reply Last reply
                    • KlausK Klaus

                      @horace said in Stupid computer question:

                      @klaus said in Stupid computer question:

                      They don't automatically speed things up, though. Things get faster by adding cores if you run different applications in parallel, or if you have applications that have been programmed to make use of multiple cores (which isn't an easy thing to do).

                      Unless parallel operations are built into the language. Then it's pretty easy.

                      Try to program a parallel sorting procedure that is faster than a good sequential algorithm. Not easy, regardless of language support.

                      Or here’s another one that is most likely impossible: write a simulator for a single core that uses multiple cores, such that doubling the number of cores would approximately double the performance of the simulation (it can be 100x slower on 8 cores, say, that’s not the point, only the speed up matters). If you can do that, I’ll promise that you’ll win every prize computer science has to offer and likely become a billionaire. In CS circles, this is known as the “NC=P” problem (not to be confused with the better known but completely different “P=NP” problem).

                      There’s much more to parallel programming than “parallel for loops”.

                      HoraceH Offline
                      HoraceH Offline
                      Horace
                      wrote on last edited by
                      #12

                      @klaus said in Stupid computer question:

                      @horace said in Stupid computer question:

                      @klaus said in Stupid computer question:

                      They don't automatically speed things up, though. Things get faster by adding cores if you run different applications in parallel, or if you have applications that have been programmed to make use of multiple cores (which isn't an easy thing to do).

                      Unless parallel operations are built into the language. Then it's pretty easy.

                      Try to program a parallel sorting procedure that is faster than a good sequential algorithm. Not easy, regardless of language support.

                      Or here’s another one that is most likely impossible: write a simulator for a single core that uses multiple cores, such that doubling the number of cores would approximately double the performance of the simulation (it can be 100x slower on 8 cores, say, that’s not the point, only the speed up matters). If you can do that, I’ll promise that you’ll win every prize computer science has to offer and likely become a billionaire. In CS circles, this is known as the “NC=P” problem (not to be confused with the better known but completely different “P=NP” problem).

                      There’s much more to parallel programming than “parallel for loops”.

                      The claim I was responding to was that using multiple cores wasn’t easy. I don’t disagree with your new claim that some problems are difficult to parallelize.

                      Education is extremely important.

                      1 Reply Last reply
                      Reply
                      • Reply as topic
                      Log in to reply
                      • Oldest to Newest
                      • Newest to Oldest
                      • Most Votes


                      • Login

                      • Don't have an account? Register

                      • Login or register to search.
                      • First post
                        Last post
                      0
                      • Categories
                      • Recent
                      • Tags
                      • Popular
                      • Users
                      • Groups