123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- function black_scholes_starpu(data ::Matrix{Float64}, res ::Matrix{Float64}, nslices ::Int64)
- vert = StarpuDataFilter(STARPU_MATRIX_FILTER_VERTICAL_BLOCK, nslices)
- @starpu_block let
- dat_handle, res_handle = starpu_data_register(data, res)
- starpu_data_partition(dat_handle, vert)
- starpu_data_partition(res_handle, vert)
-
- #Compute the price of call and put option in the res matrix
- @starpu_sync_tasks for task in (1:nslices)
- @starpu_async_cl cl(dat_handle[task], res_handle[task])
- end
- end
- end
- function init_data(data, data_nbr);
- for i in 1:data_nbr
- data[1,i] = rand(Float64) * 100
- data[2,i] = rand(Float64) * 100
- data[3,i] = rand(Float64)
- data[4,i] = rand(Float64) * 10
- data[5,i] = rand(Float64) * 10
- end
- return data
- end
-
- function median_times(data_nbr, nslices, nbr_tests)
- data ::Matrix{Float64} = zeros(5, data_nbr)
- # data[1,1] = 100.0
- # data[2,1] = 100.0
- # data[3,1] = 0.05
- # data[4,1] = 1.0
- # data[5,1] = 0.2
- res ::Matrix{Float64} = zeros(2, data_nbr)
- exec_times ::Vector{Float64} = [0. for i in 1:nbr_tests]
- for i = 1:nbr_tests
-
- init_data(data, data_nbr)
- tic()
- black_scholes_starpu(data, res, nslices);
- t = toq()
- exec_times[i] = t
- end
- sort!(exec_times)
- # println(data)
- # println(res)
-
- return exec_times[1 + div(nbr_tests - 1, 2)]
- end
- function display_times(start_nbr, step_nbr, stop_nbr, nslices, nbr_tests)
- mtc = map( (x->parse(Float64,x)), open("../DAT/black_scholes_c_times.dat") do f
- readlines(f)
- end)
- mtcgen = map( (x->parse(Float64,x)), open("../DAT/black_scholes_c_generated_times.dat") do f
- readlines(f)
- end)
- i = 1
- open("../DAT/black_scholes_times.dat", "w") do f
- for data_nbr in (start_nbr : step_nbr : stop_nbr)
- t = median_times(data_nbr, nslices, nbr_tests)
- println("Number of data:\n$data_nbr\nTimes:\njl: $t\nC: $(mtc[i])\nGen: $(mtcgen[i])")
- write(f, "$data_nbr $(t) $(mtcgen[i]) $(mtc[i])\n")
- i = i + 1
- end
- end
- end
|