15
\$\begingroup\$

Quick note: I know this is a game development Q&A site but I guess you guys most of all know and have experience with graphics cards so I address this question to you. If you think this is completely off-topic, please refer me to a proper site/forum. Edit: Actually, it is gamedev-related: if a bad code can result in card overheating or breaking then game developers should be aware of that and make sure their applications don't do that.

This might seem like a weird or stupid question but is it actually possible to write such a graphics rendering application that can break the graphics card (in any way)?

The immediate reason that made me ask this question was (no surprise) my own broken graphics card. After having it repaired the serviceman said that they tested various apps (games) on it and it worked fine. But when I launched my own app (deferred shading demo) it heated it to over 100 degrees Celsius. So my card didn't turn out to be fixed after all but what's important here is that the problem seemed to only occur when running my own app.

I've played various GPU-demanding games on it (like Crysis) and often pushed it to the limit and more (had settings so high that the games ran at 5 FPS), some benchmarks as well... So I've given my card, many times, so much work-load that it couldn't catch up (hence low FPS) but it never reached dangerous temperatures. But my own application managed to achieve that (at least when the v-sync was off). :P Since it was only my own app, I don't think a bad cooling system was the culprit.

So I ask - do you think (or maybe know) whether or not it is possible to break the graphics card (in any way, not just by overheating) by some vicious code?

Update:

Joe Swindell said that overheating may be the problem (well, it definitely can break the card). But shouldn't a proper cooling system prevent that from happening (under any circumstances)?

Boreal pointed out another problem. If I understand correctly, FPS is bound by both CPU and GPU (is that right?). So low FPS might signal either high CPU load or high GPU load. But again - shouldn't a proper cooling system prevent GPU from overheating even if the card is "used at 100% all the time"?

\$\endgroup\$
11
  • \$\begingroup\$ Most games are not going to utilize your GPU to its full potential - they will be in many ways CPU bound. However, your own application may be doing nothing on the CPU side, which will lead to far higher GPU usage. Simply put, GPUs are not meant to be used at 100% all the time. This is why you don't want to buy a used GPU right now - it's probably been used for Bitcoin mining. \$\endgroup\$
    – jmegaffin
    May 16, 2014 at 20:46
  • 6
    \$\begingroup\$ @Boreal I strongly disagree with that. If you buy a GPU from a quality board maker, it is designed to be used at 100% all the time, and the cooling and clock speeds have been set to ensure it's stable under those conditions. Now, if you have some aftermarket heatsink that's not installed correctly, or if you overclock the card to a dangerous level, that's another story. \$\endgroup\$ May 16, 2014 at 21:09
  • \$\begingroup\$ "But shouldn't a proper cooling system prevent that from happening (under any circumstances)?" - say your GPU's fans, heatsinks, and exhaust get caked with dust because you didn't take care of your computer. Then it can definitely overheat and break, even with high-end parts. Hopefully it'll just detect the heat and shut down and reboot itself before it gets damaged, but you really don't want to bet on that. \$\endgroup\$ May 17, 2014 at 3:45
  • \$\begingroup\$ FYI really the computer should shut itself down when dangerously overheating. Is it possible this is disabled on your computer? \$\endgroup\$ May 17, 2014 at 11:00
  • \$\begingroup\$ SeanMiddleditch, by "proper" I meant, amongst others, a clean fully-functioning cooling system. RichardTingle, I haven't disabled it myself, at least. But I meant my question as a general problem, not looking for a solution to my concrete case. \$\endgroup\$
    – NPS
    May 17, 2014 at 11:26

12 Answers 12

32
\$\begingroup\$

It's not the app's responsibility to ensure the GPU doesn't overheat, and it's not the app's fault if it does overheat.

If the GPU doesn't have proper cooling, then yes, running a 3D app can heat it up to dangerous levels. I don't know why your app does it and Crysis doesn't, but it means the card has inadequate cooling, and/or it has been messed with (overclocked, or other factory settings / drivers altered).

Besides overheating, I'm not aware of any other way in which software could physically damage the chip it's running on. That's really not supposed to be possible; it would be a very serious failure of design.

