Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
SerVal
23 / 23 / 8
Регистрация: 16.04.2015
Сообщений: 208
#1

Поиск простых чисел на видеоадаптере

08.03.2017, 15:59. Просмотров 155. Ответов 8
Метки нет (Все метки)

Использую CUDA. Для маленьких цифр всё замечательно. С цифрами побольше экран начинает "подмерзать.
А при вычислении больше 2 секунд - Windows ресетит драйвер экрана(TDR).
.
Что делать с "долгоиграющими" функциями? Есть какая-нибудь общая метода?
На ЦПУ можно понизить приоритет программы, или вставить Sleep(100 ms). А что делать с ГПУ я не знаю.

Добавлено через 6 минут
Вот на ЦПУ:
C++
1
2
3
D:\aProjects\CudaTest\x64\Release>PrimeSearchCuda.exe
isPrimeCPU: N = 18446744073709551557 is prime.
 time : 6.624 sec.
А на ГПУ - никак.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.03.2017, 15:59
Ответы с готовыми решениями:

Поиск простых чисел
Народ, в программе нужно из введённых чисел найти и вывести простые числа(т.е....

поиск простых чисел
Как найти количество цифр n- значных чисел, у которых сумма любых двух соседних...

Поиск простых чисел
Всем привет, прохожу книгу Шилдта и остановился на программе:...

Поиск простых чисел
#include <iostream> #include <stdio.h> #include <locale.h> using namespace...

Поиск простых чисел
to idetify if the given K is prime or not. Prime number is the number that can...

8
nmcf
6260 / 5572 / 2532
Регистрация: 14.04.2014
Сообщений: 23,464
08.03.2017, 16:36 #2
Что-то неправильно делаешь, однако.
0
SerVal
23 / 23 / 8
Регистрация: 16.04.2015
Сообщений: 208
08.03.2017, 18:04  [ТС] #3
Цитата Сообщение от nmcf Посмотреть сообщение
Что-то неправильно делаешь, однако.
Ну да, скорее всего так. А как правильно? Не могу же я сделать, чтобы все функции вычислялись за 50 миллисекунд.
Увеличить TDR, конечно можно. При этом экран "примёрзнет". И "отмёрзнет", только когда всё досчитается.
Это не совсем то, чего хотелось бы.
0
nmcf
6260 / 5572 / 2532
Регистрация: 14.04.2014
Сообщений: 23,464
08.03.2017, 18:43 #4
Я имею в виду, что экрану не должно это мешать. Может, не надо загружать все процессоры?
0
Evg
Эксперт CАвтор FAQ
19134 / 6978 / 522
Регистрация: 30.03.2009
Сообщений: 19,628
Записей в блоге: 30
08.03.2017, 18:45 #5
Цитата Сообщение от nmcf Посмотреть сообщение
Я имею в виду, что экрану не должно это мешать
Если в винде включены всякие aero, то они вроде бы как используют gpu. В этом случае программист сам обязан следить, чтобы не есть все графические ядра
0
SerVal
23 / 23 / 8
Регистрация: 16.04.2015
Сообщений: 208
08.03.2017, 19:37  [ТС] #6
Цитата Сообщение от Evg Посмотреть сообщение
В этом случае программист сам обязан следить, чтобы не есть все графические ядра
Цитата Сообщение от nmcf Посмотреть сообщение
Я имею в виду, что экрану не должно это мешать. Может, не надо загружать все процессоры?
Ребятки, нетути возможности назначить число ядер для выполнения кернела.
.
Впрочем, я и это попробовал: запускал на ГПУ параллельный поиск для 80-ти чисел, а потом и одного числа.(массив на ГПУ из одного числа).
.
Всё то же самое: пока расчёт не закончен, видеоадаптер занят и через 10 секунд Windows ресетит адаптер.
(на компике установил TDR = 10 секунд).

Примеры по CUDA смотрел, компилил. Типа сложить 2 вектора: A[idx]= B[idx] + C[idx];
Всё замечательно, если длина векторов = 5. А если длина векторов = 4 тыс, то привет... всё валится.
И нигде не написано, что в таком случае делать. Как будто, такой проблемы не существует вообще!
0
Evg
Эксперт CАвтор FAQ
19134 / 6978 / 522
Регистрация: 30.03.2009
Сообщений: 19,628
Записей в блоге: 30
08.03.2017, 19:48 #7
Ты попробуй для начала в винде отключить aero и оставить простой классический вид. Хоть понятно будет, проблема с этим связана, или нет

Добавлено через 5 минут
Я поиском нигде не нашёл ни намёка на то, что как-то можно ограничить количество ядер. Не удивлюсь, если этого сделать нельзя. Т.е. графическому процессору выдаёт задание, а он сам его распределяет по ядрам. На моей памяти там в GPU встроен планировщик задач (т.е. что-то типа ОС внутри процессора). По идее он уже не видит разницы между двумя пользовательскими процессами
0
SerVal
23 / 23 / 8
Регистрация: 16.04.2015
Сообщений: 208
08.03.2017, 20:00  [ТС] #8
Цитата Сообщение от Evg Посмотреть сообщение
Ты попробуй для начала в винде отключить aero и оставить простой классический вид
Аэро вообще нетути. Windows Server 2008 R2 (64 bit).

Таких вещей, как запустить процесс, приостановить процесс, завершить... Нетути вообще.
Запущенный кернел вообще не остановишь. Либо он закончит вычисления, либо его Windows прибьёт.
*пойло это CUDA ещё то.
Но какой-то фокус тут должен быть!
.
на нВидия "Тесла", таких проблем нет - там программа(кернел) может выполняться сколь угодно долго.
0
Evg
Эксперт CАвтор FAQ
19134 / 6978 / 522
Регистрация: 30.03.2009
Сообщений: 19,628
Записей в блоге: 30
08.03.2017, 20:05 #9
Цитата Сообщение от SerVal Посмотреть сообщение
пойло это CUDA ещё то
"Ты просто не умеешь его готовить"
0
08.03.2017, 20:05
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.03.2017, 20:05

Поиск простых чисел
необходимо найти все простые числа от 1 до 100. Вот я написал код: #include...

Поиск простых чисел
3. Разработать программу поиска простых чисел в отрезке (1..N) целых...

Поиск простых чисел
помогите пожалуйста с заданием напишите программу которая при помощи двух...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru