2010-12-13 6 views
11

Я хотел бы начать с заявления, что я ничего не знаю о программировании OpenCL/GPU, но я - программист C# (general .Net), не опасаясь C++, и я хотел бы изучить программирование OpenCL/GPU. .. мой вопрос ... где я начинаю?!? что я должен скачать?!? есть ли способ программирования OpenCL/GPU на Visual Studio (на C#)!?! как ... привет мир вещь ... ТКС всеПрограммирование OpenCL и GPU Roadmap

+0

У вас есть карта ATI или nvidia? –

+0

У меня есть оба прямо сейчас ... в 1 шт. У меня есть ati, а в другом у меня есть nvidia ... – Leonardo

+0

.Net имеет XNA Framework, что делает игру Xbox. u должен исправить это. – Bonshington

ответ

9

Лучший сайт я нашел для четкого введения в программирование, как GPU отличается от программирования CPU этот сайт:

http://www.macresearch.org/opencl

Даже если эти ролики сделаны показывая карты в стиле NVIDIA, важные концепции:

  • много потоков работает точно такие же инструкции в карцер стадии (даже если какой-то код пишется если-либо еще конструктов), и

  • коалесцированного доступа к памяти

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

+3

Извините, я думаю, что этот вопрос в основном касается начала кодирования, а не проектирования. Серия MacResearch отлично подходит для того, чтобы начинать думать в графических терминах, но не очень информативна для кодирования. Он также довольно устарел. Однако я бы рекомендовал серию. –

7

http://developer.amd.com/zones/OpenCLZone/pages/default.aspx

Предполагая, что вы хотите сделать OpenCL, а не тот это CUDA имеет целую кучу интро видео-уроки. Аналогичный набор у NVidia - хотя у них больше материала на базе CUDA.

Если вы хотите программировать GPL, то получить пример приложения, который может вывести код opencl/cuda в графический процессор, является простой частью. Вы также должны изучить язык opencl/cuda, тогда вам нужно научиться думать об алгоритмах параллельно и как тестировать/измерять результаты.

Существует не «использовать GPU» нажимную кнопку, которая мгновенно делает ваш код 100x быстрее

+0

Я надеялся на более прямой ответ ... вроде ...«Идите к этому адресу и скачайте, что ... если у вас есть видеокарта ATI, идите туда ... если у вас есть Geforce, идите на этом сайте» вроде ... – Leonardo

+0

ok ... так где я начинаю? !? что мне нужно делать с моими программами, чтобы они использовали силу GPU?!? – Leonardo

+0

На заметку о желании: Haskell может на самом деле очень хорошо иметь эту кнопку. В некоторой степени это возможно со всеми языками, но с Haskell это чаще всего возможно. И намного легче развиваться. (Функциональное программирование определяет поведение более строго, поскольку оно определяет результаты, а не процедуры) – Lodewijk

4

Я бы сказал, чтобы проверить OpenTK и их привязки C#, чтобы получить скачок на OpenCL. Посмотрите на OpenCL's website, чтобы получить стандартные привязки C или C++.

Изучение OpenCL, есть различные ресурсы .. не тонна. Я нашел following this полезным.

1

Прошу прощения за опоздание на 7 лет. Но вот с открытым исходным кодом C библиотека # GPGPU писать свои собственные OpenCL ядра:

https://github.com/tugrul512bit/Cekirdekler/wiki/Beginning

и мира привет, как традиции:

ClNumberCruncher gpus= new ClNumberCruncher(
    ClPlatforms.all().devicesAmd().gpus(), @" 
     __constant char text[12] = {'h','e','l','l','o',' ','w','o','r','l','d',' '}; 
     __kernel void hello(__global char * arr) 
     { 
       printf(text); 
     } 
    "); 
gpus.performanceFeed = true; 
ClArray<byte> array = new ClArray<byte>(5,1); 
array.compute(gpus, 1, "hello", 5, 1); 
array.compute(gpus, 1, "hello", 5, 1); 
array.compute(gpus, 1, "hello", 5, 1); 

это выход:

hello world 
hello world 
hello world 
hello worldhello world 

Compute-ID: 1 ----- Load Distributions: [40.0%] - [60.0%] ----------------------------------------------------- 
Device 0(gddr): Oland        ||| time: 29.47ms, workitems: 2 
Device 1(gddr): gfx804        ||| time: 29.76ms, workitems: 3 
----------------------------------------------------------------------------------------------------------------- 

hello worldhello world 
hello world 
hello world 
hello world 

Compute-ID: 1 ----- Load Distributions: [40.0%] - [60.0%] ----------------------------------------------------- 
Device 0(gddr): Oland        ||| time: 1.64ms, workitems: 2 
Device 1(gddr): gfx804        ||| time: 1.33ms, workitems: 3 
----------------------------------------------------------------------------------------------------------------- 

hello worldhello world 
hello world 
hello world 
hello world 

Compute-ID: 1 ----- Load Distributions: [40.0%] - [60.0%] ----------------------------------------------------- 
Device 0(gddr): Oland        ||| time: 1.08ms, workitems: 2 
Device 1(gddr): gfx804        ||| time: .87ms, workitems: 3 
----------------------------------------------------------------------------------------------------------------- 

он может сделать кучу вещей от конвейерной обработки до планирования пула задач.

+1

hahahahah tks в любом случае! – Leonardo

Смежные вопросы