1

I upgraded a GTX960 to a Grid M40 to accelerate FFMPEG encodes. I had everything working with the old GTX960 on CentOS 7 and was impressed enough with the results to get a M40. The OS seems to see the card just fine as you can see:

[root@localhost]~# nvidia-smi
Mon Nov 14 17:59:15 2016       
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 367.48                 Driver Version: 367.48                    |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  GRID M40            Off  | 0000:44:00.0     Off |                  N/A |
| 60%   60C    P0    17W /  53W |      0MiB /  4041MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+
|   1  GRID M40            Off  | 0000:45:00.0     Off |                  N/A |
| 59%   59C    P0    17W /  53W |      0MiB /  4041MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+
|   2  GRID M40            Off  | 0000:46:00.0     Off |                  N/A |
| 40%   41C    P0    16W /  53W |      0MiB /  4041MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+
|   3  GRID M40            Off  | 0000:47:00.0     Off |                  N/A |
|  0%   49C    P0    10W /  53W |      0MiB /  4041MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID  Type  Process name                               Usage      |
|=============================================================================|
|  No running processes found                                                 |
+-----------------------------------------------------------------------------+

And I can run some sample Nvidia apps:

[root@localhost]~/NVIDIA_CUDA-8.0_Samples/1_Utilities/bandwidthTest# ./bandwidthTest 
[CUDA Bandwidth Test] - Starting...
Running on...

 Device 0: GRID M40
 Quick Mode

 Host to Device Bandwidth, 1 Device(s)
 PINNED Memory Transfers
   Transfer Size (Bytes)        Bandwidth(MB/s)
   33554432                     6286.3

 Device to Host Bandwidth, 1 Device(s)
 PINNED Memory Transfers
   Transfer Size (Bytes)        Bandwidth(MB/s)
   33554432                     6441.0

 Device to Device Bandwidth, 1 Device(s)
 PINNED Memory Transfers
   Transfer Size (Bytes)        Bandwidth(MB/s)
   33554432                     64577.1

Result = PASS

But when I try running ffmpeg, I get this error:

[hevc_nvenc @ 0x290e500] No NVENC capable devices found
Stream mapping:
  Stream #0:0 -> #0:0 (h264 (native) -> hevc (hevc_nvenc))
  Stream #0:1 -> #0:1 (copy)
Error while opening encoder for output stream #0:0 - maybe incorrect parameters such as bit_rate, rate, width or height

I have tried to uninstall the nvidia drivers, cuda and reinstall them, I even recompiled ffmpeg, but the error hasn't gone away. For grins I also tried a Nvidia Quadro K2200 I had laying around with the same results. Any ideas?

1

I think I've got your answer. I can see here Stream #0:0 -> #0:0 (h264 (native) -> hevc (hevc_nvenc)) that you're trying to go from a native h.264 input to an h.265 (hevc) output. I don't think GM107 (the early Maxwell chip your M40 is based on and of which it has four members inside) supports h.265 encoding. According to that compatibility list, you should be able to verify this by trying the transcode from h.264 to MPEG-4 - if it works, then you know there's likely nothing else wrong, it's just that you don't have the right hardware for the job.

By the same compatibility list, your GTX 960, with its late-Maxwell chip (GM206), will support h.265 just fine.

| improve this answer | |
  • That is a great thought, but on Wikipedia it says it does have a GM200 (en.wikipedia.org/wiki/…) BUT, the version I got seems to be different servethehome.com/nvidia-grid-m40-4x-maxwell-gpus-16gb-ram-cards – Alan Nov 15 '16 at 0:49
  • It's entirely possible there are two different kinds. You should run my diagnostic encode and report back. – Adam Wykes Nov 15 '16 at 1:51
  • I see the mistake I made now. My understanding was that a Tesla card fit into a Nvidia Grid system (server) but that the cards themselves could be branded as either Grid or Tesla with the difference being if it was sold in a server, or as a standalone card. Turns out that was a false assumption. The Grid M40 card was a development / prototype card that was never standard production and is not officially supported. While it should do a great job at h.264, I had intended to only do h.265 and so will need to upgrade. – Alan Nov 15 '16 at 16:42
  • 1
    Good to know! On a side note, "gaming" GPUs like the 960 and RX 470 have really come down in price and power requirements recently, so if you have multiple PCI-E slots that could be a cheaper way forward. – Adam Wykes Nov 15 '16 at 16:50
  • 1
    Yeah, since I dont know the specifics of the task I can't answer that, but there's definitely lots to consider. Four cards are usually less efficient than a single PCB whether it has more than one GPU on it or not, and single cards certainly make it easier to cool and power (does your PSU have the right number of 6/8 pin power connectors, etc). The two advantages to multiple cards are usually raw power and sometimes cost. – Adam Wykes Nov 15 '16 at 17:29

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.