A newer version of this document is available. Customers should click here to go to the newest version.
set_mode
Sets a new mode for VM functions according to the mode parameter and returns the previous VM mode.
Description
The set_mode function sets a new mode for VM functions according to the new_mode parameter and returns the previous VM mode. The mode change has a global effect on all the VM functions within a queue.
oneMKL VM mode parameters provide control on the accuracy of mathematical functions, and on oneMKL VM Strided API behavior. The mode set for a given queue can be overridden locally by the local mode parameter in a VM function call.
The mode value is a bitwise OR (|) combination of the values described in the following table.
Value  |  
        Description  |  
       
|---|---|
Accuracy Control  |  
        |
oneapi::mkl::vm::mode::ha  |  
        High accuracy versions of VM functions. (DEFAULT)  |  
       
oneapi::mkl::vm::mode::la  |  
        Low accuracy versions of VM functions.  |  
       
oneapi::mkl::vm::mode::ep  |  
        Enhanced performance accuracy versions of VM functions.  |  
       
Slice Argument Checking  |  
        |
oneapi::mkl::vm::mode::badarg_exception  |  
        Throw a oneapi::mkl::invalid_argument exception on invalid arguments. (DEFAULT)  |  
       
oneapi::mkl::vm::mode::badarg_quiet  |  
        Invalid arguments quietly make the call a “no-op”. The VM status is set to vm::status::empty_computation.  |  
       
Slice Indexing Controls  |  
        |
oneapi::mkl::vm::mode::slice_normal  |  
        Non-equal slice sizes are considered invalid. (DEFAULT)  |  
       
oneapi::mkl::vm::mode::slice_minimum  |  
        The minimum of all slice sizes defines the number of evaluations.  |  
       
oneapi::mkl::vm::mode::slice_cyclic  |  
        The output slice(s) size defines the number of evaluations. Input slices wrap around from the start.  |  
       
Default Local Mode  |  
        |
oneapi::mkl::vm::mode::not_defined  |  
        VM mode not defined. This has no effect.  |  
       
The default value if no VM mode is defined or if the VM mode value is set to mode::not_defined is (mode::badarg_exception | mode::slice_normal | mode::ha).
API
Syntax
uint64_t set_mode(queue& exec_queue, uint64_t new_mode )
set_mode supports the following devices: CPU and GPU.
Input Parameters
- exec_queue
 -  
     
The queue where the routine should be executed.
 - new_mode
 -  
     
Specifies the VM mode to be set.
 
Output Parameters
- return value (old_mode)
 -  
     
Specifies the former VM mode.
 
Examples
oldmode = set_mode (exec_queue , mode::la); oldmode = set_mode (exec_queue , mode::ep | mode::ftzdazon);