Visible to Intel only — GUID: GUID-71FBA8B7-28E3-46C0-99F9-75D2958994C3
Visible to Intel only — GUID: GUID-71FBA8B7-28E3-46C0-99F9-75D2958994C3
qopt-streaming-stores, Qopt-streaming-stores
Enables generation of streaming stores for optimization.
Linux: |
-qopt-streaming-stores=keyword -qno-opt-streaming-stores |
Windows: |
/Qopt-streaming-stores:keyword /Qopt-streaming-stores- |
keyword |
Specifies whether streaming stores are generated. Possible values are:
|
-qopt-streaming-stores=auto |
The compiler decides whether to use streaming stores or normal stores. |
This option enables generation of streaming stores for optimization. This method stores data with instructions that use a non-temporal buffer, which minimizes memory hierarchy pollution.
This option may be useful for applications that can benefit from streaming stores.
None
Example
The following example shows one way to insert fences when specifying -qopt-streaming-stores=always or /Qopt-streaming-stores:always. It inserts a _mm_sfence() intrinsic call just after the loops (such as the initialization loop) where the compiler may insert streaming store instructions.
void simple1(double * restrict a, double * restrict b, double * restrict c, double *d, int n) { int i, j; #pragma omp parallel for for (j=0; j<n; j++) { a[j] = 1.0; b[j] = 2.0; c[j] = 0.0; } _mm_sfence(); // OR _mm_mfence(); #pragma omp parallel for for (i=0; i<n; i++) a[i] = a[i] + c[i]*b[i]; }