GPU usage

hello all just setup cuda on my laptop (using Quadoro M1200) and running VGG deep learning program to train 23000 images with batch size = 32.
Below is the output of nvidia-smi. Firstly I dont understand why its showing 4096 MiB as the available memory as i checked in dxdiag that the M1200 has avl memory of 20375 MB.
Also why is it utilizing only 2914 MiB ?

Apologize for the rookie questions.

C:>nvidia-smi
Sun Oct 29 11:52:23 2017
±----------------------------------------------------------------------------+
| NVIDIA-SMI 385.54 Driver Version: 385.54 |
|-------------------------------±---------------------±---------------------+
| GPU Name TCC/WDDM | Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
|===============================+======================+======================|
| 0 Quadro M1200 WDDM | 00000000:01:00.0 Off | N/A |
| N/A 65C P0 N/A / N/A | 2914MiB / 4096MiB | 100% Default |
±------------------------------±---------------------±---------------------+

±----------------------------------------------------------------------------+
| Processes: GPU Memory |
| GPU PID Type Process name Usage |
|=============================================================================|
| 0 5936 C …ta\Local\Continuum\anaconda3\python.exe N/A |
±----------------------------------------------------------------------------+

the dxdiag number is not indicating how much memory is on the GPU itself. a tool like deviceQuery will do that. Your M1200 does not have 20GB of on-board memory.

The amount of memory used by your test case is a function of the test case itself. If it only needs ~3GB, it will only use 3GB. It doesn’t automatically use all physical GPU memory.

My confusion is that it took 1 hour 454 minutes to run. If it had allocated more memory, then the time would have been shorter. How to make it allocate more memeory ?

How do you know that? Time and space are not freely exchangeable for most computations.

I know since the CPU computation is taking same time. So im thinking whats the point in running this on a GPU ??

If your statement is to be interpreted as “If the GPU version of the program has the same execution time as the CPU version of the program, it must be because the GPU version isn’t using all of the available GPU memory”, then that statement is simply false.

You might want to ponder:

(1) GPU acceleration in your application may be misconfigured or disabled
(2) The GPU acceleration offered by your application may be rudimentary or not be very good
(3) The Quadro 1200M is a mid-field GPU, it offers about 1/3 of the performance of top-tier Maxwell GPUs