In [29]:
Profile.clear()
include("bpmf.jl")


Loading data
Sampling
Iteration 1:	 avg RMSE 0.6162 RMSE 0.6162 FU(1.7253) FM(1.7524)
Iteration 2:	 avg RMSE 0.6162 RMSE 0.6162 FU(2.4352) FM(2.5925)
Iteration 3:	 avg RMSE 0.6162 RMSE 0.6162 FU(2.9787) FM(3.2251)
Iteration 4:	 avg RMSE 0.6162 RMSE 0.6162 FU(3.4364) FM(3.6293)
Iteration 5:	 avg RMSE 0.6162 RMSE 0.6162 FU(3.8729) FM(3.8595)
Iteration 6:	 avg RMSE 0.6162 RMSE 0.6162 FU(4.2455) FM(4.3465)
Iteration 7:	 avg RMSE 0.6162 RMSE 0.6162 FU(4.5825) FM(4.7253)
Iteration 8:	 avg RMSE 0.6162 RMSE 0.6162 FU(4.9062) FM(5.0182)
Iteration 9:	 avg RMSE 0.6162 RMSE 0.6162 FU(5.1847) FM(5.1819)
Iteration 10:	 avg RMSE 0.6162 RMSE 0.6162 FU(5.4312) FM(5.4951)

In [30]:
f = open("bpmf.report.txt", "w")
Profile.print(f, format=:flat, combine=true)

In [31]:
close(f)

In [5]:
?Profile.print


INFO: Loading help data...
Base.Profile.print([io::IO = STDOUT], [data::Vector];
format = :tree, C = false, combine = true, cols = tty_cols())


   Prints profiling results to "io" (by default, "STDOUT"). If you
   do not supply a "data" vector, the internal buffer of accumulated
   backtraces will be used.  "format" can be ":tree" or ":flat".
   If "C==true", backtraces from C and Fortran code are shown.
   "combine==true" merges instruction pointers that correspond to
   the same line of code.  "cols" controls the width of the display.

Base.Profile.print([io::IO = STDOUT], data::Vector,
lidict::Dict; format = :tree, combine = true, cols = tty_cols())


   Prints profiling results to "io". This variant is used to examine
   results exported by a previous call to "retrieve()". Supply the
   vector "data" of backtraces and a dictionary "lidict" of line
   information.

In [7]:
typeof(:flat)


Out[7]:
Symbol

In [26]:
g1(x) = inv(x)
f1(x) = g1(x) + g1(x) + g1(x)


Out[26]:
f1 (generic function with 1 method)

In [27]:
Profile.clear()
u = 0
@profile for i=1:10000; u+=f1(rand(20,20)); end

In [28]:
Profile.print()


1018 task.jl; anonymous; line: 340
 1018 .../IJulia/src/IJulia.jl; eventloop; line: 123
  1018 ...rc/execute_request.jl; execute_request_0x535c5df2; line: 140
   1018 loading.jl; include_string; line: 97
    1018 profile.jl; anonymous; line: 3
     1    ...lib/julia/sys.dylib; typeinf_ext; (unknown line)
      1 ...1/lib/julia/sys.dylib; typeinf; (unknown line)
       1 ...1/lib/julia/sys.dylib; abstract_eval_arg; (unknown line)
        1 .../lib/julia/sys.dylib; abstract_eval; (unknown line)
         1 .../lib/julia/sys.dylib; abstract_eval_call; (unknown line)
          1 ...lib/julia/sys.dylib; abstract_call; (unknown line)
           1 ...lib/julia/sys.dylib; abstract_call_gf; (unknown line)
            1 ...lib/julia/sys.dylib; typeinf; (unknown line)
             1 ...ib/julia/sys.dylib; inlining_pass; (unknown line)
              1 ...ib/julia/sys.dylib; inlining_pass; (unknown line)
               1 ...b/julia/sys.dylib; inlining_pass; (unknown line)
                1 ...b/julia/sys.dylib; inlining_pass; (unknown line)
                 1 ...b/julia/sys.dylib; inlineable; (unknown line)
     1    array.jl; +; line: 719
     3    array.jl; +; line: 721
     1    linalg/dense.jl; inv; line: 323
      1 linalg/generic.jl; istriu; line: 276
     1008 linalg/dense.jl; inv; line: 328
      482 linalg/lu.jl; inv; line: 149
       1   linalg/lapack.jl; getri!; line: 579
       1   linalg/lapack.jl; getri!; line: 580
        1 abstractarray.jl; stride; line: 34
       1   linalg/lapack.jl; getri!; line: 581
       472 linalg/lapack.jl; getri!; line: 585
       1   linalg/lapack.jl; getri!; line: 590
       1   linalg/lapack.jl; getri!; line: 591
      521 linalg/lu.jl; lufact!; line: 13
       1   linalg/lapack.jl; getrf!; line: 381
       1   linalg/lapack.jl; getrf!; line: 384
       519 linalg/lapack.jl; getrf!; line: 385
     1    linalg/dense.jl; inv; line: 330
     1    random.jl; rand!; line: 130

In [32]:
using ProfileView

In [33]:
ProfileView.view()


Out[33]:
Profile results Function:

In [37]:
@which(open(""))


Out[37]:
open(fname::String) at iostream.jl:122

In [44]:
f42(x,y) = x+y


Out[44]:
f42 (generic function with 1 method)

In [54]:
M1 = rand(3,3)
M2 = rand(3,3)
@code_llvm M1'*M1


define %jl_value_t* @"julia_*_22499"(%jl_value_t*, %jl_value_t**, i32) {
top:
  %3 = alloca %jl_value_t*, i32 5
  %4 = getelementptr %jl_value_t** %3, i32 2, !dbg !7847
  %5 = bitcast %jl_value_t** %3 to i64*, !dbg !7847
  store i64 6, i64* %5
  %6 = load %jl_value_t*** @jl_pgcstack, !dbg !7847
  %7 = getelementptr %jl_value_t** %3, i32 1, !dbg !7847
  %8 = bitcast %jl_value_t** %7 to %jl_value_t***, !dbg !7847
  store %jl_value_t** %6, %jl_value_t*** %8, !dbg !7847
  store %jl_value_t** %3, %jl_value_t*** @jl_pgcstack, !dbg !7847
  store %jl_value_t* null, %jl_value_t** %4, !dbg !7847
  %9 = getelementptr %jl_value_t** %3, i32 3
  store %jl_value_t* null, %jl_value_t** %9
  %10 = getelementptr %jl_value_t** %3, i32 4
  store %jl_value_t* null, %jl_value_t** %10
  %11 = load %jl_value_t** %1, !dbg !7847
  %12 = bitcast %jl_value_t* %11 to %jl_value_t**, !dbg !7847
  %13 = getelementptr %jl_value_t** %12, i32 4, !dbg !7847
  %14 = load %jl_value_t** %13, !dbg !7847, !tbaa %jtbaa_arraysize
  %15 = ptrtoint %jl_value_t* %14 to i64, !dbg !7847
  %16 = getelementptr %jl_value_t** %1, i64 1, !dbg !7847
  %17 = load %jl_value_t** %16, !dbg !7847
  %18 = insertelement <2 x i64> undef, i64 %15, i32 0, !dbg !7852, !julia_type !7853
  %19 = bitcast %jl_value_t* %17 to %jl_value_t**, !dbg !7852
  %20 = getelementptr %jl_value_t** %19, i32 5, !dbg !7852
  %21 = load %jl_value_t** %20, !dbg !7852, !tbaa %jtbaa_arraysize
  %22 = ptrtoint %jl_value_t* %21 to i64, !dbg !7852
  %23 = insertelement <2 x i64> %18, i64 %22, i32 1, !dbg !7852, !julia_type !7853
  %24 = getelementptr %jl_value_t** %4, i64 1, !dbg !7852
  store %jl_value_t* inttoptr (i64 140294520709424 to %jl_value_t*), %jl_value_t** %24, !dbg !7852
  %25 = call %jl_value_t* @jl_alloc_tuple(i64 2), !dbg !7852
  %26 = getelementptr %jl_value_t** %4, i64 2, !dbg !7852
  store %jl_value_t* %25, %jl_value_t** %26, !dbg !7852
  %27 = extractelement <2 x i64> %23, i32 0, !dbg !7852
  %28 = call %jl_value_t* @jl_box_int64(i64 %27), !dbg !7852
  %29 = bitcast %jl_value_t* %25 to %jl_value_t**, !dbg !7852
  %30 = getelementptr %jl_value_t** %29, i64 2, !dbg !7852
  store %jl_value_t* %28, %jl_value_t** %30, !dbg !7852
  %31 = extractelement <2 x i64> %23, i32 1, !dbg !7852
  %32 = call %jl_value_t* @jl_box_int64(i64 %31), !dbg !7852
  %33 = getelementptr %jl_value_t** %29, i64 3, !dbg !7852
  store %jl_value_t* %32, %jl_value_t** %33, !dbg !7852
  store %jl_value_t* %25, %jl_value_t** %26, !dbg !7852
  %34 = call %jl_value_t* inttoptr (i64 4468570224 to %jl_value_t* (%jl_value_t*, %jl_value_t*)*)(%jl_value_t* inttoptr (i64 140294520709424 to %jl_value_t*), %jl_value_t* %25), !dbg !7852
  store %jl_value_t* %34, %jl_value_t** %4, !dbg !7852
  %35 = call %jl_value_t* @"julia_gemm_wrapper!_21468"(%jl_value_t* %34, i32 78, i32 78, %jl_value_t* %11, %jl_value_t* %17), !dbg !7852
  %36 = load %jl_value_t** %7, !dbg !7852
  %37 = bitcast %jl_value_t* %36 to %jl_value_t**, !dbg !7852
  store %jl_value_t** %37, %jl_value_t*** @jl_pgcstack, !dbg !7852
  ret %jl_value_t* %35, !dbg !7852
}

In [55]:
typeof(Lambda_u)


Out[55]:
Array{Float64,2}

In [57]:
size(Lambda_u)


Out[57]:
(3,3)

In [58]:
Lambda_u


Out[58]:
3x3 Array{Float64,2}:
 1551.01      21.3984   -20.5193
   21.3984  1485.92     -30.9234
  -20.5193   -30.9234  1546.26  

In [59]:
size(sample_u)


Out[59]:
(15118,3)

In [ ]: