如何解决使用 OpenMP 并行的矩阵乘法不会缩短执行时间
我正在开始测试 Openmp,但我无法通过这个简单的示例来改善执行时间。我应该在代码中更改哪些内容?
以下代码(prueba.f90)是用以下代码编译的:
gfortran -Wall -fopenmp -g -o prog.exe prueba.f90
./prog.exe
program main
use omp_lib
implicit none
integer,parameter:: ma=100,n=10000,mb= 100
real,dimension (ma,n) :: a
real,dimension (n,mb) :: b
real,mb) :: c = 0.
integer:: i,j,k,num_threads=4
real:: toc,tic,time
call random_number (a)
call random_number (b)
!$ call omp_set_num_threads(num_threads)
call cpu_time(tic)
!$omp paralleldo
do i= 1,ma
do j= 1,mb
do k= 1,n
c(i,j) = c(i,j) + a(i,k)*b(k,j)
end do
end do
end do
!$omp end paralleldo
call cpu_time(toc)
time = toc-tic
print*,c(23,35),'time',time,'s'
end program main
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。