| 
									
										
										
										
											2022-11-14 14:45:53 +07:00
										 |  |  | program sample3
 | 
					
						
							|  |  |  | use omp_lib
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         implicit real(8)(a-h,o-z)
 | 
					
						
							|  |  |  |         parameter (n=4096)
 | 
					
						
							| 
									
										
										
										
											2022-11-14 18:24:44 +07:00
										 |  |  |         real(8) a(n,n), c(n,n)
 | 
					
						
							| 
									
										
										
										
											2022-11-14 14:45:53 +07:00
										 |  |  |         real(4) b(n,n)
 | 
					
						
							|  |  |  |         real*8 t1, t2
 | 
					
						
							|  |  |  |         a=0.0d0
 | 
					
						
							|  |  |  |         call random_number(b)
 | 
					
						
							|  |  |  |         call random_number(c)
 | 
					
						
							| 
									
										
										
										
											2022-11-14 18:24:44 +07:00
										 |  |  |         write(6,50) ' Matrix Size = ', n
 | 
					
						
							| 
									
										
										
										
											2022-11-14 14:45:53 +07:00
										 |  |  |     50 format(1x,a,i5)
 | 
					
						
							|  |  |  |         t1 = omp_get_wtime()
 | 
					
						
							| 
									
										
										
										
											2022-11-14 18:24:44 +07:00
										 |  |  |         !$OMP PARALLEL DO
 | 
					
						
							| 
									
										
										
										
											2022-11-14 14:45:53 +07:00
										 |  |  |         do j=1,n
 | 
					
						
							|  |  |  |             do k=1,n
 | 
					
						
							|  |  |  |                 do i=1,n
 | 
					
						
							|  |  |  |                     a(i,j)=a(i,j)+b(i,k)*c(k,j)
 | 
					
						
							|  |  |  |                 end do
 | 
					
						
							|  |  |  |             end do
 | 
					
						
							|  |  |  |         end do
 | 
					
						
							| 
									
										
										
										
											2022-11-14 18:24:44 +07:00
										 |  |  |         !$OMP END PARALLEL DO
 | 
					
						
							| 
									
										
										
										
											2022-11-14 16:08:59 +07:00
										 |  |  |         t2 = omp_get_wtime()
 | 
					
						
							| 
									
										
										
										
											2022-11-14 18:24:44 +07:00
										 |  |  |         write(6, 60) ' Execution Time = ',t2-t1,' sec',' A(n,n) = ',a(n,n)
 | 
					
						
							| 
									
										
										
										
											2022-11-14 14:45:53 +07:00
										 |  |  |     60 format(1x,a,f10.3,a,1x,a,d24.15)
 | 
					
						
							|  |  |  |         stop
 | 
					
						
							| 
									
										
										
										
											2022-11-14 18:24:44 +07:00
										 |  |  |         
 | 
					
						
							| 
									
										
										
										
											2022-11-14 14:45:53 +07:00
										 |  |  | end
 |