Macbook Pro won't boot up While using my Macbook Pro (2012) yesterday, the screen suddenly went black and turned off - instantly.  I turned it back on, can see the Apple logo bu the progress bar sticks at around 40%.  The MacOS version is El Capitan, 8GB RAM and 500GB SSD.

I tried rebooting while hold CMD + R: I see the Apple logo, the progress bar gets to about 80% then it restarts again. All I get then is a blank grey screen.

Next I tried OPTION + CMD + R: this time it asks for my WiFi network, then I see the spinning globe icon.  It finishes downloading files, reboots and again goes back to a blank grey screen.

Tried to run Apple Diagnostics, by holding down D during a reboot - all I got was the blank grey screen. So I googled some more and found that if you reboot, hold OPTION + D then it connects to the internet to run the hardware test.  The hardware test completes successfully with no errors, using both the standard and "extended" set of tests.

The next step was to run Verbose mode using CMD + V.  I tried to capture this on my camera as it chugged through a load of debug messages. Too much to list out, but I will show what look like errors:

** /dev/rdisk1 (NO WRITE)

** Root file system
   Executing fsck_hfs (version hfs-305.10.1).
hfs: Received 6 orphaned / unlimited files and 8 directories
BootCacheControl: Unable to open /var/db/BootCache.playlist: 2 No such file or directory
Warning: couldn't block sleep during code updates
Warning: proceeding w/o DiskArb

bash: /etc/rc.server: No such file or directory
bash: /etc/rc.installer_cleanup: No such file or directory

fInterfaceSnapshots is missing [ this is repeated 10 times ]

** GPU Hardware VM is disabled (multispace: disabled, page table updates with DMA: disabled, non-contiguous VRAM: disabled)

Airport: Link Down on en1. Reason 8 (Disassociated because station leaving)
Got incomplete channel sequence length 0, should be 16
en1: channel changed to 1
en1: IO80211Interface::postMessage bssid changed

Previous shutdown cause: 3

DSMOS has arrived
in func createVirtualInterface ifRole = 1
IO80211VirtualInterface::createIOReporters p2p0 provider 0
IO80211InterfaceMonitor::initWithServiceAndName(): Unable to get fProvider
Unable to create IO80211InterfaceMonitor
Have you looked into LangLangC's suggestion in this post: GPU problem - Boot Hangs on Grey Screen. Apparently, this fix works for NVDIA as well as Radeon chips. If you have another Mac, you can use target mode to access the failed MacBook; this post has some advice on that: Single-User-Recovery-Mode on High Sierra 10.13.6.
Also, this post might help you: https://www.justinsilver.com/technology/os-x-el-capitan-10-11-1-hanging-on-boot-fixed/#os_x_fix. 
Good luck!