Читая форумы: NVidia 8800GTX гигафлопсы, консистентность памяти и прочие тараканы

Третий день читаю форумы про NVidia CUDA и радуюсь сырости технологии.

  • Для начала, объявленные 520 GFLOP/s оказались обычным маркетингом The 520 GFLOPS number quoted in the technical brief includes some graphics-specific operations that are not directly accessible from CUDA. С точки зрения вычислений, гигафлопсов там 345 (считая Multiply-Add за две операции). Тоже неплохо. В реальности будет разика в два поменьше, но тоже ничего.
    Для сравнения, гипотетический (пока) 3Ghz 4-ядерный Core2Duo умеет 8 операций на такт * 4 ядра * 3Ghz = 96 GFLOP/s, а получить удастся процентов 70 от этого.
  • Отсутствие атомарных операций сильно усложняет жизнь. Предлагается в цикле писать значение в global memory, до тех пор пока не убедишься в успехе.
  • На текущий момент все вызовы - блокирующие. Т.е. нет возможности
    • Запустить счет и одновременно заливать/выливать данные для следующего/предыдущего счета.
    • Использовать две (и более) карт
    Обещают починить.
  • The performance gain you'll get by using CUDA over the graphics API largely depends on how much your application can take advantage of the shared memory. В-общем, идея понятная, но полностью противоречит всей прошлой истории GPGPU. Может оно и хорошо

Comments

Почитал материалы по CUDA в интернете,в том числе и Ваш блог,получается:на данном этапе
развития GPGPU смысла связываться с ними нет.
Пока дешевле в целом просто параллелить процессы на ЦП.По стоимости железа подороже,но учитывая
необходимость постоянно держать програмера под
CUDA,в целом получается намного дороже.

Это же очень зависит от задачи.

По raw processing power одна 600-долларовая карточка примерно равна паре Quad Core Xeon на общую сумму примерно $2000 (плюс еще обвязка в виде собственно серверов и питания, думаю что реальный выигрыш тыщи три на каждой карте).

Теперь представим, что этих серверов под нашу задачу нужно, скажем, 1000. Получаем выигрыш в 3 миллиона уев.

Второй вариант - задача влезает на одну видеокарту, но не влезает в один сервер (с учетом того, что на задачах некоторых классов из 8800GTX выжимали их теоретически возможные 350+ Gflops - вполне возможно). Тогда или светит кластер (с программистом под него) или CUDA (тоже с программистом), но кластер - сильно сложнее.

Получается ниша CUDA - это редкая смена задач и большие объёмы данных,"суперкомпьютинг для бедных" как и обещалось.
По стоимости сравнивал РС одиночные с Q6600
и РС с Tesla .
Рассматривал конкретно под свои задачи.Код на Си
быстро получаю с Matlab,на CUDA придется писать
вручную.А процессоры Q6600 можно разогнать.Мах.
количество машин-8,благо данные идут килобайтными файлами, и анализировать надо только внутри файла.

Есть готовая Matlab-библиотека для CUDA.

Но она может быть только для FFT, я не разбирался.

Да, если сравниваете с Tesla, то и PC берите брендовые. А так, что Tesla, что игровая карта - примерно один фиг, если 768M памяти хватает, то смысла в тесле нету.

Спасибо.Буду следить за развитием проекта.