Line | % of fetches | Source |
1 | | !-- OpenMp Do version |
2 | | program lu |
3 | | !uncomment when using ifort for rand() |
4 | | !use IFPORT |
5 | | implicit none |
6 | | integer, parameter :: DP=kind(0.0D0) |
7 | | |
8 | | !-- Variables |
9 | | integer :: i,j,k,nthr,id,myseed=7654321,n |
10 | | real(kind=DP), dimension(:,:), ALLOCATABLE :: A, U, B |
11 | | real(kind=DP), dimension(:), ALLOCATABLE ::LHS, X |
12 | | integer, dimension(:), ALLOCATABLE :: pvt |
13 | | real(kind=DP) :: timer,error,walltime,ipvt, resd,swap, mx, mn |
14 | | integer :: OMP_GET_MAX_THREADS |
15 | | |
16 | | nthr=OMP_GET_MAX_THREADS() |
17 | | timer=walltime() |
18 | | |
19 | | !-- Read n and Allocate A |
20 | | !switch to variable n when do sp |
21 | | write (*,*) 'Enter n: ' |
22 | | read *,n |
23 | | ALLOCATE(A(n,n+1), LHS(n), U(n,n), B(n,n), pvt(n),X(n)) |
24 | | i=rand(myseed) |
25 | | !-- Initiate matrix |
26 | | do j=1,n |
27 | | do i=1,n |
28 | | A(i,j)= rand(0) |
29 | | B(i,j)=A(i,j) |
30 | | end do |
31 | | pvt(j)=j |
32 | | end do |
33 | | LHS(1:n)=0.0 |
34 | | A(1:n,n+1)=1 |
35 | | |
36 | | timer=walltime() |
37 | | !-- LU-factorize |
38 | | do k=1,n-1 |
39 | | !----Find Pivot k |
40 | | do i=k+1,n |
41 | | if ( abs(A(i,k))> abs(A(pvt(k),k)) ) then |
42 | | pvt(k)=i; |
43 | | end if |
44 | | end do |
45 | | |
46 | | !---------------end Find Pivot |
47 | | if (pvt(k)>k) then |
48 | | swap=A(k,k); A(k,k)=A(pvt(k),k); A(pvt(k),k)=swap |
49 | | end if |
50 | | do i=k+1,n |
51 | | A(i,k)=A(i,k)/A(k,k) |
52 | | end do |
53 | | |
54 | | !$OMP PARALLEL DO private(i,j,swap) |
55 | | do j=k+1,n+1 |
56 | | swap=A(pvt(k),j) |
57 | | if (pvt(k)>k) then |
58 | | A(pvt(k),j)=A(k,j); A(k,j)=swap |
59 | | end if |
60 | | do i=k+1,n |
61   | 98.3%
| A(i,j)=A(i,j)-A(i,k)*swap |
| % of fetches | Miss ratio | Fetch ratio | WB ratio | Fetch Util | WB Util | PC | Type | Issues | 94.0%Thread Id | % of fetches |
---|
Thread Total | 94.0% | 9605 | 7.3% | 9606 | 7.8% | 9608 | 6.7% | 9607 | 9.0% | 9609 | 8.6% | 9610 | 6.0% | 9611 | 8.2% | 9612 | 8.7% | 9613 | 7.3% | 9616 | 7.4% | 9615 | 8.3% | 9614 | 8.7% |
| 0.4%Thread Id | Total Miss ratio | Uncategorized | Replacement | Coherence | Flush |
---|
Thread Average0.4% | 0.0% | 0.4% | 0.0% | 0.0% | 9605 | 0.4% | 0.0% | 0.4% | 0.0% | 0.0% | 9606 | 0.4% | 0.0% | 0.4% | 0.0% | 0.0% | 9608 | 0.2% | 0.0% | 0.2% | 0.0% | 0.0% | 9607 | 0.2% | 0.0% | 0.2% | 0.0% | 0.0% | 9609 | 0.5% | 0.0% | 0.5% | 0.0% | 0.0% | 9610 | 0.2% | 0.0% | 0.2% | 0.0% | 0.0% | 9611 | 0.1% | 0.0% | 0.1% | 0.0% | 0.0% | 9612 | 0.5% | 0.0% | 0.5% | 0.0% | 0.0% | 9613 | 0.4% | 0.0% | 0.4% | 0.0% | 0.0% | 9616 | 0.8% | 0.0% | 0.8% | 0.0% | 0.0% | 9615 | 0.7% | 0.0% | 0.7% | 0.0% | 0.0% | 9614 | 0.3% | 0.0% | 0.3% | 0.0% | 0.0% |
| 11.7%Thread Id | Total Fetch ratio | Uncategorized | Replacement | Coherence | Flush |
---|
Thread Average11.7% | 0.1% | 11.6% | 0.0% | 0.0% | 9605 | 11.0% | 0.1% | 10.9% | 0.0% | 0.0% | 9606 | 11.1% | 0.1% | 11.0% | 0.0% | 0.0% | 9608 | 10.1% | 0.1% | 10.0% | 0.0% | 0.0% | 9607 | 13.2% | 0.1% | 13.1% | 0.0% | 0.0% | 9609 | 12.8% | 0.1% | 12.8% | 0.0% | 0.0% | 9610 | 9.3% | 0.1% | 9.2% | 0.0% | 0.0% | 9611 | 12.2% | 0.1% | 12.1% | 0.0% | 0.0% | 9612 | 12.4% | 0.0% | 12.4% | 0.0% | 0.0% | 9613 | 11.0% | 0.0% | 11.0% | 0.0% | 0.0% | 9616 | 11.6% | 0.0% | 11.6% | 0.0% | 0.0% | 9615 | 12.4% | 0.1% | 12.4% | 0.0% | 0.0% | 9614 | 12.9% | 0.3% | 12.6% | 0.0% | 0.0% |
| 0.0%Thread Id | Total Write-back ratio | Uncategorized | Replacement | Coherence | Flush |
---|
Thread Average0.0% | 0.0% | 0.0% | 0.0% | 0.0% | 9605 | 0.0% | 0.0% | 0.0% | 0.0% | 0.0% | 9606 | 0.0% | 0.0% | 0.0% | 0.0% | 0.0% | 9608 | 0.0% | 0.0% | 0.0% | 0.0% | 0.0% | 9607 | 0.0% | 0.0% | 0.0% | 0.0% | 0.0% | 9609 | 0.0% | 0.0% | 0.0% | 0.0% | 0.0% | 9610 | 0.0% | 0.0% | 0.0% | 0.0% | 0.0% | 9611 | 0.0% | 0.0% | 0.0% | 0.0% | 0.0% | 9612 | 0.0% | 0.0% | 0.0% | 0.0% | 0.0% | 9613 | 0.0% | 0.0% | 0.0% | 0.0% | 0.0% | 9616 | 0.0% | 0.0% | 0.0% | 0.0% | 0.0% | 9615 | 0.0% | 0.0% | 0.0% | 0.0% | 0.0% | 9614 | 0.0% | 0.0% | 0.0% | 0.0% | 0.0% |
| 95.3%Thread Id | Fetch utilization |
---|
Thread Average | 95.3% | 9605 | 100.0% | 9606 | 98.4% | 9608 | 100.0% | 9607 | 80.0% | 9609 | 87.7% | 9610 | 100.0% | 9611 | 91.3% | 9612 | 80.9% | 9613 | 100.0% | 9616 | 94.3% | 9615 | 91.6% | 9614 | 90.8% |
| 98.7%Thread Id | Write-back utilization |
---|
Thread Average | 98.7% | 9605 | 100.0% | 9606 | 100.0% | 9608 | 100.0% | 9607 | 86.3% | 9609 | 86.3% | 9610 | 100.0% | 9611 | 96.7% | 9612 | 93.0% | 9613 | 100.0% | 9616 | 97.0% | 9615 | 92.8% | 9614 | 93.1% |
| 4201679 | R |   
| 3.6%Thread Id | % of fetches |
---|
Thread Total | 3.6% | 9605 | 0.3% | 9606 | 0.2% | 9608 | 0.3% | 9607 | 0.3% | 9609 | 0.3% | 9610 | 0.3% | 9611 | 0.3% | 9612 | 0.4% | 9613 | 0.3% | 9616 | 0.3% | 9615 | 0.3% | 9614 | 0.3% |
| 0.0%Thread Id | Total Miss ratio | Uncategorized | Replacement | Coherence | Flush |
---|
Thread Average0.0% | 0.0% | 0.0% | 0.0% | 0.0% | 9605 | 0.0% | 0.0% | 0.0% | 0.0% | 0.0% | 9606 | 0.0% | 0.0% | 0.0% | 0.0% | 0.0% | 9608 | 0.0% | 0.0% | 0.0% | 0.0% | 0.0% | 9607 | 0.0% | 0.0% | 0.0% | 0.0% | 0.0% | 9609 | 0.0% | 0.0% | 0.0% | 0.0% | 0.0% | 9610 | 0.0% | 0.0% | 0.0% | 0.0% | 0.0% | 9611 | 0.0% | 0.0% | 0.0% | 0.0% | 0.0% | 9612 | 0.0% | 0.0% | 0.0% | 0.0% | 0.0% | 9613 | 0.0% | 0.0% | 0.0% | 0.0% | 0.0% | 9616 | 0.0% | 0.0% | 0.0% | 0.0% | 0.0% | 9615 | 0.0% | 0.0% | 0.0% | 0.0% | 0.0% | 9614 | 0.0% | 0.0% | 0.0% | 0.0% | 0.0% |
| 0.5%Thread Id | Total Fetch ratio | Uncategorized | Replacement | Coherence | Flush |
---|
Thread Average0.5% | 0.1% | 0.4% | 0.0% | 0.0% | 9605 | 0.4% | 0.0% | 0.4% | 0.0% | 0.0% | 9606 | 0.4% | 0.0% | 0.4% | 0.0% | 0.0% | 9608 | 0.4% | 0.1% | 0.4% | 0.0% | 0.0% | 9607 | 0.5% | 0.1% | 0.4% | 0.0% | 0.0% | 9609 | 0.5% | 0.1% | 0.4% | 0.0% | 0.0% | 9610 | 0.4% | 0.1% | 0.3% | 0.0% | 0.0% | 9611 | 0.4% | 0.1% | 0.4% | 0.0% | 0.0% | 9612 | 0.6% | 0.2% | 0.4% | 0.0% | 0.0% | 9613 | 0.5% | 0.2% | 0.4% | 0.0% | 0.0% | 9616 | 0.5% | 0.1% | 0.4% | 0.0% | 0.0% | 9615 | 0.4% | 0.0% | 0.4% | 0.0% | 0.0% | 9614 | 0.4% | 0.0% | 0.4% | 0.0% | 0.0% |
| 0.0%Thread Id | Total Write-back ratio | Uncategorized | Replacement | Coherence | Flush |
---|
Thread Average0.0% | 0.0% | 0.0% | 0.0% | 0.0% | 9605 | 0.0% | 0.0% | 0.0% | 0.0% | 0.0% | 9606 | 0.0% | 0.0% | 0.0% | 0.0% | 0.0% | 9608 | 0.0% | 0.0% | 0.0% | 0.0% | 0.0% | 9607 | 0.0% | 0.0% | 0.0% | 0.0% | 0.0% | 9609 | 0.0% | 0.0% | 0.0% | 0.0% | 0.0% | 9610 | 0.0% | 0.0% | 0.0% | 0.0% | 0.0% | 9611 | 0.0% | 0.0% | 0.0% | 0.0% | 0.0% | 9612 | 0.0% | 0.0% | 0.0% | 0.0% | 0.0% | 9613 | 0.0% | 0.0% | 0.0% | 0.0% | 0.0% | 9616 | 0.0% | 0.0% | 0.0% | 0.0% | 0.0% | 9615 | 0.0% | 0.0% | 0.0% | 0.0% | 0.0% | 9614 | 0.0% | 0.0% | 0.0% | 0.0% | 0.0% |
| 99.7%Thread Id | Fetch utilization |
---|
Thread Average | 99.7% | 9605 | 99.2% | 9606 | 100.0% | 9608 | 100.0% | 9607 | 100.0% | 9609 | 100.0% | 9610 | 96.3% | 9611 | 100.0% | 9612 | 81.7% | 9613 | 73.9% | 9616 | 85.2% | 9615 | 97.3% | 9614 | 100.0% |
| 100.0%Thread Id | Write-back utilization |
---|
Thread Average | 100.0% | 9605 | 100.0% | 9606 | 100.0% | 9608 | 100.0% | 9607 | 100.0% | 9609 | 100.0% | 9610 | 100.0% | 9611 | 100.0% | 9612 | 100.0% | 9613 | 100.0% | 9616 | 100.0% | 9615 | 100.0% | 9614 | 100.0% |
| 4201683 | R | | 0.7%Thread Id | % of fetches |
---|
Thread Total | 0.7% | 9605 | 0.1% | 9606 | 0.1% | 9608 | 0.1% | 9607 | 0.1% | 9609 | 0.1% | 9610 | 0.0% | 9611 | 0.0% | 9612 | 0.1% | 9613 | 0.1% | 9616 | 0.1% | 9615 | 0.1% | 9614 | 0.0% |
| 0.0%Thread Id | Total Miss ratio | Uncategorized | Replacement | Coherence | Flush |
---|
Thread Average0.0% | 0.0% | 0.0% | 0.0% | 0.0% | 9605 | 0.0% | 0.0% | 0.0% | 0.0% | 0.0% | 9606 | 0.0% | 0.0% | 0.0% | 0.0% | 0.0% | 9608 | 0.0% | 0.0% | 0.0% | 0.0% | 0.0% | 9607 | 0.0% | 0.0% | 0.0% | 0.0% | 0.0% | 9609 | 0.0% | 0.0% | 0.0% | 0.0% | 0.0% | 9610 | 0.0% | 0.0% | 0.0% | 0.0% | 0.0% | 9611 | 0.0% | 0.0% | 0.0% | 0.0% | 0.0% | 9612 | 0.0% | 0.0% | 0.0% | 0.0% | 0.0% | 9613 | 0.0% | 0.0% | 0.0% | 0.0% | 0.0% | 9616 | 0.0% | 0.0% | 0.0% | 0.0% | 0.0% | 9615 | 0.0% | 0.0% | 0.0% | 0.0% | 0.0% | 9614 | 0.0% | 0.0% | 0.0% | 0.0% | 0.0% |
| 0.1%Thread Id | Total Fetch ratio | Uncategorized | Replacement | Coherence | Flush |
---|
Thread Average0.1% | 0.1% | 0.0% | 0.0% | 0.0% | 9605 | 0.2% | 0.2% | 0.0% | 0.0% | 0.0% | 9606 | 0.1% | 0.1% | 0.0% | 0.0% | 0.0% | 9608 | 0.1% | 0.1% | 0.0% | 0.0% | 0.0% | 9607 | 0.1% | 0.1% | 0.0% | 0.0% | 0.0% | 9609 | 0.2% | 0.2% | 0.0% | 0.0% | 0.0% | 9610 | 0.0% | 0.0% | 0.0% | 0.0% | 0.0% | 9611 | 0.0% | 0.0% | 0.0% | 0.0% | 0.0% | 9612 | 0.1% | 0.1% | 0.0% | 0.0% | 0.0% | 9613 | 0.2% | 0.2% | 0.0% | 0.0% | 0.0% | 9616 | 0.1% | 0.1% | 0.0% | 0.0% | 0.0% | 9615 | 0.2% | 0.2% | 0.0% | 0.0% | 0.0% | 9614 | 0.0% | 0.0% | 0.0% | 0.0% | 0.0% |
| 11.7%Thread Id | Total Write-back ratio | Uncategorized | Replacement | Coherence | Flush |
---|
Thread Average11.7% | 0.1% | 11.6% | 0.0% | 0.0% | 9605 | 11.1% | 0.2% | 10.9% | 0.0% | 0.0% | 9606 | 11.1% | 0.1% | 11.0% | 0.0% | 0.0% | 9608 | 10.1% | 0.1% | 10.0% | 0.0% | 0.0% | 9607 | 13.2% | 0.1% | 13.1% | 0.0% | 0.0% | 9609 | 12.9% | 0.2% | 12.7% | 0.0% | 0.0% | 9610 | 9.2% | 0.0% | 9.2% | 0.0% | 0.0% | 9611 | 12.2% | 0.0% | 12.2% | 0.0% | 0.0% | 9612 | 12.4% | 0.1% | 12.3% | 0.0% | 0.0% | 9613 | 11.1% | 0.2% | 11.0% | 0.0% | 0.0% | 9616 | 11.7% | 0.1% | 11.6% | 0.0% | 0.0% | 9615 | 12.5% | 0.2% | 12.3% | 0.0% | 0.0% | 9614 | 12.7% | 0.0% | 12.7% | 0.0% | 0.0% |
| 95.3%Thread Id | Fetch utilization |
---|
Thread Average | 95.3% | 9605 | 100.0% | 9606 | 98.4% | 9608 | 100.0% | 9607 | 80.0% | 9609 | 87.7% | 9610 | 100.0% | 9611 | 91.3% | 9612 | 80.9% | 9613 | 100.0% | 9616 | 94.3% | 9615 | 91.6% | 9614 | 90.8% |
| 98.7%Thread Id | Write-back utilization |
---|
Thread Average | 98.7% | 9605 | 100.0% | 9606 | 100.0% | 9608 | 100.0% | 9607 | 86.3% | 9609 | 86.3% | 9610 | 100.0% | 9611 | 96.7% | 9612 | 93.0% | 9613 | 100.0% | 9616 | 97.0% | 9615 | 92.8% | 9614 | 93.1% |
| 4201694 | W |   
|
|
|   | |
62 | | end do |
63 | | end do |
64 | | |
65 | | end do |
66 | | |
67 | | timer=walltime()-timer |
68 | | |
69 | | write(*,*) 'n = ',n,' time = ',timer, 'nthreads= ', nthr |
70 | | |
71 | | ! CHECK CORRECTNESS |
72 | | |
73 | | do j=1,n |
74 | | U(j,j)=A(j,j) |
75 | | do i=j+1,n |
76 | | U(i,j)=0 |
77 | | end do |
78 | | do i=1,j-1 |
79 | | U(i,j)=A(i,j) |
80 | | end do |
81 | | end do |
82 | | |
83 | | X(n)=A(n,n+1)/A(n,n) |
84 | | do j=n,2, -1 |
85 | | do i=1,j-1 |
86 | | LHS(i)=LHS(i)+U(i,j)*X(j) |
87 | | end do |
88 | | i=j-1 |
89 | | X(i)=(A(i,n+1)-LHS(i))/A(i,i) |
90 | | end do |
91 | | |
92 | | error=0.0 |
93 | | do i=1,n |
94 | | resd=0.0 |
95 | | do j=1,n |
96 | | resd=resd+B(i,j)*X(j) |
97 | | end do |
98 | | error=error+abs(1-resd) !err=abs(b-AX), b=1 |
99 | | end do |
100 | | |
101 | | write(*,*) 'ERROR: ',error |
102 | | DEALLOCATE(A,B,LHS,X,U,pvt) |
103 | | |
104 | | CONTAINS |
105 | | subroutine PrintMat(A,n) |
106 | | implicit none |
107 | | REAL(kind=DP), dimension(:,:), INTENT (IN) :: A |
108 | | integer, INTENT (IN) :: n |
109 | | integer :: i |
110 | | do i=1,n |
111 | | print *, A(i,:) |
112 | | end do |
113 | | return |
114 | | end subroutine PrintMat |
115 | | |
116 | | end program lu |
117 | | |
118 | | |
Copyright (c) 2006-2011 Rogue Wave Software, Inc. All Rights Reserved.
Patents pending.