User Tools

Site Tools


Site Tools

bf0.f90
program bruteforce
 
	use mpi
	implicit none
	integer :: n,m,noprime,total,nmin,nmax
	integer ::  rank, nb_mpi_processes, ierror, hostname_len
 
	call MPI_INIT(ierror) ! Init MPI (init MPI_COMM_WORLD communicator, set rank to each process, etc)
	call MPI_COMM_SIZE(MPI_COMM_WORLD, nb_mpi_processes, ierror) ! Ask the number of MPI processes running
	call MPI_COMM_RANK(MPI_COMM_WORLD, rank, ierror) ! Ask the rank of the current process
 
	total=0
	nmin=(20000000/nb_mpi_processes)*rank+1
	nmax=(20000000/nb_mpi_processes)*(rank+1)
	print *,'rank',rank,nmin,nmax
 
	do n=nmin,nmax
 
		if(modulo(n,2) == 0) then; noprime = 1
		elseif(modulo(n,3) == 0) then; noprime = 1
		else
			do m=4,int(sqrt(real(n)))
				if(modulo(n,m) == 0) then
					noprime = 1
					exit
				end if
			end do
		end if
		if(noprime == 1) then
			noprime = 0
		else
		total = total + 1
	end if
 
	end do
 
	print *, rank,'Found ', total, ' prime numbers'
 
	call MPI_FINALIZE ( ierror ) ! Close MPI
 
end program bruteforce
bf1.f90
program bruteforce
 
 use mpi
 implicit none
 integer :: n,m,noprime,total,nmin,nmax
 integer ::  rank, nb_mpi_processes, ierror, hostname_len
 
 call MPI_INIT(ierror) ! Init MPI (init MPI_COMM_WORLD communicator, set rank to each process, etc)
 
 call MPI_COMM_SIZE(MPI_COMM_WORLD, nb_mpi_processes, ierror) ! Ask the number of MPI processes running
 
 call MPI_COMM_RANK(MPI_COMM_WORLD, rank, ierror) ! Ask the rank of the current process
 
 total=0
 nmin=(20000000/nb_mpi_processes)*rank+1
 nmax=(20000000/nb_mpi_processes)*(rank+1)
 print *,'rank',rank,nmin,nmax
 do n=nmin,nmax
 
 if(modulo(n,2) == 0) then; noprime = 1
 elseif(modulo(n,3) == 0) then; noprime = 1
 else
    do m=4,int(sqrt(real(n)))
       if(modulo(n,m) == 0) then
          noprime = 1
          exit
       end if
    end do
 end if
 if(noprime == 1) then
    noprime = 0
 else
    total = total + 1
 !print *, n, ' is prime',total
 end if
 
 end do
 
 print *, rank,'Found ', total, ' prime numbers'
 
 call MPI_FINALIZE ( ierror ) ! Close MPI
 
end program bruteforce