In [1]:
using PyPlot
include("julia/laplace1D.jl")


Out[1]:
laplace_matrix (generic function with 1 method)

In [1]:
#Boundary conditions.
a=0.0;
b=1.0;
#Number of grid points.
N=1000;
#Richardson iteration parameter.
alpha=1.0/2.0;
#Number of Richardson iterations.
iter=1000*N;
#Output vectors
u_c=zeros(N);
u_jl=zeros(N);
#Discretized domain
x=linspace(0,1,N);

In [1]:
#Time the C code
time_c = time()
ccall( (:driver,"./c/laplace1D.so"), # 2-tuple containing symbol and shared library path
Void, #Return type.
(Float64,Int64,Int64,Float64,Float64,Ptr{Float64}), #Function signature.
alpha,iter,N,a,b,u_c); #Arguments to C function. (Julia handles marshalling for you.) 
time_c = time() - time_c;
plot(x,u_c);



In [1]:
#Time the Julia code
time_jl = time();
driver(alpha,iter,N,a,b,u_jl);
time_jl = time() - time_jl;
plot(x,u_jl);



In [2]:
time_ratio=time_jl/time_c


Out[2]:
82.2673752774789

In [2]:
@profile driver(alpha,iter,N,a,b,u_jl);

In [3]:
Profile.print()


WARNING: The profile data buffer is full; profiling probably terminated
before your program finished. To profile for longer runs, call Profile.init()
with a larger buffer and/or larger delay.
1     .../IJulia/src/IJulia.jl; eventloop; line: 68
   1 ...rc/execute_request.jl; execute_request_0x535c5df2; line: 132
     1 loading.jl; include_string; line: 83
          1 profile.jl; anonymous; line: 14
             1 ...julia/laplace1D.jl; driver; line: 39
              1 array.jl; +; line: 147
4     array.jl; unsafe_copy!; line: 31
    12409 multi.jl; anonymous; line: 1308
      12409 ...Julia/src/IJulia.jl; eventloop; line: 68
         12409 ...xecute_request.jl; execute_request_0x535c5df2; line: 132
           12409 loading.jl; include_string; line: 83
                12409 profile.jl; anonymous; line: 14
                   8415 ...a/laplace1D.jl; driver; line: 38
                    2    .../laplace1D.jl; laplace1D_rhs!; line: 8
                    1    .../laplace1D.jl; laplace1D_rhs!; line: 12
                    8408 .../laplace1D.jl; laplace1D_rhs!; line: 16
                     225  array.jl; +; line: 147
                     3    array.jl; +; line: 148
                     1059 array.jl; +; line: 934
                      1    operators.jl; promote_shape; line: 164
                     40   array.jl; +; line: 935
                     2    array.jl; +; line: 938
                     254  array.jl; -; line: 147
                     4    array.jl; -; line: 148
                     1019 array.jl; -; line: 874
                     73   array.jl; -; line: 875
                     211  array.jl; -; line: 876
                     1029 array.jl; -; line: 934
                     40   array.jl; -; line: 935
                     4    array.jl; -; line: 938
                     193  array.jl; .*; line: 147
                     20   array.jl; .*; line: 148
                     1053 array.jl; .*; line: 945
                     9    array.jl; .*; line: 946
                     1    array.jl; .*; line: 949
                     6    array.jl; getindex; line: 294
                     3147 array.jl; getindex; line: 295
                     6    array.jl; getindex; line: 297
                      1 array.jl; copy!; line: 48
                      4 array.jl; copy!; line: 51
                       4 array.jl; unsafe_copy!; line: 38
                        2 array.jl; unsafe_copy!; line: 31
                        1 array.jl; unsafe_copy!; line: 33
                     1    array.jl; getindex; line: 299
                     1    array.jl; setindex!; line: 435
                     3    array.jl; setindex!; line: 438
                      2 array.jl; copy!; line: 48
                      1 array.jl; copy!; line: 51
                       1 array.jl; unsafe_copy!; line: 38
                        1 array.jl; unsafe_copy!; line: 31
                    1    array.jl; getindex; line: 299
                   3994 ...a/laplace1D.jl; driver; line: 39
                    251  array.jl; +; line: 147
                    4    array.jl; +; line: 148
                    1062 array.jl; +; line: 934
                     1    operators.jl; promote_shape; line: 164
                    50   array.jl; +; line: 935
                    2    array.jl; +; line: 938
                    260  array.jl; -; line: 147
                    2    array.jl; -; line: 148
                    1066 array.jl; -; line: 934
                    41   array.jl; -; line: 935
                    151  array.jl; .*; line: 147
                    24   array.jl; .*; line: 148
                    1035 array.jl; .*; line: 945
                    40   array.jl; .*; line: 946
                    1    array.jl; .*; line: 949

In [5]:


In [6]:


In [7]:


In [8]:


In [9]:


In [ ]: