GPU并行和CPU并行编程上有什么不同?

m
microsat
楼主 (北美华人网)
for(int i=0; i<1e5; i++) { printf("%d", sqrt(i)); }
最这样一个程序,如果用30个cores的CPU来运算和用30个cores的GPU来算, 编程上有啥不同呢?
谢谢!
GPU和CPU之间的通讯的速度是怎么保证的?
x
xcosmos
帮你顶一下 顺便猜个cpu
g
gokgs
瞎猜的,我想 GPU 应该并发性能更高但指令集简单。
a
a2maker
我抛砖引玉一下。
OpenMP is a popular library for writing code that runs on multi-core CPU. Example: https://curc.readthedocs.io/en/latest/programming/OpenMP-C.html
CUDA is for writing code that runs on GPU. C Example: https://developer.nvidia.com/blog/easy-introduction-cuda-c-and-c/ C++ Example: https://developer.nvidia.com/blog/even-easier-introduction-cuda/

w
wdong
对比两个体育项目吧。接力跑适合用CPU,每次只能有一个人出力,别人都只能干等着。划船适合上GPU,号令之下所有人动作一致才能快。楼主的程序瓶颈在显示器。
m
microsat
我抛砖引玉一下。
OpenMP is a popular library for writing code that runs on multi-core CPU. Example: https://curc.readthedocs.io/en/latest/programming/OpenMP-C.html
CUDA is for writing code that runs on GPU. C Example: https://developer.nvidia.com/blog/easy-introduction-cuda-c-and-c/ C++ Example: https://developer.nvidia.com/blog/even-easier-introduction-cuda/


a2maker 发表于 2023-06-14 17:30

多谢!
总算弄明白这个问题了。
一直不知道。以为只要并行化原程序,然后提交给超级计算机,就可以了。
这么说来,如果准备在CPU和GPU同时运行这个程序,那么就要改成两个版本。
要是,有谁能发明一个只能工具,自动能把cpu的程序改成gpu的程序,那就太方便了。
m
microsat
对比两个体育项目吧。接力跑适合用CPU,每次只能有一个人出力,别人都只能干等着。划船适合上GPU,号令之下所有人动作一致才能快。楼主的程序瓶颈在显示器。
wdong 发表于 2023-06-14 17:40

为啥举这个例子。
CPU的多cores难道不能并行吗?
另外,假如没有显示器呢?程序不需要显示器。只需要硬盘存储结果就可以了。
w
wdong
为啥举这个例子。
CPU的多cores难道不能并行吗?
另外,假如没有显示器呢?程序不需要显示器。只需要硬盘存储结果就可以了。
microsat 发表于 2023-06-14 17:46

CPU并行和GPU并行有很大的区别。CPU的并行其实是一个芯片里封装了几个独立的CPU core,每个core可以各干各的。GPU的并行,架构上叫single instruction multiple data, SIMD,处理电路很多但是大家干的事情必须完全一致,只是操作的数据不同。
a
a2maker
回复 6楼microsat的帖子
>> 要是,有谁能发明一个只能工具,自动能把cpu的程序改成gpu的程序,那就太方便了。
这个应该算吧: https://www.nvidia.com/en-us/deep-learning-ai/solutions/data-science/apache-spark-3/
Spark code stays the same. 程序员不用管code是在CPU还是GPU上跑。
y
yayapig
多谢!
总算弄明白这个问题了。
一直不知道。以为只要并行化原程序,然后提交给超级计算机,就可以了。
这么说来,如果准备在CPU和GPU同时运行这个程序,那么就要改成两个版本。
要是,有谁能发明一个只能工具,自动能把cpu的程序改成gpu的程序,那就太方便了。
microsat 发表于 2023-06-14 17:40

你应该把自己的程序设计好, 哪部分在CPU, 哪部份拿到GPU上去算. 他们的优势是不一样的. GPU 的 core 比 CPU 的 core 多多了. 楼主自去去看一看就知道了.
m
microsat
回复 6楼microsat的帖子
>> 要是,有谁能发明一个只能工具,自动能把cpu的程序改成gpu的程序,那就太方便了。
这个应该算吧: https://www.nvidia.com/en-us/deep-learning-ai/solutions/data-science/apache-spark-3/
Spark code stays the same. 程序员不用管code是在CPU还是GPU上跑。
a2maker 发表于 2023-06-14 18:11

多谢!收藏了。