Меню

Расчет числа пи на видеокарте



Вычисление числа Пи (многопоточное)

Здравствуйте. Мне нужно написать программу, вычисляющую число пи по следующему методу( формула Виета) (с дополнительными требованиями к программе (см ниже) ):

Программа при запуске должна считывать количество знаков после запятой, а после запуска вычисления должна быть возможность в любой момент приостановить работу программы (с возможностью продолжения) или полностью остановить вычисления. В последнем случае программа должна вывести текущий результат вычисления числа и соответствующую ему точность. В простейшем случае без потоков как считать с заданной точностью понятно:

Многопоточное вычисление на ядре и видеокарте
Здравствуйте. Для многопоточного расчета на процессоре и видеокарте необходимо использовать.

многопоточное вычисление
Как организовать многопоточное вычисление функции (x+5)^(2/3) + abs(x+2)^2 — ln(5*tg(x)) -.

Многопоточное вычисление количества сочетаний (комбинаторика)
помогите пожалуйста с задачкой Разработать программу, вычисляющую число сочетаний.

Создать многопоточное приложение для определения количество вхождений числа b в массив C
Задание написать программу Дана последовательность чисел С = <с0…сn–1>и число b. Создать.

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Вычисление факториала и вычисление степени числа
Нужно проверить правильность сделанной программы если не правильно помогите исправить. Var.

Вычисление суммы нечетных чисел, больше числа А но меньших числа В
Написатт программу вычисление суммы нечетных чисел. Больших числа А но меньше числа В.

Вычисление суммы четных делителей натурального числа М, больших числа Р
Помогите, пожалуйста составить программу на языке python.:) Составьте программу вычисления суммы.

Вычисление суммы четных делителей натурального числа М, больших числа Р
составить программу вычисления суммы четных делителей натурального числа М,больших числа Р,но.

Источник

Расчет числа пи на видеокарте

Когда графические процессоры видеокарт стали программируемыми, появился соблазн использовать их для вычислений. Действительно, те задачи, которые хорошо распараллеливаются, выполняются на GPU намного быстрее, чем на центральных процессорах. Это и обработка видео, и матричные вычисления, и научные расчёты. nVidia вышла полтора года с инициативой CUDA, которая к настоящему моменту уже достаточно хорошо отработана, доступна вторая версия API. Мы решили подробнее рассмотреть CUDA и провести тесты на собственноручно написанной программе.