\$\endgroup\$
6
  • 1
    \$\begingroup\$ So based on what you said should I (as a programmer) not care at all about how much GPU load (and heating) my application generates (as long as it runs smoothly)? \$\endgroup\$
    – NPS
    May 16, 2014 at 21:01
  • 11
    \$\begingroup\$ @NPS Right. You care about GPU load insofar as it affects framerate (and on mobile devices, battery life), but it's not your responsibility to care about how it affects temperature - that's for the drivers/OS to worry about. If an app overheats the GPU then it's not cooled properly and/or there is something wrong with the driver's dynamic frequency scaling. \$\endgroup\$ May 16, 2014 at 21:07
  • 4
    \$\begingroup\$ +1, it's the user's job to make sure his hardware meets the requirements (and "not melting during gameplay" counts as a requirement) and the hardware/driver's job to do its best to protect the card from damage. The application should (and must) rely on that, there's nothing else it can do. \$\endgroup\$
    – Thomas
    May 17, 2014 at 4:24
  • \$\begingroup\$ I want to write a manifesto for manufacturer ethics : when you buy a piece of hardware of a given spec, you should be able to access this spec under all condidition stated on the package (0 to 40 degrees C is usually stated). And not suffer stupid thermal throttling otherwise a good trial should demonstrate that I was robbed my money by false claims on the package. \$\endgroup\$
    – v.oddou
    May 19, 2014 at 0:39
  • \$\begingroup\$ @NPS "So based on what you said should I (as a programmer) not care at all about how much GPU load (and heating) my application generates (as long as it runs smoothly)?" - Yes, you should care about load, but not about overheating. Just make sure that lower settings generate lower load and therefore less cooling noise. Since I sometimes play on battery, I will downvote games on Steam which burn 100% CPU and GPU while doing nothing, and I'm not the only one. \$\endgroup\$
    – Peter
    Oct 22, 2015 at 15:05
24
\$\begingroup\$

It has happened in the wild.

Starcraft II in 2010 had a problem where it had an uncapped framerate on menu screens placing an odd load on graphics cards, destroying cards from some vendor with insufficient thermal protection.

Design and manufacturing flaws in the GPU itself can also lead to the card dismantling itself under load. G84/G86 mobile GPUs had solder joints that broke under acceptable temperature loads and eventually broke. We also have the infamous Red Ring of Death of the XBox 360 which has similiar thermal problems with solder and expansion.

All of the above are a mixture of hardware defects and insufficient thermal designs, amplified by software load.

\$\endgroup\$
2
  • 6
    \$\begingroup\$ Starcraft was the example I immediately thought of with this. Although arguably starcraft exposed a bug with a number of graphics cards and then provided a workaround for that bug rather than Starcraft actually being at fault. Not that anyone with a destroyed card would care too much about that distinction \$\endgroup\$ May 17, 2014 at 11:07
  • 1
    \$\begingroup\$ Once upon a time a generation of not-smart monitors could have their flyback transformers destroyed by software poking bad values into the CRTC registers. A third reason for failures to add is that the speed race made many manufactuers cut corners, many times cards weren't built sturdy enough for 100 % \$\endgroup\$ May 18, 2014 at 4:38
9
\$\begingroup\$

Your question is much more complex than what you wrote. I would say the general question is "can software break hardware?", and the answer to that is a definite yes.

Mind you, not all hardware can be theoretically broken via software commands, but eventually, what software does is send electrical signals to very delicate hardware components. Usually, the more delicate a hardware component is, the more likely it is for it to be damaged when it is handled in a way in which it was not designed.

There's a lot of fun ways hardware can break, but let's just consider overheating: processing work generates heat, and that heat has to go somewhere. Depending on the dissipating characteristics of your card, the airflow in the case, and the overall temperature in the room, the amount of heat removed from the system can be more or less than what is being generated by it.

If you ask the video card to do work that generates more heat than can be efficiently dissipated, then the chip temperature will rise. If you keep it going, then the temperature will rise above the safe operating level, and the chip will break, lose its magic smoke, and probably even cause a fire hazard. You have just broken your video card, I hope you're happy.

