Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы программирования на FORTRAN (ФОРТРАН)

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
На первую страницук этому сообщениюк последнему сообщению

Открыть новую тему     Написать ответ в эту тему

w10prs

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
[more]  Да, gfortran.
 
Сегментацию победил. В нете пишут, что нужно массивы выделять в куче, дабы это не было в стеке. Это сработало. Но с временем выигрыш получился лишь 17%. В варианте компиляции с включенным OpenMP грузятся оба ядра, в варианте без OpenMP одно. Или надо много ядер, что бы начало работать хорошо, или не учтено что-либо еще. Или в самом деле компилятор нужен intel, хотя, как уж сказал, грузятся оба ядра.  
 
Испытуемый код:

Код:
 
program omp_par_do
  implicit none
 
  integer (8) :: n
  real (8), allocatable :: dat ( : ), result ( : )
  integer (8) :: i, k
  real :: t1, t2, t3
 n=100000000  
   
allocate (dat(n))  
allocate (result(n))  
call random_number(dat)
call cpu_time(t1)
 
  !$OMP PARALLEL DO
  do i = 1, n
    result(i) = (log10 (log (sqrt (tan (cos (sin (dat(i)**2)-5.0))))))**3
  end do
  !$OMP END PARALLEL DO
 
call cpu_time(t2)  
t3 = t2 - t1
print*, " time = ", t3
 
deallocate (dat)
deallocate (result)
end program omp_par_do
 

 

Всего записей: 15 | Зарегистр. 02-06-2018 | Отправлено: 14:57 04-06-2018 | Исправлено: w10prs, 15:38 04-06-2018
Открыть новую тему     Написать ответ в эту тему

На первую страницук этому сообщениюк последнему сообщению

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы программирования на FORTRAN (ФОРТРАН)


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru