diehlpk / async_heat_equation

Supplementary materials for the paper: Benchmarking the Parallel 1D Heat Equation Solver in Chapel, Charm++, C++, HPX, Go, Julia, Python, Rust, Swift, and Java
https://arxiv.org/abs/2307.01117
Boost Software License 1.0
11 stars 5 forks source link

Performance improvement of Julia implementation #7

Closed doraemonho closed 1 year ago

doraemonho commented 1 year ago

Hi,

Just make some changes to the Julia implementation. I choose the create a new jl file as I heavily change the code structure with 2 different approaches, while the performances are similar.

The new implementation should now more align with the julia's standard coding style and more importantly, improving the performance of Julia by an order of magnitude. Now Julia should be concise (<30 lines of main code) and comparable to the performance of C++. The following plot is performed under NERSC's Perlmutter CPU node with julia. 1.9.0-rc2 image

Changes are:

  1. Rewrite of benchmark function
  2. Rewrite of work function 2.1 Polyester's approach to compute the heat equation (New_heat2.jl) 2.2 FastBroadcast's approach to compute the heat equation (New_heat.jl)
doraemonho commented 1 year ago

Hi @diehlpk , may I know any update on this?

diehlpk commented 1 year ago

Sorry, I was at conferences and just saw the pull request. I will have a look next week.

I will definitely mention the new Julia code in my talk.

doraemonho commented 1 year ago

@diehlpk Thanks for checking! I just make changes according to your comment. Let me know if I miss anything