Cuda Fortran на PGI

Moderator: BarsMonster

Post Reply [phpBB Debug] PHP Warning: in file [ROOT]/vendor/twig/twig/lib/Twig/Extension/Core.php on line 1266: count(): Parameter must be an array or an object that implements Countable
Faustus
Posts: 2
Joined: Mon Nov 29, 2010 6:35 pm
[phpBB Debug] PHP Warning: in file [ROOT]/vendor/twig/twig/lib/Twig/Extension/Core.php on line 1266: count(): Parameter must be an array or an object that implements Countable

Cuda Fortran на PGI

Post by Faustus » Mon Nov 29, 2010 6:45 pm

Есть ли кто кто баловался фортраном, по работе пришлось написать программу по методам частиц, там подразумевается интенсивное взвешивание в shared-памяти и без аналога volatile не обойтись. хотя это слово и было включено в стандарт фортрана 2003, есть подозрение что cuda с ним не совместимо. Есть ли у кого-нить опыт по этому вопросу? я в тупике.

User avatar
BarsMonster
Site Admin
Posts: 1118
Joined: Wed Oct 01, 2008 7:58 pm
[phpBB Debug] PHP Warning: in file [ROOT]/vendor/twig/twig/lib/Twig/Extension/Core.php on line 1266: count(): Parameter must be an array or an object that implements Countable

Re: Cuda Fortran на PGI

Post by BarsMonster » Tue Nov 30, 2010 12:05 am

Faustus wrote:Есть ли кто кто баловался фортраном, по работе пришлось написать программу по методам частиц, там подразумевается интенсивное взвешивание в shared-памяти и без аналога volatile не обойтись. хотя это слово и было включено в стандарт фортрана 2003, есть подозрение что cuda с ним не совместимо. Есть ли у кого-нить опыт по этому вопросу? я в тупике.
Если прямо указывать что переменная в shared-памяти, то volatile указывать не надо - компилятор ни за что в регистр её не запихает.
Но пользоваться совместным доступом потоков к одной переменной надо крайне аккуратно...

Faustus
Posts: 2
Joined: Mon Nov 29, 2010 6:35 pm
[phpBB Debug] PHP Warning: in file [ROOT]/vendor/twig/twig/lib/Twig/Extension/Core.php on line 1266: count(): Parameter must be an array or an object that implements Countable

Re: Cuda Fortran на PGI

Post by Faustus » Tue Nov 30, 2010 9:30 am

Пардон, я двусмысленно отписался. Я имел в виду, что команда volatile есть в cuda fortran (PGI), но у меня есть сомнения, что она компилируется в ядро.
Вот что пишут в Version Programming Guide 3.0 странице 100:
This behavior can be changed using the volatile keyword: If a variable located in global or shared memory is declared as volatile, the compiler assumes that its value can be changed at any time by another thread and therefore any reference to this variable compiles to an actual memory read instruction.
Т.е. смысл то в том, что бы указать valatile для shared,чтобы она не менялась, до следующего обращения к ней другими потоками.
Моя программа подразумевает сохрание результатов в массиве shared в случайном порядке всеми потоками,для чего собственно и нужно это ключевое слово.
BarsMonster wrote:Но пользоваться совместным доступом потоков к одной переменной надо крайне аккуратно...

Программа для глобальной памяти работает достаточно правдиво, хотя и не быстро (5-кратное ускорение). Дальнейшая оптимизация, это работа с shared, но тут-то и начинаются проблемы.

Post Reply
[phpBB Debug] PHP Warning: in file [ROOT]/vendor/twig/twig/lib/Twig/Extension/Core.php on line 1266: count(): Parameter must be an array or an object that implements Countable
[phpBB Debug] PHP Warning: in file [ROOT]/vendor/twig/twig/lib/Twig/Extension/Core.php on line 1266: count(): Parameter must be an array or an object that implements Countable

Who is online

Users browsing this forum: No registered users and 1 guest