Single_Source_Shortest_Path
application implements fully asynchronous single source shortest path
using the CCASimulator.
To compile the application, execute the following cmake
commands to generate the executable.
$ CC=gcc-13 CXX=g++-13 cmake -S . -B build -D THROTTLE=true -D RECVBUFFSIZE=2 -D ANIMATION=true
$ cmake --build build
-D THROTTLE=true/false
: for enabling throttle of diffusion to mitigate congestion.-D ANIMATION=true/false
: for recording and writing the simulation animation data. To be used by../Analytics/Animations/cca_chip_active_status_animation.py
-D ACTIVE_PERCENT=true/false
: for recording and writing the simulation active status as percentage for each cycle. To be used by../Analytics/Post_Processing/post_processing.py
-D ACTIONQUEUESIZE=<int value>
: side of the action queue. Use64
or more/less or whatever.-D DIFFUSE_QUEUE_SIZE=<int value>
: side of the diffuse queue. Use4096
or more/less or whatever.-D MAXEDGESPERVERTEX=<int value>
: sets the max edges per vertex object before creating a new ghost vertex.-D VICINITY=<int value>
: sets the radius of allocation for the vicinity allocator.-D TERMINATION=true/false
: for running the termination detection algorithm or not. When it is false there won't be any ack messages for each action recieved and that way the overheads of termination can be calculated. This is for benchmarking purposes normally the termination detection will be on.-D THROTTLE_CONGESTION_THRESHOLD=<int value>
: When there is congestion at a compute cell then that compute cell cools down for a period of cycles before generating new operons. This period is provided inTHROTTLE_CONGESTION_THRESHOLD
.-D RECVBUFFSIZE=<int value>
: sets the size of the buffers at each channel of the compute cell.
Assuming the current directory is /Applications/Single_Source_Shortest_Path
$ ./build/SSSP_CCASimulator -f ../../Input_Graphs/Erdos-Renyi_directed_ef_16_v_11.edgelist -g Erdos -od ./Output -s square -root 0 -m 90000 -hx 3 -hy 3 -hdepth 4 -hb 128 -route 0 -mesh 1 -shuffle -verify
$ ./build/SSSP_CCASimulator -f ../../Input_Graphs/Erdos-Renyi_directed_ef_16_v_11.edgelist -g Erdos -od ./Output -s square -root 0 -m 90000 -hx 48 -hy 48 -hdepth 0 -hb 0 -route 0 -mesh 1 -shuffle -verify
-mesh 1
: represents the Torus mesh. 0: is pure mesh.- Make sure to have the output
-od ./Output
directory created before runing the application. -shuffle
: to toggle shuffling of vertices for better load balancing.