【讨论】大家对GPU编程怎么看,JAVA在这方面似乎力有不逮?
在网上搜了些资料,似乎GPU编程被C语言霸占着,还有什么CUDA啥的。
希望对GPU编程有研究的同学不吝赐教:
1. GPU编程应用在哪些领域?
2. 说是CUDA平台将支持C++,FORTRAN,JAVA未来是否会像这方面扩展。
要是知道GPU其它方面的内容,也可以给大家聊聊哈~
(本讨论不涉及语言之争)
------解决方案--------------------比较流行的是open cl吧,没有这方面的经验,帮顶。
------解决方案--------------------GPU这种跟硬件关联这么紧密地,JAVA就算能支持,目前性能效率也肯定远远比不上C.
------解决方案--------------------首页上还有一篇对GPU编程的讨论,不过知之甚少。
参与下,看看各位的回复。
http://bbs.csdn.net/topics/390727683
------解决方案--------------------java不行的
------解决方案--------------------open cl好像跟open gl、dx差不多吧,但是GPU编程应该跟这个不是在同一层面的,在这些的下一层吧!
------解决方案--------------------
不太清楚啊,我一直都是用C在写的。JAVA不是封装过部分openGL吗?
------解决方案--------------------实际上GPU编程必然是趋势,因为这个问题的关键其实是并行计算的领域。
所以Java必然需要GPU的开发库,只是时间问题罢了
------解决方案--------------------不知道版主什么情况,GPU没想的那么神秘,只是入门的话很简单。语法很基础,也没什么高级的技术什么的。
就目前来看在并行运算CPU在短时间赶不上GPU,其实2个侧重点不同,GPU侧重通用计算。
GPU程序可以同时处理多个数据,数据内容不同,但是对数据处理的方式相同。
在处理图像(也可以是任意数据)的时候,CPU只能一个点一个点的处理,
GPU是同时处理很多个点(具体多少由GPU硬件决定)。这样在图像处理速度上远快与CPU。
这是一段GPU程序(只是像素着色器部分),简单的把RGB色变成亮度信息:
float4 PS(float2 tex : TEXCOORD0) : COLOR
{
float4 color = tex2D( Tex0S, tex );
float h = 0.3f * color.x + 0.59f * color.y + 0.11f * color.z;
return float4( h, h, h, 0.0f );
}
程序编译在DX上用D3DXCreateEffectFromFile来编译。
建议lz可以下个rendermonkey来学习。
------解决方案--------------------
哥们你说反了GPU和CPU。
------解决方案--------------------CUDA只支持N卡,不会有太大前途。
OpenCL学和用起来都还不太那么象回事儿,非常不喜欢。
微软的C++AMP新推不久,N卡A卡都支持。好学好用上手快。缺点是不能跨平台,性能也没实际测试过。不用LINUX的可以试试。
------解决方案--------------------看过一篇文章介绍过cpu与gpu, gpu内部大部分是计算核心,控制核心很少,cpu则两者都要兼顾,
所以gpu的功能比较单一,但是运算处理能力比cpu强很多.
java毕竟也是有个虚拟机jvm, 运行效率不如c和c++. 如果用java来设计gpu的程序,估计速度方面
会有点麻烦吧.
------解决方案--------------------要是用GPU来加速遥感数据方面的话,这个过程是自己编码还是直接用别人弄好的开源库优化下就好了呢?
我要是想通过这块来练习C++可行吗?
懂行的知道这块大的互联网公司需要吗?