The main
branch keeps the non-optimized version of code. For optimized versions with different methods, just switch to respective branches by git checkout <the branch>
flowchart TD
N[Rewrite the Algorithm] --> A
A --> |Def NO| N
subgraph code [KNOW UR CODE]
N
A
end
A{is Parallelizable?}
Y[["Distribution of Work
Memory Access Pattern
Occupancy/Device Usage"]]
A -->|Independency-YES| Y
A --> |Dependencies-Maybe NO?| M{{"Requires
Synchronizations
Barriers"}}
subgraph machine [KNOW UR MACHINE]
Y
M
end
style Y fill:#f6f,stroke:#333,stroke-width:4px
style M fill:#f6f,stroke:#333,stroke-width:4px
style A fill:#99d,stroke:#f66,stroke-width:2px
Each folder has (and will have) its respective readme
describing what type of modules should be placed inside
Make sure you have the following folders
- Data Files should be placed in
./FFT/Data/
- Output results by methods from
/FFT/eval/
will be output to/FFT/Data/Results
- FFTW C/C++ library for validating the results (not necessary)
MacOS
installation:brew install fftw
Change the FFTW
library path as needed
In the ./FFT/
folder use the bash command make
If a fresh build is desired, simply run make clean
before running make
or make all
./It_CT.out
or the correponding SLURM script if present
- Consider larger dataset
- Consider larger dataset
- Keep Codes in Separate Branches
makefile
for eachOpenMP- MPI
CUDA
SLURM
script for each- OpenMP
- MPI
CUDA
OpenMP | MPI | CUDA | |
---|---|---|---|
1D FFT | ✔️ | Not Considering | ✅ |
2D FFT | ✔️ | ❌ | ❌ |
Performance Eval Subroutines | ✔️ | ✔️ | ✅ |