v*******e 发帖数: 11604 | 1 我要写个计算程序,主要特点是大的运算量和大的矩阵,迭代。矩阵多大呢,就是内存
能装下的,如果装不下我可以选小一号的矩阵,结果的精确度会差一点。运算简单基本
是乘加。但是运算量大,所以最好能够把电脑的core都用上(比如双CPU共16核这样的
)。逻辑简单,不需要考虑内存溢出回收问题(因为可以用静态矩阵)。现在我想问,
如果我在64bit linux下写程序,选择什么语言最好?
我想选C,但是不知道C运用多核是不是方便。矩阵大,所以大概每个核各算一块矩阵,
相互干扰小。现在的C下还有单精度数吗?如果有,则可以省点内存。请赐教选什么语
言最好,谢谢! |
b*******s 发帖数: 5216 | |
v*******e 发帖数: 11604 | 3
好,多谢,我去wiki先恶补一下看看。
【在 b*******s 的大作中提到】 : openmp + c/c++
|
v*******e 发帖数: 11604 | 4 回来update一下吧。网上恶补了一下,一般普通人搞这个的都在玩GPU运算,用CUDA。
openmp是用CPU算的,在cache装不下的时候比GPU慢许多。 |
N******K 发帖数: 10202 | 5 java
【在 v*******e 的大作中提到】 : 我要写个计算程序,主要特点是大的运算量和大的矩阵,迭代。矩阵多大呢,就是内存 : 能装下的,如果装不下我可以选小一号的矩阵,结果的精确度会差一点。运算简单基本 : 是乘加。但是运算量大,所以最好能够把电脑的core都用上(比如双CPU共16核这样的 : )。逻辑简单,不需要考虑内存溢出回收问题(因为可以用静态矩阵)。现在我想问, : 如果我在64bit linux下写程序,选择什么语言最好? : 我想选C,但是不知道C运用多核是不是方便。矩阵大,所以大概每个核各算一块矩阵, : 相互干扰小。现在的C下还有单精度数吗?如果有,则可以省点内存。请赐教选什么语 : 言最好,谢谢!
|
h**********c 发帖数: 4120 | 6 you can try port lapack linpack to cuda. |
c********1 发帖数: 5269 | 7 check it out---
Single Instruction Multiple Data (SIMD)
【在 v*******e 的大作中提到】 : 回来update一下吧。网上恶补了一下,一般普通人搞这个的都在玩GPU运算,用CUDA。 : openmp是用CPU算的,在cache装不下的时候比GPU慢许多。
|
z*******6 发帖数: 133 | 8 https://developer.nvidia.com/cuBLAS
The NVIDIA CUDA Basic Linear Algebra Subroutines (cuBLAS) library |
a*****e 发帖数: 1700 | 9 就是用 BLAS 库,和语言没关系,Python 一样可以调用 BLAS
BLAS 库好多种实现,CPU 选 MKL,GPU 根据你用的是 CUDA 还是 OpenCL 选不同的库
。基本上多核/线程/SIMD/cache/优化都已经做到极致了,你自己写肯定不如人家写好
的。
如果一定要再进一步优化,CPU+GPU,或者做 fusion,搞起来可以发 HPC 论文了。如
非专业搞这行,还是老老实实一个一个 BLAS call 调用下来就好了。
【在 v*******e 的大作中提到】 : 我要写个计算程序,主要特点是大的运算量和大的矩阵,迭代。矩阵多大呢,就是内存 : 能装下的,如果装不下我可以选小一号的矩阵,结果的精确度会差一点。运算简单基本 : 是乘加。但是运算量大,所以最好能够把电脑的core都用上(比如双CPU共16核这样的 : )。逻辑简单,不需要考虑内存溢出回收问题(因为可以用静态矩阵)。现在我想问, : 如果我在64bit linux下写程序,选择什么语言最好? : 我想选C,但是不知道C运用多核是不是方便。矩阵大,所以大概每个核各算一块矩阵, : 相互干扰小。现在的C下还有单精度数吗?如果有,则可以省点内存。请赐教选什么语 : 言最好,谢谢!
|