nVidia CUDA: вычисления на видеокарте или смерть CPU? (http://www.thg.ru/graphic/nvidia_cuda/index.html)

Пофантазируем, что получится, если мир завоюет единый интерфейс, подобный CUDA, а видеокарта трансформируется в некий «универсальный блок ресурсоёмких вычислений».

«Смерти» CPU или GPU, конечно, не будет, но многое в расстановке приоритетов очень сильно изменится.
При должном распространении этой технологии — CPU может стать неким «устройством по умолчанию», чем-то вроде нынешних интегрированных видеочипов. То есть — будет служить для обеспечения минимально необходимой мощности компьютера, использующейся операционной системой и оболочками приложений. Области применения «чистого» CPU — офисы, учебные заведения, и т.д.
В то же время, профессионалы смогут наращивать мощность ПК путём установки модульных GPGPU — примерно так, как сейчас наращивается объём оперативной памяти (или видео в режимах SLI/CrossFire). Причём процедура эта станет намного более простой и дешёвой, чем сборка многопроцессорных/кластерных систем в настоящее время (за счёт возможности постепенного приобретения модулей).
Иначе говоря, больше не будет «бесполезных» покупок типа «видеокарты только для игр» — настанет этакий «компьютерный коммунизм», при котором каждый компонент вносит свою лепту в увеличение производительности ПК, применимой к любым задачам — будь то игры, 3D-рендеринг, или расчёт числа Пи.
ИМХО, мир движется именно к такой унификации: с одной стороны — nVidia с технологией CUDA (GPU вместо CPU), с другой стороны — Intel с разработками Larrabee (CPU вместо GPU). Интересно, где же они встретятся, и какое из направлений выживет?

Ну что, ура, товарищи — в светлое унифицированное будущее. 🙂

P.S. Интересно, планирует ли nVidia включить поддержку CUDA в следующие поколения интегрированной графики? Понятно, что мощность «бортовых» чипов весьма невысока, но если они смогут выдавать хотя бы 100-200% производительности CPU (а не несколько тысяч процентов, как GT280) — то у nForce может появиться серьёзный шанс просто раздавить чипсеты Intel в секторе бюджетных учебных/научных ПК (да и во многих других). Хммм. (think)

Мое субъективное ИМХО.
CUDA до простых юзеров не доползет. Пиндосы в своем Пиндостане не дураки, чтобы в свои дорогущие ускорители такую мощь на халяву сувать. В CUDA работать будут шустро Научные центры и НИИ.
Видео посжимать и порендерить быстро мы вряд ли сможем.
Вспомните Quadro/Tesla. иже с ними. Заоблачные цены=профсегмент.

Весьма интересная технология, вот только в статье я не увидел ничего про обычные программы, поддерживающие CUDA. Насколько я знаю, таковых почти нет. Писать их не каждый умеет.
На сегодняшний день CUDA 2.0 объявлена в числе одной из основных «изюминок» пакета Adobe CS4 (хотя пока остаётся тоько верить рекламе — пакет выходит осенью). Пока (на уровне «мэйнстрима») — увы, всё. 🙁
Действующих программ нет. Точнее, они есть — но, поскольку CUDA 2.0 всё ещё находится в стадии бета-тестирования, то заявлять о них, как о полноценных, пока рановато.
CUDA до простых юзеров не доползет. Пиндосы в своем Пиндостане не дураки, чтобы в свои дорогущие ускорители такую мощь на халяву сувать. В CUDA работать будут шустро Научные центры и НИИ.
Видео посжимать и порендерить быстро мы вряд ли сможем.
Вспомните Quadro/Tesla. иже с ними. Заоблачные цены=профсегмент.
Первая «ласточка» уже была — рендер-движок nVidia Gelato (2005-й год). Уже тогда он показывал ощутимые преимущества (до 150-200% на FX5200) в скорости 3D-рендеринга перед аналогичной системой, но с видеокартой ATI. Скончался же он исключительно вследствие явной неконкурентоспособности по качеству картинки.
Пиндосы (хехе!) сами задыхаются, оптимизируя коды в тисках аппаратных ограничений на многие виды своих программных технологий. Так что, они тоже «слегка» заинтересованы в том, чтобы не особо париться вопросом «загнётся Nehalem под этой задачей, или нет». Кто купит софт, который будет тормозить даже на ультрасовременных системах?
Что же касается Quadro, и, особенно, Tesla — то даже новорожденному «монстрёнышу» GTX280 в плане производительности до них как до луны. Отсюда и цены такие. 🙂
Технология CUDA, уже реализована даже 8800, по крайней мере были первые образцы. Просто цена реализации просто заоблачная. Та и для домашнего использования, нада ли такие мощные расчеты делать?
Какая ещё «цена реализации»? Поясните.
Кстати, поддержку API CUDA имеют даже 8500GT. 🙂
господи. да какая там мощь то?? ну для спец задач — в 10 раз быстрее чем обычный проц. Явно на «мощь» для НИИ не тянет
В отдельных задачах — преимущество более чем в 100 раз (данные для GTX280):
http://www.3dnews.ru/_imgdata/img/2008/06/16/85929.jpg

Читайте также:  Установка второй видеокарты для physx

А вот — более «жизненные» таблички. 😉

Производительность:
http://kaigo.uz/shared_images/thg/cuda/IMG0020718.jpg
Что характерно: судя по всему, задача не особо «параллельная» — поскольку в этом тесте Core 2 Duo Е6850 сливает Core 2 Extreme QX6850 всего 40% (а при хорошей «параллельности» задачи — должен сливать процентов 70-90).

«Полезная мощность» на 1 Ватт потребляемой электроэнергии:
http://kaigo.uz/shared_images/thg/cuda/IMG0020725.jpg

Так что — ИМХО, ближайший год обещает быть урожайным на всякого рода «мини-революции»: Nehalem, Deneb, CUDA. и чёрт его знает, что там ещё готовится в «капиталистических подпольях».
Очень хотелось бы не терять оптимизма и дождаться всего вышеобещанного. 🙂

Какая ещё «цена реализации»? Поясните.
Кстати, поддержку API CUDA имеют даже 8500GT. 🙂

Чесно не видел нигде про поддержку 8500, в основном рабочая станция с топовым процесором и конфигурацией СЛИ (2-3 8800). Может и существуют другие я их нигде в новостях и тестах не встречал.

ИМХО, если и создадут такой хороший вычислитель поначалу цена не будет приемлемой, да обещания и тесты хороши, подождать нужно комплексного решения и главное масового

Так что — ИМХО, ближайший год обещает быть урожайным на всякого рода «мини-революции»: Nehalem, Deneb, CUDA. и чёрт его знает, что там ещё готовится в «капиталистических подпольях».
Очень хотелось бы не терять оптимизма и дождаться всего вышеобещанного.

szirmay/ibl_link.htm
http://graphics.cs.uiuc.edu/geomrt/
И — интересная новость о Larrabee: http://lenta.ru/articles/2008/06/16/raytracing/
А также — сенсационная (хотя и слегка сомнительная) новость для всех 3D-графистов: http://chernetskiy.livejournal.com/10847.html

Вообще же, в применении к пакетам 3D-графики — с CUDA, как минимум должен резко ускориться просчёт физики (Reactor, RealFlow и т.д.). Сейчас даже на моём процессоре просчёт физики не очень крутой по сложности анимации в RealFlow занимает несколько минут. А ведь это — даже не конечный просчёт, а режим отладки сцены. 🙁

Да ну.
Ну да! 🙂 Вы же уж точно не за «лишнюю память» несколько тысяч баксов платите. 😀
Ядра, действительно, практически идентичны (в основном — на Quadro), но вот остальная аппаратная часть.
http://kaigo.uz/shared_images/thg/cuda/IMG0020823.jpg
http://kaigo.uz/shared_images/thg/cuda/arbyte.jpg
(Источник: http://www.arbyte.ru/press/news/news150508.shtml)

Как думаете, GTX280 настолько же превзойдёт 8800GT в этих тестах?

Как думаете, GTX280 настолько же превзойдёт 8800GT в этих тестах?

Не путайте тесты САПР по 3D-графике и CUDA! Совершенно разные вещи!

В случае САПР nVidia специально лочит производительность в драйверах для САПР-приложений, чтобы продавать дорогие карты профессионального уровня, а у инженеров не было соблазна покупать геймерские карты для автокадов.

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

CUDA — технология расчётов через GPU. Поскольку захватывается и потребительский сектор, то пока никаких лочек не предвидится.

Даже на THG не смогли обойти стороною CUDA 🙂 .
Меня тоже последнее время интересуют GPGPU, и CUDA в частности, как только узнал про унифицированную архитектуру G80 и RV600. Сначала подумал: а в чём фича (think) , раньше большая производительность получалась за счёт фиксированного конвейера, а сейчас можно выполнять произвольный код и при этом в разы быстрее чем на CPU?! В последствии восполнил пробел в знаниях и разобрался получше.
Вскоре появились Tesla и Firestream, основанные на тех же G80 и RV600, узнал что нужен SDK и можно вычислять на этих «видеокартах». Возник резонный вопрос: а если испоьзуется тот же GPU, то нельзя ли на обычных видеокартах с унифицированными шейдерами работать так же?

Оказалось, что можно :* ! IMHO это добавляет ценности покупке: беря игровую видеокарту её можно использовать для некоторых «супервычислений»!

Правда есть ограничения на дизайн исполняемого кода и одинарная точность, но задач, где это применимо, тоже много. Остаются вопросы, правда.

1) Если с CUDA всё понятно (насколько это возможно без написания хотя бы одной программы), то вот с решением от конкурента ещё не разобрался (Brook+, CTM).
2) Чем отличаются штатные видеокарты от тех же Tesla и FireStream?
3) Имеет ли смысл брать 8800GT для игр и экспериментов с CUDA, если скоро можно будет взять 4850 с её терафлопсом (но нужно вникать в технологию GPGPU от AMD).
4) Можно ли написать свой код, который будет эффективно выполняться на данном GPU? Читай написать программный рендерер, который будет лучше использовать возможности GPU чем связка GameEngine-GraphicAPI-Driver. правда драйвер, как я понял, никуда не уходит, но показалось, что зная архитектуру чипа достаточно хорошо можно написать очень эффективный код, пусть даже под данный GPU.

