Elite Games - Свобода среди звезд!
.
ВНИМАНИЕ!
Наша конференция посвящена космической тематике и компьютерным играм.
Политические вопросы и происходящие в мире события в данный момент на нашем сайте не обсуждаются!

  » Ищу программеров, сидящих на космосе. | страница 6
Конференция предназначена для общения пилотов. Для удобства она разделена на каналы, каждый из которых посвящен определенной игре. Пожалуйста, открывайте темы только в соответствующих каналах и после того, как убедитесь, что данный вопрос не обсуждался ранее.

Поиск | Правила конференции | Фотоальбом | Регистрация | Список пилотов | Профиль | Войти и проверить личные сообщения | Вход

   Страница 6 из 6
На страницу: Пред.  1, 2, 3, 4, 5, 6 | Все страницы
Поиск в этой теме:
Канал Игры Мечты: «Ищу программеров, сидящих на космосе.»
Варсик
 545 EGP


Рейтинг канала: 4(81)
Репутация: 117
Сообщения: 4039
Откуда: Москва
Зарегистрирован: 22.12.2002
Вообще там ссылка на сложную структуру геометрии для последующей проверки.

+ это все будет 1 раз посчитано и лежать в константной памяти.
_________________
WARNING: By reading this post you accept that this post is genius.
    Добавлено: 20:12 07-01-2014   
Sh.Tac.
 151 EGP


Рейтинг канала: 5(108)
Репутация: 14
Сообщения: 1426

Зарегистрирован: 27.07.2005
где посчитано? по-моему GPU умеет тока читать из __constant__

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

возвращаясь к тем же квадратам их дешевле ещё раз тупо посчитать когда надо, хранить и извлекать дорого
_________________
This is what you get ...
(c) Radiohead
    Добавлено: 21:14 07-01-2014   
Варсик
 545 EGP


Рейтинг канала: 4(81)
Репутация: 117
Сообщения: 4039
Откуда: Москва
Зарегистрирован: 22.12.2002
 Быстродействие? Не, не слышал   (кликните здесь для просмотра)
 code   (кликните здесь для просмотра)
Код:
#include <stdio.h>
#include <stdlib.h>

#define CUDA_CALL(value) {                                       \
   cudaError_t _m_cudaStat = value;                              \
   if (_m_cudaStat != cudaSuccess) {                              \
      fprintf(stderr, "Error %s at line %d in file %s\n",               \
            cudaGetErrorString(_m_cudaStat), __LINE__, __FILE__);      \
      exit(1);                                             \
   } }

struct SpaceObject {
   float x;
   float y;
   float z;
};

__global__ void ck_work(SpaceObject *objs, int count){
   int idx = threadIdx.x + blockIdx.x * blockDim.x;
   if(idx < count){
      SpaceObject cObj = objs[idx];

      for(int i = 0; i < count; i++){
         SpaceObject obj = objs[i];
      }
   }
}

int main(void) {
   static int count = 100000;

   SpaceObject *h_obj = new SpaceObject[count];
   for(int i = 0; i < count; i++){
      h_obj[i].x = rand() / (float)(RAND_MAX) * 10.0;
      h_obj[i].y = rand() / (float)(RAND_MAX) * 10.0;
      h_obj[i].z = rand() / (float)(RAND_MAX) * 10.0;
   }

   SpaceObject *d_obj;
   CUDA_CALL(cudaMalloc((void **)&d_obj, sizeof(SpaceObject) * count));
   CUDA_CALL(cudaMemcpy(d_obj, h_obj, sizeof(SpaceObject) * count, cudaMemcpyHostToDevice));

   cudaEvent_t start, stop;
   cudaEventCreate(&start);
   cudaEventCreate(&stop);
   cudaEventRecord(start, 0);

   int blocks = count / 1024;
   ck_work<<<blocks, 1024>>>(d_obj, count);

   cudaEventRecord(stop, 0);

   CUDA_CALL(cudaThreadSynchronize());
   CUDA_CALL(cudaGetLastError());

   float elapsedTime;
   CUDA_CALL(cudaEventElapsedTime(&elapsedTime, start, stop));
   printf("CUDA time: %3.1f ms\n", elapsedTime);

   CUDA_CALL(cudaFree((void*) d_obj));
   CUDA_CALL(cudaDeviceReset());

   return 0;
}
CUDA time: 954.3 ms

