PARALLEL.RU

Дискуссионный клуб по параллельным вычислениям
Текущее время: 13 дек 17 0:54

Часовой пояс: UTC + 4 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ 1 сообщение ] 
Автор Сообщение
 Заголовок сообщения: CUDA + Fortran
СообщениеДобавлено: 6 июн 13 21:21 
Не в сети

Зарегистрирован: 2 сен 11 14:01
Сообщения: 3
Здравствуйте.
Есть программный код:
Код:
       module gpu_f
      use cudafor
      contains
      attributes(global) subroutine force_gpu(SX_pr)
      real :: sx_pr(4)
      integer :: i,j,i1
      i=(blockidx%x-1)*blockdim%x + threadidx%x
      i1=i+1
      
      do 1 j=i1,4
      if (i.le.3 ) then
      sx_pr(j)=sx_pr(j)-1
      sx_pr_i=sx_pr_i+1
      endif
      call syncthreads()
1      continue
       
       sx_pr(i)=sx_pr(i)+sx_pr_i
      
       
      endsubroutine
      end module

      program main
      use gpu_f
      real, device :: SX_pr_d(4)
      real :: SX_pr(4)
      sx_pr=0
      sx_pr_d=sx_pr
      call force_gpu<<<1,4>>>(sx_pr_d)
      sx_pr=sx_pr_d
      do i= 1, 4
      print*,'i',i,'=',sx_pr(i)
      end do
      end program


При запуске программы выдает ответ
D:\PVFProject2\Win32\Debug>PVFProject2.exe
i 1 = 3.000000
i 2 = 1.000000
i 3 = -1.000000
i 4 = -3.000000
Если изменить в запуске ядра количество блоков, к примеру,
call force_gpu<<<2,2>>>(sx_pr_d) или call force_gpu<<<4,1>>>(sx_pr_d)
Выдает результат:
i 1 = 3.000000
i 2 = 1.000000
i 3 = 0.000000
i 4 = -2.000000
Сломал голову, не могу понять, в чем ошибка?


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ 1 сообщение ] 

Часовой пояс: UTC + 4 часа [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB