From 98d9a6a105d4e8a7d21fd81af7a280dd145b2920 Mon Sep 17 00:00:00 2001 From: Cliff Burdick <30670611+cliffburdick@users.noreply.github.com> Date: Thu, 23 Jan 2025 09:37:23 -0800 Subject: [PATCH] Changing black scholes to float and improving performance --- examples/black_scholes.cu | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/examples/black_scholes.cu b/examples/black_scholes.cu index cb7b94fa1..62dbb4c34 100644 --- a/examples/black_scholes.cu +++ b/examples/black_scholes.cu @@ -72,11 +72,11 @@ public: auto r = r_(idx); auto VsqrtT = V * sqrt(T); - auto d1 = (log(S / K) + (r + 0.5 * V * V) * T) / VsqrtT ; + auto d1 = (log(S / K) + (r + 0.5f * V * V) * T) / VsqrtT ; auto d2 = d1 - VsqrtT; - auto cdf_d1 = normcdf(d1); - auto cdf_d2 = normcdf(d2); - auto expRT = exp(-1 * r * T); + auto cdf_d1 = normcdff(d1); // Note in a custom op we call the CUDA math function directly + auto cdf_d2 = normcdff(d2); + auto expRT = exp(-1.f * r * T); out_(idx) = S * cdf_d1 - K * expRT * cdf_d2; } @@ -96,11 +96,11 @@ void compute_black_scholes_matx(tensor_t& K, cudaExecutor& exec) { auto VsqrtT = V * sqrt(T); - auto d1 = (log(S / K) + (r + 0.5 * V * V) * T) / VsqrtT ; + auto d1 = (log(S / K) + (r + 0.5f * V * V) * T) / VsqrtT ; auto d2 = d1 - VsqrtT; auto cdf_d1 = normcdf(d1); auto cdf_d2 = normcdf(d2); - auto expRT = exp(-1 * r * T); + auto expRT = exp(-1.f * r * T); (output = S * cdf_d1 - K * expRT * cdf_d2).run(exec); } @@ -109,7 +109,7 @@ int main([[maybe_unused]] int argc, [[maybe_unused]] char **argv) { MATX_ENTER_HANDLER(); - using dtype = double; + using dtype = float; index_t input_size = 100000000; constexpr uint32_t num_iterations = 1;