Now, can you write software that does this? I would say most likely not. Any (user-level) program you write will not talk directly to the video card. There are lots of safeguards designed to prevent this situation, and they all have to fail so your rendering program ends up burning your house.

  1. Generally, heat dissipators and fans are designed so they can comfortably remove the maximum amount of heat the card will generate, even on poorly ventilated cases on hot climates (within the operating ranges specified by the manufacturer)

  2. If heat generation is greater than heat dissipation, the first line of defense would be the driver. Most drivers will be checking the core temperature of the GPU, and if it is going up, the driver may limit the amount of instructions it sends to the GPU to prevent generating more heat.

  3. Should that fail, the firmware in the graphics card should detect that heat is dangerously building up, and will therefore reduce the clock speed in an attempt to reduce heat generation.

  4. If after all that, heat is still building up, a thermal diode available in most modern CPUs and GPUs will shut down the video card entirely, and heat generation will stop.

So, if you want to break your expensive video card from a user level application via overheating, in addition to build a piece of software that stresses the system to its maximum, you would need:

  1. A faulty or broken heat dissipating system. Simply sticking your finger in the fan (always in the center, not in the blades) should do the trick. Difficulty: Easy

  2. A custom (or buggy) driver with throttling features disabled or broken. Difficulty: Normal

  3. A custom firmware with clock reducing features disabled or broken. Difficulty: Hard

  4. A broken thermal diode. If you're constantly triggering the thermal diode, it may get damaged. Difficulty: Very hard

... but not impossible! Feel free to try it*, but do make sure you keep your fire department's phone at hand when you do it.

*: This is sarcasm. I am in no way condoning the creation of a fire hazard, or any activities that may harm you, your family, dog or community in any way. By reading this post you completely waive me of any responsibility your actions may bring.

\$\endgroup\$
1
  • 1
    \$\begingroup\$ +1 for a lot of things, but especially for thinking of the dog. :) \$\endgroup\$ May 19, 2014 at 5:29
2
\$\begingroup\$

Even with VSYNC off, many games can fail to hit even 98% GPU utilization. The more actual gameplay they implement, the fewer frames they can stage and the more likely the GPU will go underutilized. Good multi-core optimized games can get significantly closer to 100% GPU utilization, but generally gameplay logic keeps the CPU busy enough with other tasks that it is not able to saturate the GPU with a full workload. Pure rendering applications can easily reach 100% GPU load, but games do a lot more than rendering.

On a side note, on my home machine my GPU generates significant EMI under high load and it interferes with the cheap integrated audio on my motherboard. I can hear a high-pitch whining over the analog audio whose frequency varies with load. I have come to enjoy that and consider it a feature rather than a design flaw, it makes profiling interesting as I can actually hear the load level without having to sample a GPU performance counter. However, I suppose if you have some device that is highly sensitive to EMI and inadequately shielded this could be a problem... high GPU load could cause failure in another device.

\$\endgroup\$
0
\$\begingroup\$

Overheating IS breaking your graphics card. Throwing a massive loop of data that it can't handle will certainly, as you've seen, crash and possibly damage your card permanently.

\$\endgroup\$
3
  • 4
    \$\begingroup\$ But any application can give the card more than it can chew (pretty much any game a few years younger than the card itself). A proper cooling system should prevent that (no matter what application does), shouldn't it? \$\endgroup\$
    – NPS
    May 16, 2014 at 20:47
  • \$\begingroup\$ You are correct in that any game COULD do that...but most code will not choke the GPU out at 100% and if it does, it usually isn't 100% for extended periods. Although, I would agree 100% with you that a proper cooling system should prevent all of that. \$\endgroup\$ May 16, 2014 at 20:57
  • 2
    \$\begingroup\$ This seems like madness. The clock speed should be set at a safe level just like the CPU \$\endgroup\$ May 17, 2014 at 11:04
0
\$\begingroup\$

Yes, It can.

  • Overheating as the obvious example, can be caused by extreme workloads. Usually achieved through overclocking. This would be the easiest to cause purposefully.

Can be avoided with good cooling systems. Enabling V-sync is also a good way to avoid this. V-sync prevents the GPU from outputting frames at a faster rate than the monitor can handle, which are frames that normally get dropped, never to be seen.

