Skip to content

Commit 372177e

Browse files
committed
async operations and benchmarks
1 parent e20aade commit 372177e

3 files changed

Lines changed: 374 additions & 76 deletions

File tree

Project.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
name = "ParallelOperations"
22
uuid = "09c1cff2-b94d-4c31-85a1-721512e21c63"
33
authors = ["islent <leoislent@gmail.com>"]
4-
version = "0.1.3"
4+
version = "0.1.4"
55

66
[deps]
77
Distributed = "8ba89e20-285c-5b6f-9357-94700520ee1b"

benchmark/benchmark.jl

Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
using Distributed
2+
using ParallelOperations
3+
using BenchmarkTools
4+
5+
for np in [2, 4, 8]
6+
println("\n=== Testing with $np processes ===")
7+
8+
pids = addprocs(np)
9+
@everywhere using ParallelOperations
10+
11+
test_data = rand(1000, 1000)
12+
13+
println("\n1. Testing sendto sync vs async performance:")
14+
println(" Sync version:")
15+
sync_result = @benchmark begin
16+
for p in $pids
17+
sendto(p, :test_data, $test_data)
18+
end
19+
end samples=3 evals=1
20+
println(" Sync time: $(round(mean(sync_result.times) / 1e9, digits=4)) seconds")
21+
22+
println(" Async version:")
23+
async_result = @benchmark begin
24+
futures = []
25+
for p in $pids
26+
future = sendto_async(p, :test_data, $test_data)
27+
push!(futures, future)
28+
end
29+
fetch.(futures)
30+
end samples=3 evals=1
31+
println(" Async time: $(round(mean(async_result.times) / 1e9, digits=4)) seconds")
32+
println(" Speedup: $(round(mean(sync_result.times) / mean(async_result.times), digits=2))x faster")
33+
34+
println("\n2. Testing bcast sync vs async performance:")
35+
println(" Sync version:")
36+
sync_result = @benchmark bcast($pids, :bcast_data, $test_data) samples=3 evals=1
37+
println(" Sync time: $(round(mean(sync_result.times) / 1e9, digits=4)) seconds")
38+
39+
println(" Async version:")
40+
async_result = @benchmark begin
41+
futures = bcast_async($pids, :bcast_data, $test_data)
42+
fetch.(futures)
43+
end samples=3 evals=1
44+
println(" Async time: $(round(mean(async_result.times) / 1e9, digits=4)) seconds")
45+
println(" Speedup: $(round(mean(sync_result.times) / mean(async_result.times), digits=2))x faster")
46+
47+
println("\n3. Testing gather sync vs async performance:")
48+
for p in pids
49+
sendto(p, :test_data, test_data)
50+
end
51+
52+
println(" Sync version:")
53+
sync_result = @benchmark gather($pids, :test_data) samples=3 evals=1
54+
println(" Sync time: $(round(mean(sync_result.times) / 1e9, digits=4)) seconds")
55+
56+
println(" Async version:")
57+
async_result = @benchmark begin
58+
futures = gather_async($pids, :test_data)
59+
fetch.(futures)
60+
end samples=3 evals=1
61+
println(" Async time: $(round(mean(async_result.times) / 1e9, digits=4)) seconds")
62+
println(" Speedup: $(round(mean(sync_result.times) / mean(async_result.times), digits=2))x faster")
63+
64+
println("\n4. Testing scatterto sync vs async performance:")
65+
scatter_data = [rand(500, 500) for _ in 1:np]
66+
println(" Sync version:")
67+
sync_result = @benchmark scatterto($pids, $scatter_data, :scatter_data) samples=3 evals=1
68+
println(" Sync time: $(round(mean(sync_result.times) / 1e9, digits=4)) seconds")
69+
70+
println(" Async version:")
71+
async_result = @benchmark begin
72+
futures = scatterto_async($pids, $scatter_data, :scatter_data)
73+
fetch.(futures)
74+
end samples=3 evals=1
75+
println(" Async time: $(round(mean(async_result.times) / 1e9, digits=4)) seconds")
76+
println(" Speedup: $(round(mean(sync_result.times) / mean(async_result.times), digits=2))x faster")
77+
78+
rmprocs(pids)
79+
end

0 commit comments

Comments
 (0)