Источник

GPUPI: International support thread

About two months ago our beloved Turrican passed away in a horrible car accident. He was a big part of our community and is still Austria’s only overclocking legend! Out of my sadness and anger I started to work on this project as a virtual monument, something to honour him in our scene. It’s an homage to SuperPI, that Turrican benched on every possible platform, and calculates Pi completely parallelized on graphics cards and CPUs. So let’s get our gear going and do exactly what our Karl showed us in all his years: Bench the hell out of GPUPI!

HWBOT version for world records and points:

  • GPUPI 3.2
  • GPUPI 3.2 — Legacy Version (supports XP SP3, 32 bit, OpenCL 1.1 and GeForce 200 to 500 series cards, slower on modern hardware!)

Latest version:

  • GPUPI 3.3.3
  • GPUPI 3.3.2 — Legacy Version (supports XP SP3, 32 bit, OpenCL 1.1 and GeForce 200 to 500 series cards, slower on modern hardware!)
Читайте также:  Видеокарта zotac geforce gtx 430

CUDA/OpenCL drivers for GPUs: Install the latest graphics card drivers!

OpenCL drivers for CPUs:

  • AMD APP SDK 3.0 (OpenCL 2.0, just install the driver, uncheck the rest)
  • AMD APP SDK 2.9.1 (OpenCL 1.2, just install the driver, uncheck the rest)
  • Intel CPU Runtime for OpenCL (quick registration necessary)

