stanford-mast / grazelle-ppopp18 Goto Github PK
View Code? Open in Web Editor NEWArtifact for PPoPP 2018 paper "Making Pull-Based Graph Processing Performant"
License: Other
Artifact for PPoPP 2018 paper "Making Pull-Based Graph Processing Performant"
License: Other
Hi, this project looks great. I'm curious how do you get the register_set that is used by threads_save_context_to
. Do you rely on some tool to get that info, or just reasoning it manually? Thanks!
threads_save_context_to PROC PUBLIC
mov QWORD PTR [rcx+0], r12
mov QWORD PTR [rcx+8], r13
mov QWORD PTR [rcx+16], r14
mov QWORD PTR [rcx+24], r15
mov QWORD PTR [rcx+32], rdi
mov QWORD PTR [rcx+40], rsi
mov QWORD PTR [rcx+48], rbx
mov QWORD PTR [rcx+56], rbp
ret
threads_save_context_to ENDP
There is a compile error. In this example, I ran "make fig13" using AS = nasm on a machine with Intel(R) Xeon(R) Gold 5117 CPU @ 2.00GHz.
RM output/linux
Clean completed: grazelle.
make -j 8 EXPERIMENTS="THRESHOLD_WITHOUT_COUNT" ALGORITHM="BREADTH_FIRST_SEARCH"
make[1]: Entering directory '/soe/pebraun/Grazelle-PPoPP18'
CC output/linux/graphdata.c.o
CC output/linux/cmdline.c.o
CC output/linux/benchmark.c.o
CC output/linux/execution_bfs.c.o
CC output/linux/scheduler.c.o
CC output/linux/execution_pr.c.o
CC output/linux/execution_cc.c.o
CC output/linux/phases.c.o
CC output/linux/main.c.o
CC output/linux/execution.c.o
CC output/linux/threads.c.o
CC output/linux/numanodes.c.o
X-AS output/linux/asm/source/threads.s
X-AS output/linux/asm/include/graphdata.S
X-AS output/linux/asm/include/constants.S
X-AS output/linux/asm/include/scheduler_push.S
X-AS output/linux/asm/include/scheduler_pull.S
X-AS output/linux/asm/include/registers.S
X-AS output/linux/asm/include/threadhelpers.S
X-AS output/linux/asm/include/phasehelpers.S
X-AS output/linux/asm/source/phase_vertex_bfs.s
X-AS output/linux/asm/source/benchmark.s
X-AS output/linux/asm/source/phase_vertex_pr.s
X-AS output/linux/asm/source/constants.s
X-AS output/linux/asm/source/phase_vertex_cc.s
X-AS output/linux/asm/source/phase_edge_push_bfs.s
X-AS output/linux/asm/source/phase_edge_push_pr.s
X-AS output/linux/asm/source/phases.s
X-AS output/linux/asm/source/phase_edge_push_cc.s
X-AS output/linux/asm/source/phase_edge_pull_bfs.s
X-AS output/linux/asm/source/phase_edge_pull_pr.s
X-AS output/linux/asm/source/phase_edge_pull_cc.s
AS output/linux/threads.s.o
AS output/linux/phase_vertex_bfs.s.o
AS output/linux/benchmark.s.o
AS output/linux/phase_vertex_pr.s.o
AS output/linux/constants.s.o
AS output/linux/phase_vertex_cc.s.o
AS output/linux/phase_edge_push_bfs.s.o
AS output/linux/phase_edge_push_pr.s.o
AS output/linux/phases.s.o
AS output/linux/phase_edge_push_cc.s.o
AS output/linux/phase_edge_pull_bfs.s.o
AS output/linux/phase_edge_pull_pr.s.o
AS output/linux/phase_edge_pull_cc.s.o
LD output/linux/grazelle
/usr/bin/ld: output/linux/phase_edge_pull_pr.s.o: relocation R_X86_64_32S against symbol graph_scheduler_dynamic_counter_numa' can not be used when making a PIE object; recompile with -fPIC /usr/bin/ld: output/linux/phase_edge_pull_cc.s.o: relocation R_X86_64_32S against symbol
graph_scheduler_dynamic_counter_numa' can not be used when making a PIE object; recompile with -fPIC
/usr/bin/ld: output/linux/phase_edge_push_bfs.s.o: relocation R_X86_64_32S against symbol graph_scheduler_dynamic_counter_numa' can not be used when making a PIE object; recompile with -fPIC /usr/bin/ld: output/linux/phase_vertex_pr.s.o: relocation R_X86_64_32S against symbol
graph_vertex_props' can not be used when making a PIE object; recompile with -fPIC
/usr/bin/ld: output/linux/threads.s.o: relocation R_X86_64_32S against .data' can not be used when making a PIE object; recompile with -fPIC /usr/bin/ld: output/linux/phase_edge_pull_bfs.s.o: relocation R_X86_64_32S against symbol
graph_scheduler_dynamic_counter_numa' can not be used when making a PIE object; recompile with -fPIC
/usr/bin/ld: output/linux/phase_edge_push_pr.s.o: relocation R_X86_64_32S against symbol graph_scheduler_dynamic_counter_numa' can not be used when making a PIE object; recompile with -fPIC /usr/bin/ld: output/linux/phase_edge_push_cc.s.o: relocation R_X86_64_32S against symbol
graph_scheduler_dynamic_counter_numa' can not be used when making a PIE object; recompile with -fPIC
/usr/bin/ld: output/linux/phase_vertex_cc.s.o: relocation R_X86_64_32S against symbol graph_vertex_props' can not be used when making a PIE object; recompile with -fPIC /usr/bin/ld: output/linux/phase_vertex_bfs.s.o: relocation R_X86_64_32S against symbol
graph_vertex_props' can not be used when making a PIE object; recompile with -fPIC
/usr/bin/ld: final link failed: Nonrepresentable section on output
collect2: error: ld returned 1 exit status
Makefile:360: recipe for target 'output/linux/grazelle' failed
make[1]: *** [output/linux/grazelle] Error 1
make[1]: Leaving directory '/soe/pebraun/Grazelle-PPoPP18'
Makefile:354: recipe for target 'fig13' failed
make: *** [fig13] Error 2
Hi,
After the BFS is compiled --
$ make grazelle ALGORITHM=BREADTH_FIRST_SEARCH
I would like to assign specific root vertex for the execution of BFS. But I am unable to find a command option (e.g., -v vextex_id
) to do so:
$ ./output/linux/grazelle -i /data/livejournal.bin -n 40 -u 0,1 -v 1000
, such that the BFS will start with the vertex with ID 1000.
Can you please let me know how to customize the root vertex for graph traversal.
Hi, I am interested in this project and would like to run some test. However, it seems get a compile error and could not find a way to fix it, could you please give me some help?
We test the project with Intel(R) Xeon(R) CPU E5-2680 v4 @ 2.40GHz (2 sockets x 14 core) with gcc 4.9.3.
The compiler error information lists as follow:
AS output/linux/phase_edge_push_bfs.s.o
output/linux/asm/source/phase_edge_push_bfs.s: Assembler messages:
output/linux/asm/source/phase_edge_push_bfs.s:283: Error: ambiguous operand size for dec' output/linux/asm/source/phase_edge_push_bfs.s:283: Error: ambiguous operand size for
inc'
output/linux/asm/source/phase_edge_push_bfs.s:283: Error: ambiguous operand size for inc' output/linux/asm/source/phase_edge_push_bfs.s:283: Error: ambiguous operand size for
inc'
output/linux/asm/source/phase_edge_push_bfs.s:283: Error: ambiguous operand size for inc' output/linux/asm/source/phase_edge_push_bfs.s:283: Error: invalid operands (*ABS* and *UND* sections) for
'
output/linux/asm/source/phase_edge_push_bfs.s:283: Error: invalid operands (ABS and UND sections) for *' output/linux/asm/source/phase_edge_push_bfs.s:283: Error: invalid operands (*ABS* and *UND* sections) for
'
output/linux/asm/source/phase_edge_push_bfs.s:283: Error: invalid operands (ABS and UND sections) for `*'
Makefile:377: recipe for target 'output/linux/phase_edge_push_bfs.s.o' failed
make: *** [output/linux/phase_edge_push_bfs.s.o] Error 1
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.