_________________
WARNING: By reading this post you accept that this post is genius.
    Добавлено: 13:19 11-01-2014   
Jurec
 348 EGP


Ведущий раздела
Рейтинг канала: 4(76)
Репутация: 102
Сообщения: 1441 Заблокирован
Откуда: Seattle
Зарегистрирован: 25.02.2006
Так далеко не все задачи решаются лучше на GPU чем на CPU. Ну собственно ты уже увидел
_________________
MOV topka, C++
    Добавлено: 20:56 12-01-2014   
Варсик
 545 EGP


Рейтинг канала: 4(81)
Репутация: 117
Сообщения: 4039
Откуда: Москва
Зарегистрирован: 22.12.2002
Ну вообще-то если это запустить на компе то будут минуты, но это детали.

добавлено спустя 4 минуты:
Мне вот нравятся такие люди... Вот они сказал свое ВАЖНОЕ МНЕНИЕ (С) (R) (TM). А посмотреть насколько они ошибаются - они не удосужились... Для того, чтобы понятно было: Тут идет перебор и "фетч" для 100К потоков 100К областей памяти. Итого: 10ККК фетчей. Даже если у вас 2,5ГГц проц и доступ к памяти происходит мгновенно, то это будет 4 секунды. Не считая накладные расходы на счетчики и т.д.

Просто это все-равно медленней, чем хотелось-бы. И надо менять алгоритм.

Если решать проблему в тупую, то надо ограничивать 1К народу на ноду и 10-20К объектов и тогда все будет, но хотелось-то больше...
_________________
WARNING: By reading this post you accept that this post is genius.

Последний раз редактировалось: Варсик (14:57 13-01-2014), всего редактировалось 1 раз
    Добавлено: 14:57 13-01-2014   
Jurec
 348 EGP


Ведущий раздела
Рейтинг канала: 4(76)
Репутация: 102
Сообщения: 1441 Заблокирован
Откуда: Seattle
Зарегистрирован: 25.02.2006
Спокойней будь, если тебе не нужно другое мнение - вообще не ясно чего ты сюда пишешь.

Я очень хочу посмотреть как быстро у тебя будет работать gpgpu, когда ты начнешь модифицировать данные по которым ты бегаешь. Тем более когда у тебя полный перебор.
_________________
MOV topka, C++
    Добавлено: 15:38 13-01-2014   
Варсик
 545 EGP


Рейтинг канала: 4(81)
Репутация: 117
Сообщения: 4039
Откуда: Москва
Зарегистрирован: 22.12.2002
А есть у кого-нибудь знакомые, которые с кудой общались? А то у меня затык в интересном месте... Где его не может быть.
_________________
WARNING: By reading this post you accept that this post is genius.
    Добавлено: 23:06 21-01-2014   
DIMOSUS.X
 995 EGP


Рейтинг канала: 4(67)
Репутация: 188
Сообщения: 3252
Откуда: Vilnius/Minsk
Зарегистрирован: 06.08.2008
Насколько сильно DirectCompute отличается от CUDA? Говорят Что DirectCompute является унифицированной прослойкой над nVidia CUDA и AMD FireStream
_________________
Даже ежики ежиков могут с трудом,
Иначе бы ежики были кругом.
    Добавлено: 23:44 08-02-2014   
Канал Игры Мечты: «Ищу программеров, сидящих на космосе.»
На страницу: Пред.  1, 2, 3, 4, 5, 6 | Все страницы
  
Показать: 
Предыдущая тема | Следующая тема |
К списку каналов | Наверх страницы
Цитата не в тему: Красивости это конечно хорошо, но эдак скоро космос начнут делать голубым с зеленой травкой. (Executor о космосе в играх)

  » Ищу программеров, сидящих на космосе. | страница 6
Каналы: Новости | Elite | Elite: Dangerous | Freelancer | Star Citizen | X-Tension/X-BTF | X2: The Threat | X3: Reunion | X3: Terran Conflict | X Rebirth | X4: Foundations | EVE Online | Orbiter | Kerbal Space Program | Evochron | VoidExpanse | Космические Миры | Онлайновые игры | Другие игры | Цифровая дистрибуция | play.elite-games.ru | ЗВ 2: Гражданская война | Творчество | Железо | Игра Мечты | Сайт
   Дизайн Elite Games V5 beta.18