Следующую функциюvoid GetOptionPricesV7(float *pT, float *pK, float *pS0, float *pC){ int i; float d1, d2, erf1, erf2, invf; float sig2 = sig * sig;#pragma omp parallel for private(invf, d1, d2, erf1, erf2) for (i = 0; i < N; i++) { invf = invsqrtf(sig2 * pT[i]); d1 = (logf(pS0[i] / pK[i]) + (r + sig2 * 0.5f) * pT[i]) * invf; d2 = (logf(pS0[i] / pK[i]) + (r - sig2 * 0.5f) * pT[i]) * invf; erf1 = 0.5f + 0.5f * erff(d1 * invsqrt2); erf2 = 0.5f + 0.5f * erff(d2 * invsqrt2); pC[i] = pS0[i] * erf1 - pK[i] * expf((-1.0f) * r * pT[i]) * erf2; }}
требуется собрать с поддержкой векторного набора команд AVX (ключ –mavx). Нужно ли модифицировать код?
(Отметьте один правильный вариант ответа.)
Варианты ответа
нет, все, что необходимо компилятору для векторизации, в коде присутствует(Верный ответ)
да, добавить прагму simd перед циклом
да, добавить ключевое слово restrict в объявления параметров в функции