2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 OpenMPI для Windows
Сообщение22.07.2014, 09:53 
Аватара пользователя
Существует ли OpenMPI для Windows?
Нашел официальный сайт: https://www.open-mpi.org/
Но там что-то все для Unix'а...

 
 
 
 Re: OpenMPI для Windows
Сообщение22.07.2014, 11:40 
Аватара пользователя
Есть только версия 1.6.5, дальше это дело забросили.
Цитата:
Due to lack of interest and anyone to maintain them, binary support for a Microsoft Windows Open MPI build has been discontinued. There will be no further releases of them unless a new maintainer can be found. Windows-based Open MPI users may choose to use the Cygwin-based Open MPI builds, instead.

 
 
 
 Re: OpenMPI для Windows
Сообщение22.07.2014, 11:46 
Аватара пользователя
Спасибо! :-(

 
 
 
 Re: OpenMPI для Windows
Сообщение22.07.2014, 13:18 
DLL в сообщении #889397 писал(а):
Существует ли OpenMPI для Windows?
Существовала. Перестали развивать ввиду бессмысленности и отсутствия спроса.

 
 
 
 Re: OpenMPI для Windows
Сообщение23.07.2014, 12:35 
Аватара пользователя
Решил вначале попробовать на персональном компьютере (4 ядра) библиотеку OpenMP.
Нашел прямо в Intel Visual Studio - пример (для OpenMP), который ищет простые числа от 1 до N перебором.
Запустил. По диспетчеру задач - во время работы программы - используются все 4 ядра и загрузка ЦП 100%. Время счета ~ 1 минуты.
Но вот незадача. Если убрать параллелизм и оставить только сам алгоритм перебора, то судя по диспетчеру задач занято только одно ядро. Загрузка ЦП ~ 25%, но время счета не изменяется (!!!) и опять порядка ~ 1 минуты.

В чем может быть дело? :facepalm:

 
 
 
 Re: OpenMPI для Windows
Сообщение23.07.2014, 15:05 
DLL в сообщении #889623 писал(а):
В чем может быть дело? :facepalm:
Причин может быть множество, самых разнообразных.
Приведите код.

 
 
 
 Re: OpenMPI для Windows
Сообщение23.07.2014, 15:49 
Аватара пользователя
Код:
program ompPrime

#ifdef _OPENMP
   include 'omp_lib.h'  !needed for OMP_GET_NUM_THREADS()
#endif

integer :: start = 1
integer :: end = 100000000
integer :: number_of_primes = 0
integer :: number_of_41primes = 0
integer :: number_of_43primes = 0
integer index, factor, limit, nthr
double precision st, fin
real rindex, rlimit
logical prime, print_primes

CALL CPU_TIME(st)

print_primes = .false.
nthr = 1 ! assume just one thread
print *, ' Range to check for Primes:',start,end

#ifdef _OPENMP
!$omp parallel
!$omp single
   nthr = OMP_GET_NUM_THREADS()
   print *, ' We are using',nthr,' thread(s)'
!$omp end single!
!$omp do private(factor, limit, prime) &
   SCHEDULE(dynamic,10) &
   reduction(+:number_of_primes,number_of_41primes,number_of_43primes)
#else
   print *, ' We are using',nthr,' thread(s)'
#endif

do index = start, end, 2   !workshared loop

   limit = int(sqrt(real(index)))
   prime = .true.  ! assume number is prime
   factor = 3

   do
      if(prime .and. factor .le. limit) then
         if(mod(index,factor) .eq. 0) then
            prime = .false.
         endif
         factor = factor + 2
      else
         exit  ! we can jump out of non-workshared loop
      endif
   enddo

   if(prime) then
      if(print_primes) then
         print *, index, ' is prime'
      endif

      number_of_primes = number_of_primes + 1

      if(mod(index,4) .eq. 1) then
         number_of_41primes = number_of_41primes + 1
      endif

      if(mod(index,4) .eq. 3) then
         number_of_43primes = number_of_43primes + 1
      endif

   endif   ! if(prime)
enddo
!$omp end do
!$omp end parallel

CALL CPU_TIME(fin)
print '("Time = ",1P6E12.4," seconds.")',fin-st

print *,number_of_primes
read *,number_of_primes

end program ompPrime


 
 
 [ Сообщений: 7 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group