Intel® oneAPI Math Kernel Library
Ask questions and share information with other developers who use Intel® Math Kernel Library.

Sobol initialization question

Petros_Mamales
Beginner
204 Views

In the documentation provided in this web page :

http://software.intel.com/sites/products/documentation/doclib/mkl_sa/11/vslnotes/8_4_9_SOBOL.htm

it is stated that unless one declares in params[2] that they want to overwrite the first dimension (or 0th for c/c++ programmers), they need

s-1 primitive polynomials and s-1 directional vecvtors.

"The number of polynomials (and the number of rows in the table) depends on the initialization mode for the first dimension. In the default initialization mode (see [Brat88] for details) it is enough to pass into the library dimen -1 primitive polynomials (correspondingly, the number of rows in the table of initial direction numbers also equals dimen -1). To override default initialization for the first dimension, set VSL_QRNG_OVERRIDE_1ST_DIM_INIT indicator in params[2]:"

However, in the example provided in the folder vslc of the recent release of mkl 11, inthe file %mklroot%\\examples\vslc\source\soboluserdirnums.c

one notices that although no indication is provided in params[2] for overriding the 1st dimension, dimension ( instead of dimension-1) rows of direction vectors are passed in .

Which one of the two is the correct one ? Apparently the first (c-0th) row is all 1's , which is the default for the direction vectors if not overwritten - please correct me if I am wrong.

In the event someone wanted to overwrite the first dimension what would be the  polynomial (c-0th) that they should input in params? 1 ?

Thank you very much in advance,

P-

0 Kudos
3 Replies
Chao_Y_Intel
Moderator
204 Views

Hello,

Some comments from function experts:
Expected behavior of the Sobol initialization is described in the documentation, and the example mentioned below follows this description.
Overriding 1st dimension is possible when user provides initial direction numbers and/or polynomials VSL_USER_INIT_DIRECTION_NUMBERS | VSL_USER_PRIMITIVE_POLYMS.
The library initializes direction numbers for 1st dim with ones, if 1st dimension is not overridden; and computes direction numbers for 1st dim from user-provided initial direction number/polynomials, otherwise. Sizes of arrays which contain initial parameters are set accordingly, dim or dim-1

If the users calculates table of direction numbers on their side, they can provides them by specifying VSL_USER_DIRECTION_NUMBERS mode.  Overriding 1st dimension is not applicable in this case, thus, size of the table is dim x 32

Thanks,

Chao

 

0 Kudos
Petros_Mamales
Beginner
204 Views

Hi Chao Y,

Thank you for the response - for some reason I just saw it now although had been checking ..

There is still something unclear though:

when you write:

"Overriding 1st dimension is not applicable in this case, thus, size of the table is dim x 32"

seems contradictory to me. Do you mean to say thatnotoverriding the first dimension is not an option ? O/wise how can I provide with a table of dimx32?

Thank you again,

P-

0 Kudos
Petros_Mamales
Beginner
204 Views

Hi Chao Y,

Apologies, I was misunderstanding something constantly. The idea is that when one uses (not initial) direction numbers, the polynomials degrees etc are ,of course, useless .

Thank you for your help,

P-

ps: and I a understand now your writting to mean that this option is not there and I should provide with the first dimension direction number.

0 Kudos
Reply