Deutsche Version

Technical Details

GPUPI calculates the mathematical constant Pi in parallel by using the BPP formula and optimizing it for OpenCL capable devices like graphics cards and main processors. It’s implemented with C++, STL and pure Win32 to avoid unnecessary dependencies. The result of the benchmark are exactly nine digits of pi in hexadecimal. So if you’re calculating pi in 1B (1 billion) it will not output all digits like available serial calculations of Pi, but display only the nine digits after the billionth hexadecimal digit. This limitation is due to the nature of parallel implementations and the used Pi formula.

The calculation is split up into smaller packages called batches which themselves consist of millions of calculations of the BPP series term on each possible compute core of all selected devices. Afterwards the millions of intermediary results will be accumulated inside the device’s memory to get a single result per batch. This technique is very common in parallel applications and called memory reduction. Use the Batch Size and Reduction Size in the settings dialog to fine tune the calculations and reductions for your selected devices.

The benchmark relies heavily on 64 bit integer performance. Additionaly each series term calculation of the BPP formula needs a division using double precision. The result is stored and finally accumulated as doubledouble, two doubles combined for even higher precision. Starting with 1B digits each kernel has to make use of custom 128 bit integer routines where necessary.

A few examples of GPUPI runs with 1B:

Archived Versions

  • GPUPI 3.2 | GPUPI 3.2 — Legacy Version (supports XP, 32 bit, OpenCL 1.1 and GeForce 200 to 500 series)
  • GPUPI 3.1.1 | GPUPI 3.1.1 — Legacy Version (supports XP, 32 bit, OpenCL 1.1 and GeForce 200 to 500 series)
  • GPUPI 3.0.1
  • GPUPI 2.3.4 (1.22 MB, CRC-32: 88BE77A2)
  • GPUPI 2.3.4 — Legacy Version (only use for Windows XP/GeForce 200 series!, 626 KB, CRC-32: 5717B079)
  • GPUPI 2.2 (1.08 MB, CRC-32: 054753D5)
  • GPUPI 2.2 — Legacy Version (Windows XP, GeForce 200 series, 630 KB, CRC-32: 0D6E44A3)
  • GPUPI 2.1.2 (1.06 MB, CRC-32: CB9069F2)
  • GPUPI 2.1.2 — Legacy Version (Windows XP, GeForce 200 series, 590 KB, CRC-32: 1497D087)
  • GPUPI 2.0 (1.4 MB)

FAQ

What’s the minimum requirements to run the benchmark?

GPUPI supports not only GPUs, but also CPU calculations. It needs at least OpenCL 1.x with double precision support. Target platform for the benchmark is Windows Vista and later. To bench on Windows XP, download the legacy version.

To check if your graphics card supports double precision, have a look at these (incomplete) lists on Wikipedia: AMD | NVIDIA

Which drivers do I need for CUDA/OpenCL?

  • NVIDIA GPUs: GeForce Driver
  • AMD GPUs: Graphics Card Driver
  • Intel GPUs: Graphics Card Driver
  • AMD CPUs with OpenCL 2.0 support: AMD APP SDK 3.0 (just install the driver, uncheck the rest)
  • AMD CPUs with OpenCL 1.2 support: AMD APP SDK 2.9.1 (often faster than OpenCL 2.0, just install the driver, uncheck the rest)
  • Intel CPUs: Intel CPU Runtime for OpenCL (quick registration necessary)

GPUPI says that MSVCP110.dll, MSVCP120.dll or MSVCP140.dll is missing?

GPUPI 3.x: The benchmark executable is compiled with Visual Studio 2015 and therefor needs the Visual C++ Redistributable Packages for Visual Studio 2015. You will only need to install the 64 bit version: vcredist_64.exe

GPUPI 3.x — Legacy Version: The «Legacy Version» of GPUPI 3.x is for older platforms and includes support for 32 bit versions of Windows as well as Windows XP. Therefor it was needed to compile it with Visual Studio 2013, so you’ll need to install the following Visual C++ Redistributable Packages for Visual Studio 2013. This is for 32 bit only so just install: vcredist_x86.exe

GPUPI 2.x: The benchmark executable is compiled with Visual Studio 2013 and therefor needs the Visual C++ Redistributable Packages for Visual Studio 2013. Download vcredist_86.exe to run GPUPI.exe (32 bit) or vcredist_64.exe to run GPUPI_x64.exe (64 bit).

GPUPI 2.x — Legacy Version: The «Legacy Version» up to GPUPI 2.2 has been built with Visual Studio 2012. So you will have to install the Visual C++ Redistributable Packages for Visual Studio 2012 instead.

Why do I need the High Precision Event Timer (HPET) to get comparable results that can be uploaded to HWBOT?

Depending on your system configuration the default timers might not be reliable enough to measure comparable scores for world records. In that case GPUPI will need you to enable HPET (High Precision Event Timer). You can check the status of your system timer configuration by opening up a command prompt with administration rights:

bcdedit /set useplatformclock yes

A reboot will be necessary to apply any changes.

What is the Batch Size?

The Batch Size is the number of partial calculations, that will be used to calculate the result. So 1M means one million of simultaneously invoked kernel calls to the OpenCL device before the partial sums will be reduced to only one, which will be again be used for the final equation to calculate the digits of pi. So the Batch Size is important for two things: core utilization and memory allocation.

Читайте также:  Полетела видеокарта признаки на ноуте

Most important especially for GPUs is the utilization of cores on the device. Some GPUs handle a higher number of kernel calls at once more efficiently than others. It’s a fine line and you should test multiple batch sizes on a new graphics card. But choose wisely as a bigger batch size also affects the memory usage, that will consequently have to be reduced. Therefor the calculation and reduction time is shown separately after the benchmark run to see what’s the impact of your current batch size setting.

By the way, the batches that are shown while running the benchmark are not equal to the batches you can set the size for. Those are pseudo batches that contain multiple smaller batches to let you know the progress of the calculation.

Is it possible to run GPUPI on Windows XP?

Yes, use the «Legacy Version» of GPUPI!

Why is my NVIDIA graphics card not using its highest GPU and/or memory frequency during the benchmark run?

There is a known bug in CUDA that does not apply the correct P State during a workload. Use the NVIDIA Inspector and set the option «CUDA — Force P2 State» to Off in the driver’s Base Profile. See this Screenshot to find this option. (Thanks to mllrkllr88 for providing the fix)

How can I reset the configuration?

After the first benchmark run the application will create a configuration file in the current working directory named GPUPI.cfg. Delete this file to load the default configuration. Be sure to have the benchmark closed while doing this.

Can GPUPI handle multiple graphics cards in SLI/Crossfire?

Yes, it can! Use GPUPI 2.0 or higher to make use of multiple graphics cards or even multiple CPUs in your system.

What’s done to verify the results?

The hexadecimal output was verified by the result tables of Fabrice Bellard. For 32B I had to run y-Cruncher to be sure. These verified digits are stored in a different form in the executable and are used to verify the result after each run.

I get the error message «Display driver has stopped responding and has recovered», but I didn’t overclock anything!

All graphics card drivers have a built-in watchdog that protects the hardware from infinte loops. This happens after about five seconds and usually causes a little blackscreen, but nothing to worry about. If you did not overclock, this indicates that your GPU can not handle a single batch of the calculation before the watchdog believes something is wrong. Just use a smaller Batch Size in the setting dialog before each run and it should be fine. This mostly happens to cheaper graphics cards.

I get «Invalid result», but I didn’t overclock anything!

These strange issues happen with old driver versions. There seem to be some precision bugs with floating point operations, that alter the final result. Sometimes it’s just a few digits, sometimes it’s more. Be sure to keep your driver up to date before running the benchmark, to avoid problems like that.

I get the error «Error: Could not create context!» and a popup stating «Could not start worker thread» with my Intel Core2Duo or Core2Quad!

This is a driver bug with the Intel OpenCL drivers, that do no longer work with these old CPUs. Install the AMD OpenCL drivers that are included with the AMD Catalyst software instead, they will work. You will have to plug in an AMD card to be able to install them though. If you don’t have one at your disposal, you can try to install the APP SDK 2.9, but the drivers won’t be as new (and maybe as fast) as the latest Catalyst.

GPUPI crashes when launching the application.

  • Using Windows 7? Try installing SP1, if you haven’t yet.
  • Reinstall Visual C++ Redistributable Packages, it may be faulty. For download links see the FAQ entry with missing MSVCP110.dll, MSVCP120.dll and MSVCP140.dll files.

HWiNFO can not be initialized before the benchmark run. What can I do?

  • If HWiNFO is already running in the background, please close it.
  • If you have an Antivirus software or Tuning tool running (AVG, Kaspersky, . ), disable them temporarily. Windows Defender should not be a problem though.
  • If you are on Windows 7, install the KB3033929 update.

I can not install the latest or an older Intel OpenCL driver. The error message says that a «higher version of the OpenCL runtime for Intel Core and Xeon Processors is already installed».

Open the registry editor and delete the following two registry keys:

  • HKEY_LOCAL_MACHINE\SOFTWARE\Intel\OpenCL\cpu_version
  • HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Intel\OpenCL\cpu_version

Run the installer again, it should work now.

I have installed the latest Intel OpenCL 2.0 drivers but only OpenCL 1.2 shows up!

Your system will most likely have the old version of the Intel OpenCL driver linked. This can be easily fixed by deleting all old Intel OpenCL DLLs in the following registry key: HKEY_LOCAL_MACHINE\SOFTWARE\Khronos\OpenCL\Vendors\
Search for «IntelOpenCL64.dll» or «Intelocl64.dll» an delete the value. Change the key name to «C:\Program Files (x86)\Common Files\Intel\OpenCL\bin\x64\Intelocl64.dll» (or where ever your Intelocl64.dll file is).

Why is the benchmark on my system so much slower than on other comparable systems?

  • Your memory may be overclocked too high and is therefor unstable and causing efficiency problems. Try stock clocks and have a look at the reduction time in the statistics shown below the result.
  • This might be related to drivers problems as well. Uninstall your current OpenCL or CUDA drivers, that you are using. Reinstall a different driver version and try again.
Источник