@@ -3,52 +3,56 @@ using VecchiaMLE
3
3
using DelimitedFiles
4
4
using CUDA
5
5
6
- function main ()
6
+ function main (; cpu :: Bool = true , gpu :: Bool = true )
7
7
# The samples are given as a 3d array. Reshaping to 2d
8
- samples = NPZ. npzread (" caleb_samples.npy" )
8
+ samples = NPZ. npzread (" ../../data/ caleb_samples.npy" )
9
9
samples = reshape (samples, size (samples, 1 ), :)
10
- # Fist 100 samples.
11
- samples = samples[1 : 100 , 1 : round (Int, sqrt (size (samples, 2 )))^ 2 ]
12
10
13
- Number_of_Samples = size (samples, 1 )
14
- ens = 2 : size (samples, 2 )
15
- ns = [x for x in ens if x == round (Int, (sqrt (x)))^ 2 ]
11
+ # Fist 100 samples.
12
+ samples_cpu = Matrix {Float64} (samples[1 : 100 , :])
16
13
14
+ Number_of_Samples = size (samples_cpu, 1 )
15
+ dim = size (samples_cpu, 2 )
16
+ ns = collect (10000 : 10000 : dim)
17
17
k = 10
18
+
19
+ if cpu
18
20
time_memory_io_file = open (" time_memory_cpu.txt" ," a" )
19
21
write (time_memory_io_file, " time, memory\n " )
20
22
21
23
for (i, n) in enumerate (ns)
22
- input = VecchiaMLE. VecchiaMLEInput (Int (sqrt (n)), min (Int (sqrt (n)), k), samples[:, 1 : n], Number_of_Samples, 5 , 1 )
24
+ nn = Int (floor (sqrt (n)))
25
+ input = VecchiaMLE. VecchiaMLEInput (nn, min (nn, k), samples_cpu[:, 1 : nn^ 2 ], Number_of_Samples, 5 , 1 )
23
26
diagsnostics = @timed VecchiaMLE_Run (input)
24
27
25
28
write (time_memory_io_file, " $(diagsnostics[2 ]) , $(diagsnostics[3 ]) \n " )
26
29
println (" $i , cpu, $(diagsnostics[2 ]) s, \t $(round (Float64 (i)/ length (ns)* 100.0 , digits= 4 )) %" )
27
- if diagsnostics[2 ] > 25
30
+ if diagsnostics[2 ] > 300
28
31
break
29
32
end
30
33
end
31
34
close (time_memory_io_file)
35
+ end
32
36
33
37
# CPU tests done, onto GPU tests
34
- samples = convert (Matrix {Float64}, samples )
35
- samples = CuMatrix {Float64} (samples)
36
-
38
+ samples_gpu = CuMatrix {Float64} (samples_cpu )
39
+
40
+ if gpu
37
41
time_memory_io_file = open (" time_memory_gpu.txt" ," a" )
38
42
write (time_memory_io_file, " time, memory\n " )
39
43
40
44
for (i, n) in enumerate (ns)
41
- sample_slice = view (samples, :, 1 : n )
42
- input = VecchiaMLE. VecchiaMLEInput (Int ( sqrt (n)) , min (Int ( sqrt (n)) , k), sample_slice , Number_of_Samples, 5 , 2 )
45
+ nn = floor ( sqrt (n) )
46
+ input = VecchiaMLE. VecchiaMLEInput (nn , min (nn , k), samples_gpu[:, 1 : nn ^ 2 ] , Number_of_Samples, 5 , 2 )
43
47
diagsnostics = @timed VecchiaMLE_Run (input)
44
48
45
49
write (time_memory_io_file, " $(diagsnostics[2 ]) , $(diagsnostics[3 ]) \n " )
46
50
println (" $i , gpu, $(diagsnostics[2 ]) s, \t $(round (Float64 (i)/ length (ns)* 100.0 , digits= 4 )) %" )
47
51
48
- if diagsnostics[2 ] > 25
52
+ if diagsnostics[2 ] > 300
49
53
break
50
54
end
51
55
end
52
-
53
56
close (time_memory_io_file)
57
+ end
54
58
end
0 commit comments