Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Пт дек 12, 2025 17:25

...
Google Search
Forth-FAQ Spy Grafic

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




Начать новую тему Ответить на тему  [ Сообщений: 2 ] 
Автор Сообщение
 Заголовок сообщения: Подключение GPU к Irbis
СообщениеДобавлено: Вс ноя 09, 2025 21:10 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 8058
Благодарил (а): 29 раз.
Поблагодарили: 147 раз.
Сразу можно отметить, что никакого программирования GPU непосредственно на Форте и не предполагалось. Обычный CUDA SDK, но при этом функции компилируются в dll, экспортируются (как stdcall), что дает возможность подключить это все к Irbis. Пришлось еще добавить long long int, чтобы состыковать все с 64-битной форт-машиной (и абсолютные адреса уже за границей 32 бит). Зато теперь можно аккуратно передавать все в GPU.

Подключается примерно так:

Код:
int hCuda
int hAdd
int hInfo

"CUDADllStat.dll" loadlibrary to hCuda
hCuda "addVectorsCuda" getprocaddress to hAdd
hCuda "InfoCuda" getprocaddress to hInfo

// addVectorsCuda(long long int* c, const long long int* a, const long long int* b, unsigned long long int size)

"Dll address " print hCuda . cr
"Function add " print hAdd . cr
"Function info " print hInfo . cr

hInfo invoke . cr

create a[] 1 , 2 , 3 , 4 , 5 ,
create b[] 2 , 4 , 6 , 8 , 10 ,
create c[] 5 cells allot

"Running vectors addition on GPU..." print cr

c[] data[]+ a[] data[]+ b[] data[]+ 5 hAdd invokelong4


С выводом:

Код:
Dll address 140714923982848
Function add 140714924032128
Function info 140714924032112
55
Running vectors addition on GPU...
3
6
9
12
15


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Подключение GPU к Irbis
СообщениеДобавлено: Пн ноя 17, 2025 22:54 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 8058
Благодарил (а): 29 раз.
Поблагодарили: 147 раз.
Итак, если функция в CUDA SDK вот такая:
Код:
//MacVectorsCuda(const double* data, unsigned long long int datasize, const double* wav, unsigned long long int num_threads, double* w )

.. то на Ирбисе она вызывается вот так.

Код:
x[] data[]+ wavsize
wav[] data[]+ GPU_threads
wav_res[] data[]+
hWav invokelong5 


data[]+ нужно, чтобы сделать поправку на расположение в памяти области данных форт-машины. Ее ноль - это в действительности какое-то смещение в памяти данных процесса.

Но быстро работает...


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

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


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

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


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

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
phpBB сборка от FladeX // Русская поддержка phpBB