Fewer frames = less processing = less extreme workload.

Keeping track of the abilities of the GPU is also important. I imagine the programmers at Crytek wrote the code to be ready for someone to overestimate their graphics-cards abilities. If they did, I'm sure it's a feature that has saved many-a-GPU, and has saved many unknowing GPU owners from frustration.

  • A little bit of corrupt (or improperly coded) data can cause a pointer to end up pointing to somewhere it's not supposed to, which can wreck all kinds of things. Though likely not permanent, it could cause varying degrees of failure in it's operation. Such a fault on the CPU is normally caught by the OS and avoided or, if it can't be avoided, will invoke a BSOD (Blue screen of death.)

Can be avoided with careful coding and double checking at run-time. (But there are always bugs. If there aren't, it's because they're toying with you.)

  • The GPU is also going to have a driver, which adds another place things can go wrong. Some data can be corrupted there, or there can be a bug, etc., etc. To add to that drivers, in general, run the risk of causing a BSOD. The fallback system of the OS when something goes terribly wrong and it needs to run an emergency shutdown operation to try and minimize, or prevent, the damage. A carefully coded driver will (hopefully) not do this, but there's always a chance for bugs. Including in emergency shutdown procedures.

This can be avoided with careful coding and double checking at run-time.

\$\endgroup\$
1
  • 3
    \$\begingroup\$ Display drivers have not been a significant source of BSODs in a long time, fortunately. Microsoft completely overhauled the driver model in Windows NT 6.0 (Vista) and pushed a great deal of the driver into user-mode; BSODs are only caused by kernel-mode things crashing. When the user-mode display driver crashes the worst thing that happens is that the driver resets itself - in a D3D game you might have to deal with a context loss and spend a while reloading resources but in GL you can sometimes completely transparently recover from this. It takes a seriously low-level failure to get a BSOD. \$\endgroup\$ May 17, 2014 at 5:20
0
\$\begingroup\$

One word answer: YES.

Detailed answer: Yes. It can (in certain situations). Imagine you write a program which drastically transfers data to your GPU to an infinite loop. It is certain that it will get overheated. Now again is not its Cooling system's responsibility to take care of it? Of course it is. But you should also remember that, the cooling system also have some threshold levels. If the heat produced is out of operating range of your cooling system, then your cooling system is hardly of any use. I dunno what your app does, but talking to a programmers perspective, you may write such programs which leads to this kind of situation.

\$\endgroup\$
1
  • \$\begingroup\$ As far as I can tell, all of this has been said already. Is that what you meant? \$\endgroup\$
    – Anko
    May 18, 2014 at 10:05
0
\$\begingroup\$
  1. Installing a mismatching driver with the actual card used can easily lead to causing permanent damage. My friend has somehow managed to do it through repetitive reinstallation of OS and physical change of HDD.

  2. Make your PC turn on and off a lot of times. Not sure if that can cause failure but it's very possible. Anyway, doesn't sound like a very software way to do it.

  3. Manipulate the level of power in the system by turning power-consuming USB devices on and off(example: external HDD that doesn't use it's own power). Doing this always makes my keyboard and mouse unusable until next restart and it has (over 2 years of everyday pluging 3 HDDs in and out) burned several cells in one of my RAM chips which resulted in a BSOD every 10-20 minutes.

\$\endgroup\$
2
  • 1
    \$\begingroup\$ Are you talking about things that can be done by software because I'm not sure? \$\endgroup\$
    – NPS
    May 18, 2014 at 21:24
  • \$\begingroup\$ WRT #3, the 5V rail used by USB is regulated by the power supply independently of the 12V rail(s), which is/are further regulated on the motherboard and graphics card to power the CPU, GPU, and system memory. Motherboards often use polyfuses to limit current through USB ports, which could explain your keyboard/mouse issues when hard drives are plugged in if they share the same polyfuse. The inrush current to spin up the platter can cause a voltage drop on the USB power rail, leading to a brown-out on the keyboard's microcontroller. Your failing RAM is almost certainly a coincidence, though. \$\endgroup\$
    – bcrist
    May 18, 2014 at 23:17
0
\$\begingroup\$

My personal experience:

I used to have an Lenovo Thinkpad T61p with a Quadro FX570M built around August 2008, this batch was to known to have faulty GPUs that would one day or the other fail (soldering was sub-optimal on some of the GPU pins.)

Everything was fine for about 5 years until I ran XCOM The Bureau on it (a game known for not really being optimized), the laptop was hot, fans at full speed and for about 1 hour of gaming it did freeze but not an usual freeze.

Guess what ? I turned the laptop off and back on, it was dead with relevant BIOS beep codes indicating a video failure.

To answer your question : yes (as others have pointed out), a software can definitely break hardware if the former is not protected in some way; if for instance the GPU fan is turned off then it will definitely blow up with a 100% chance of success :D

\$\endgroup\$
1
  • \$\begingroup\$ My question addresses hardware with proper and functioning cooling and built-in safety systems. Otherwise we're just talking faulty hardware which is bound to fail with any software. \$\endgroup\$
    – NPS
    May 23, 2014 at 21:26
0
\$\begingroup\$

I once had a GeForce 4 MX 440 graphics board and I wanted to play Prince of Persia: sands of time. But the game didn't launch because it couldn't find the expected Pixel Shader support. This was a bit unexpected for me, because the later Prince of Persia: Warrior Within worked just fine.

So, in the end I found of 3d analyser(http://www.tommti-systems.com/main-Dateien/files.html) and forced the game to run and played the game for several days. After a couple of days, my video card broke - didn't display anything anymore. I had the new computer for about 5-6 months so I think that forcing the game to run this way actually broke my video card :(

\$\endgroup\$
-1
\$\begingroup\$

Yes, I have broke a few. I don't run grid gpu calculating apps anymore. Some apps tend to break those especially when machine goes to sleeping mode, but in normal situations when blowers are working/cooling liquid is circulating there shouldn't be issues unless cooling is undersized.

\$\endgroup\$
3
  • \$\begingroup\$ What do you mean "sleeping mode"? "Sleep mode" usually refers to suspend-to-RAM, a computer power state in which only the Random Access Memory remains powered. How would that break a graphics card? \$\endgroup\$
    – Anko
    May 18, 2014 at 22:44
  • \$\begingroup\$ @Anko, take it from here. en.wikipedia.org/wiki/Sleep_mode \$\endgroup\$
    – Anssi
    May 19, 2014 at 21:25
  • \$\begingroup\$ OK, that's what I thought you meant. I'm confused by the reasoning though: When applications are suspended for sleep mode, how could they cause damage? \$\endgroup\$
    – Anko
    May 19, 2014 at 21:30
-2
\$\begingroup\$

It can if the card's circuit shorts, however this is very unlikely to happen because the system is isolated until a certain high temperature. In some case the thermodynamic system of the card can be disturbed if it is really close to another system or if it is even touching another material that is not a system.

\$\endgroup\$
6
  • 3
    \$\begingroup\$ How would that scenario be caused by an application? This doesn't seems to address the question. \$\endgroup\$ May 18, 2014 at 5:26
  • \$\begingroup\$ I believe you are not familiar with AND, OR, NOT logic gates \$\endgroup\$
    – Orenrocco
    May 18, 2014 at 5:28
  • 5
    \$\begingroup\$ And I believe you wildly missed the point, for a second time. \$\endgroup\$ May 18, 2014 at 5:31
  • 1
    \$\begingroup\$ There is no software command sendShortCircuit, as such a short circuit would be a defect with the graphics card. The software would not be responsible for this. This question is about if for example graphics cards are rated "100% usage for up to 1s, 90% usage long term average" and the software was obliged not to exceed that rating \$\endgroup\$ May 18, 2014 at 11:25
  • 3
    \$\begingroup\$ @user3643191, we're not attacking you; we're pointing out places where your post can be improved and clarified. All of these comments will eventually be deleted (by design); your post is what will remain. You can edit and improve your post at any time, so take the opportunity to make a better answer. Once you do that, you'll probably pick up some upvotes (or someone might remove a downvote), these comments will eventually go away, and your enlightening answer will educate for years to come. \$\endgroup\$ May 18, 2014 at 18:50

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .