Top.Mail.Ru
Ответы

Выполнять код на GPU, а не на CPU

Здравствуйте! Я новичок в программировании. Учу язык питон. Пишу свою программу для теста и для собственного понимания языка. Сделал простой код простой игры похожей на покер. Решил выяснить какая из комбинаций сильнее из 100 миллионов вариантов. Код выполнялся 5 минут и для меня это долго. Я расчитывал на секунд 30. В интернете прочитал, что можно перенести вычисления с процессора на видеокарту. Видеокарта у меня NVIDIA GTX 3060 от ноутбука на 6Гб. Помогите пожалуйста с кодом. Сам код ниже:



import random as rnd
import os
import numpy as np
import timeit

count = 0

comb1 = 0
comb2 = 0
comb3 = 0
comb4 = 0

comb1Percent = 0
comb2Percent = 0
comb3Percent = 0
comb4Percent = 0

while count < 100000000:

count = count + 1

a = rnd.randrange(1, 11, 1)
b = rnd.randrange(1, 11, 1)
c = rnd.randrange(1, 11, 1)

d = [a, b, c]

d.sort()
d.reverse()

if a == b and a == c:
comb1 = comb1 + 1
comb1Percent = round(comb1 / count * 100, 3)

if a == b or a == c or b == c:
comb2 = comb2 + 1
comb2Percent = round(comb2 / count * 100, 3)


if (d[0] - 1 == d[1] and d[1] - 1 == d[2]) or (d[0] == 10 and d[1] == 2 and d[2] == 1):
comb3 = comb3 + 1
comb3Percent = round(comb3 / count * 100, 3)

comb4 = count - (comb1 + comb2 + comb3)
comb4Percent = round(100 - (comb1Percent + comb2Percent + comb3Percent), 3)


print()
print(count)
print()
print("Три одинаковых")
print(comb1)
print(comb1Percent,"%")
print()
print("Две одинаковых")
print(comb2)
print(comb2Percent,"%")
print()
print("Лесенка из трёх")
print(comb3)
print(comb3Percent,"%")
print()
print("Без совпадений")
print(comb4)
print(comb4Percent,"%")
print()

По дате
По рейтингу
Аватар пользователя
Просветленный

А зачем рандомить 100 миллионов вариантов, когда комбинаций всего тысяча?

Аватар пользователя
Искусственный Интеллект

Это не так просто, как тебе кажется, и вдобавок к питону тебе придется изучить эдакий вариант си, на котором пишут код для шейдеров. Подробнее тут: https://documen.tician.de/pyopencl/

Аватар пользователя
Профи

Ахуеть

Аватар пользователя
Мудрец

по вопросу - не знаю
по коду - зачем лишние библиотеки импортишь? они же нагрузку дают
Попробуй импортировать это функцию в класс и обращаться к нему при необходимости, тогда цикл можно будет выводить в реальном времени, т. е. статистика будет динамической. Или же выгрузить все необходимые заранее сделанные просчеты в таблицу с индексами, хотя конечно зависит от задач