Some time ago I have already opened a similar problem in the premier support. The difference was between MKL and some OS subroutines.
Now in the MKL documentation I can find:
___________________________________________
mkl_get_max_threads
Gets the number of OpenMP* threads targeted for parallelism
____________________________________________________
The following piece of code:
================================================
NMAXTH = OMP_GET_MAX_THREADS()
!
NPROC = OMP_GET_NUM_PROCS()
!
ITH = OMP_GET_THREAD_NUM()
!
! MX_THREADS = NMAXTH
NMAXTH0 = NMAXTH
!
NTMKL = MKL_GET_MAX_THREADS()
======================================================
gives:
NMAXTH=8, NPROC = 8, NTMKL=4.
The running workstation is: Intel Core i7-4810MQ CPU 2.80 Ghz.
Running compiler:
Intel® Parallel Studio XE 2016 Update 4 Composer Edition for Fortran Windows* Integration for Microsoft Visual Studio* 2015, Version 16.0.0063.14, Copyright © 2002-2016 Intel Corporation. All rights reserved.
Intel should clarify differences.