Skip to content

prestontw/rust-nbody

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

30 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Implementing the N-body program in Rust (with a little bit of EC(S) thrown in).

This is almost a direct translation from an assignment in a Parallel Systems course I took algorithm-wise. The interesting part of that assignment is that we had to use UPC—the interesting parts of this implementation are:

  • it's in Rust,
  • it's a little optimized, and
  • it has the data layout of an EC(S) implementation.

Documentation: clone and run cargo doc

Benchmark: clone and run cargo bench.

Processor/System Output
AMD Ryzen 9 5900X/Kubuntu 22.04 [34.783 ms 34.842 ms 34.900 ms]
m1 macbook pro [35.329 ms 35.627 ms 35.939 ms]
2.9 GHz Intel Core i9/MacOS [72.774 ms 73.207 ms 73.692 ms]
2.9 GHz Intel Core i9/MacOS (rust Docker) [75.678 ms 76.128 ms 76.629 ms]
AMD Ryzen 5 2400g/Fedora Linux [95.662 ms 96.389 ms 97.223 ms]

The master branch has slightly better performance (2%) than the update branch.

Using Docker

Building the image

docker build --rm -f "Dockerfile" -t rust-nbody:latest .

Entering the shell

Useful for compilation, benchmarking, etc., rather than doing everything from Dockerfile CMD.

docker run -it --rm --user "$(id -u)":"$(id -g)" -v "$PWD":/opt/src rust-nbody:latest /bin/bash

TODO

maybe check out leapfrog finite difference approximation scheme -> ran into this question while trying to specify data flow

About

Comparing Parallel System's class's lab with version in Rust

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors