Ваш процессор может быть четырехъядерным, но знаете ли вы, что некоторые графические карты сегодня имеют более 200 ядер? Мы уже видели, какие графические процессоры в графических картах сегодня могут делать, когда речь заходит о графике. Теперь их можно использовать и для неграфических задач, и, на мой взгляд, результаты - не что иное, как удивительные. Алгоритм, который хорошо поддается parallelism, может быть намного быстрее на GPU, чем когда-либо на CPU.
Существует несколько технологий, которые делают все возможное:
1.) CUDA от NVidia. Это, кажется, самый известный и хорошо документированный. К сожалению, он будет работать только на видеокартах NVidia. Я загрузил SDK, опробовал некоторые образцы, и там были некоторые потрясающие вещи, которые делались в CUDA. Но тот факт, что он ограничивается картами NVidia, заставляет меня сомневаться в его будущем.
2.) Stream от ATI. ATI, эквивалентный CUDA. Как и следовало ожидать, он будет работать только на картах ATI.
3.) OpenCL. Группа Khronos собрала этот стандарт, но все еще находится в зачаточном состоянии этапы. Мне нравится идея OpenCL. Надеемся, что он должен быть поддержан большинством производителей видеокарты и должен значительно упростить разработку кросс-видеокарты.
Но какие другие технологии для неграфического программирования графического процессора приходят и что наиболее перспективно? И видите ли вы, или хотели бы, чтобы эти технологии были встроены в некоторые основные разработки, такие как .NET, чтобы сделать это намного проще?