Skip to content
forked from graph500/graph500

Graph500 hybrid ***MPI+Thread implementations***

License

Unknown, Unknown licenses found

Licenses found

Unknown
license.txt
Unknown
COPYING
Notifications You must be signed in to change notification settings

danghvu/graph500

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

This repository implements three versions of graph500 (bfs-only) based on the latest reference code, using the MPI+OMP model with MPI_THREAD_MULTIPLE where each OpenMP thread communitates simultenously:

  • src/bfs_mpi_omp.c, src/bfs_mpi_omp_disp.c: mainly uses MPI_Send/_Recv, half of the threads are dedicated for sending, and half are dedicated for receiving. The difference between the two is that _disp version will distribute the vertex when it arrives, while the other will keep them in private queue and distribute afterward.

  • src/bfs_mpi_omp_nb.c: is non-blocking version, using mainly MPI_Isend/_Irecv/_Test.

This repository can be used to evaluate MPI implementations that support MPI_THREAD_MULTIPLE. Please also set the number of threads, and affinity rule OMP_NUM_THREADS=64 OMP_PLACES=cores OMP_PROC_BIND=close.

If you use these custom implementations, please cite "Advanced Thread Synchronization for Multithreaded MPI Implementations"

@inproceedings{dang2017advanced,
  title={Advanced Thread Synchronization for Multithreaded {MPI} Implementations},
  author={Dang, Hoang-Vu and Seo, Sangmin and Amer, Abdelhalim and Balaji, Pavan},
  booktitle={Cluster, Cloud and Grid Computing (CCGRID), 2017 17th IEEE/ACM International Symposium on},
  pages={314--324},
  year={2017},
  organization={IEEE}
}

About

Graph500 hybrid ***MPI+Thread implementations***

Resources

License

Unknown, Unknown licenses found

Licenses found

Unknown
license.txt
Unknown
COPYING

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C 96.7%
  • MATLAB 1.3%
  • C++ 1.3%
  • Other 0.7%