This commit is contained in:
Evghenii
2013-11-15 17:32:59 +01:00
parent 3454f51d2c
commit 95d6647dce
2 changed files with 32 additions and 7 deletions

View File

@@ -2,7 +2,7 @@
EXAMPLE=options EXAMPLE=options
CPP_SRC=options.cpp options_serial.cpp CPP_SRC=options.cpp options_serial.cpp
ISPC_SRC=options.ispc ISPC_SRC=options.ispc
ISPC_IA_TARGETS=sse2,sse4-x2,avx-x2 ISPC_IA_TARGETS=avx-x2
ISPC_ARM_TARGETS=neon ISPC_ARM_TARGETS=neon
include ../common.mk include ../common.mk

View File

@@ -46,6 +46,19 @@ using std::max;
#include "options_ispc.h" #include "options_ispc.h"
using namespace ispc; using namespace ispc;
#include <sys/time.h>
static inline double rtc(void)
{
struct timeval Tvalue;
double etime;
struct timezone dummy;
gettimeofday(&Tvalue,&dummy);
etime = (double) Tvalue.tv_sec +
1.e-6*((double) Tvalue.tv_usec);
return etime;
}
extern void black_scholes_serial(float Sa[], float Xa[], float Ta[], extern void black_scholes_serial(float Sa[], float Xa[], float Ta[],
float ra[], float va[], float ra[], float va[],
@@ -96,8 +109,10 @@ int main(int argc, char *argv[]) {
double binomial_ispc = 1e30; double binomial_ispc = 1e30;
for (int i = 0; i < 3; ++i) { for (int i = 0; i < 3; ++i) {
reset_and_start_timer(); reset_and_start_timer();
const double t0 = rtc();
binomial_put_ispc(S, X, T, r, v, result, nOptions); binomial_put_ispc(S, X, T, r, v, result, nOptions);
double dt = get_elapsed_mcycles(); double dt = (rtc() - t0); //get_elapsed_mcycles();
dt *= 1e3;
sum = 0.; sum = 0.;
for (int i = 0; i < nOptions; ++i) for (int i = 0; i < nOptions; ++i)
sum += result[i]; sum += result[i];
@@ -112,8 +127,10 @@ int main(int argc, char *argv[]) {
double binomial_tasks = 1e30; double binomial_tasks = 1e30;
for (int i = 0; i < 3; ++i) { for (int i = 0; i < 3; ++i) {
reset_and_start_timer(); reset_and_start_timer();
const double t0 = rtc();
binomial_put_ispc_tasks(S, X, T, r, v, result, nOptions); binomial_put_ispc_tasks(S, X, T, r, v, result, nOptions);
double dt = get_elapsed_mcycles(); double dt = rtc() - t0; //get_elapsed_mcycles();
dt *= 1e3;
sum = 0.; sum = 0.;
for (int i = 0; i < nOptions; ++i) for (int i = 0; i < nOptions; ++i)
sum += result[i]; sum += result[i];
@@ -128,8 +145,10 @@ int main(int argc, char *argv[]) {
double binomial_serial = 1e30; double binomial_serial = 1e30;
for (int i = 0; i < 3; ++i) { for (int i = 0; i < 3; ++i) {
reset_and_start_timer(); reset_and_start_timer();
const double t0 = rtc();
binomial_put_serial(S, X, T, r, v, result, nOptions); binomial_put_serial(S, X, T, r, v, result, nOptions);
double dt = get_elapsed_mcycles(); double dt = rtc() - t0; //get_elapsed_mcycles();
dt *= 1e3;
sum = 0.; sum = 0.;
for (int i = 0; i < nOptions; ++i) for (int i = 0; i < nOptions; ++i)
sum += result[i]; sum += result[i];
@@ -147,8 +166,10 @@ int main(int argc, char *argv[]) {
double bs_ispc = 1e30; double bs_ispc = 1e30;
for (int i = 0; i < 3; ++i) { for (int i = 0; i < 3; ++i) {
reset_and_start_timer(); reset_and_start_timer();
const double t0 = rtc();
black_scholes_ispc(S, X, T, r, v, result, nOptions); black_scholes_ispc(S, X, T, r, v, result, nOptions);
double dt = get_elapsed_mcycles(); double dt = rtc() - t0; //get_elapsed_mcycles();
dt *= 1e3;
sum = 0.; sum = 0.;
for (int i = 0; i < nOptions; ++i) for (int i = 0; i < nOptions; ++i)
sum += result[i]; sum += result[i];
@@ -163,8 +184,10 @@ int main(int argc, char *argv[]) {
double bs_ispc_tasks = 1e30; double bs_ispc_tasks = 1e30;
for (int i = 0; i < 3; ++i) { for (int i = 0; i < 3; ++i) {
reset_and_start_timer(); reset_and_start_timer();
const double t0 = rtc();
black_scholes_ispc_tasks(S, X, T, r, v, result, nOptions); black_scholes_ispc_tasks(S, X, T, r, v, result, nOptions);
double dt = get_elapsed_mcycles(); double dt = rtc() - t0; //get_elapsed_mcycles();
dt *= 1e3;
sum = 0.; sum = 0.;
for (int i = 0; i < nOptions; ++i) for (int i = 0; i < nOptions; ++i)
sum += result[i]; sum += result[i];
@@ -179,8 +202,10 @@ int main(int argc, char *argv[]) {
double bs_serial = 1e30; double bs_serial = 1e30;
for (int i = 0; i < 3; ++i) { for (int i = 0; i < 3; ++i) {
reset_and_start_timer(); reset_and_start_timer();
const double t0 = rtc();
black_scholes_serial(S, X, T, r, v, result, nOptions); black_scholes_serial(S, X, T, r, v, result, nOptions);
double dt = get_elapsed_mcycles(); double dt = rtc() - t0; //get_elapsed_mcycles();
dt *= 1e3;
sum = 0.; sum = 0.;
for (int i = 0; i < nOptions; ++i) for (int i = 0; i < nOptions; ++i)
sum += result[i]; sum += result[i];