У меня большой набор данных (около 5 миллионов наблюдений).Наблюдения регистрируют общий доход от конкретного события по разным типам вложений, обозначаемых как «тип».Ниже приведена небольшая репликация данных:
Event_ID = c(1,1,1,1,1,2,2,2,2,2,3,3,3,3)
Type=c("A","B","C","D","E","A","B","C","D","E","A","B","C","D")
Revenue1=c(24,9,51,7,22,15,86,66,0,57,44,93,34,37)
Revenue2=c(16,93,96,44,67,73,12,65,81,22,39,94,41,30)
z = data.frame(Event_ID,Type,Revenue1,Revenue2)
Я хотел бы использовать ядра GPU для запуска написанной мной функции (я никогда не пытался обрабатывать GPU, так что я в полной растерянности, какначать).Реальная функция выполняется очень долго.Ниже показана очень простая версия функции:
Total_Revenue=function(data){
full_list=list()
event_list=unique(data[,'Event_ID'])
for (event in event_list){
new_data=list()
event_data = data[which(data$Event_ID==event),]
for (i in 1:nrow(event_data)){
event_data[i,'Total_Rev'] = event_data[i,'Revenue1']+event_data[i,'Revenue2']
new_data=rbind(new_data,event_data[i,])
}
full_list=rbind(full_list,new_data)
}
return(full_list)
}
Total = Total_Revenue(data=z)
print(Total)
Эта упрощенная функция версии работает следующим образом:
a) Разбейте набор данных на подмножества так, чтобы каждое подмножествопринимает только одно уникальное событие.
b) Для каждого наблюдения выполните цикл по всем наблюдениям и рассчитайте Доход1 + Доход2.
в) Сохраните подмножества и в конце верните новый набор данных.
Поскольку у меня нет предыдущего опыта, я смотрел на некоторые пакеты R.Я нашел пакет gpuR и установил его. Однако мне сложно понять, как это реализовать.Также проблема в том, что мой фон кодирования очень слабый.Я сам научил себя некоторым вещам за последний год.
Любая помощь / ведет будет высоко оценен.Я открыт для использования любых альтернативных пакетов.Пожалуйста, дайте мне знать, если я что-то пропустил.
PS Я также сделал снимок своей системы, используя следующую команду:
str(gpuInfo())
Я прилагаю вывод для вашей справки:
![enter image description here](https://i.stack.imgur.com/dcPiu.png)
PPS Обратите внимание, что моя фактическая функция немного сложна и длинна, и ее запуск занимает много времени, поэтому я хочу реализовать обработку gpu здесь.