我正在编写一个执行大量BLAS gemv操作的函数.
我希望能够在GPU上做到这一点,我尝试过使用cuBlas.
我的问题是我的矩阵和向量相当小,100x100矩阵和100向量.与CPU相比,CuBlas需要更长的时间,我知道为什么,cpu上的快速缓存和执行GPU调用的大量开销.
因此,我试图找出一种智能的方法来测量将呼叫通信到GPU所需的时间.
这是CUDA设置调用并将其发送到图形处理器所需的时间 - 不计算实际进行矩阵向量乘法所需的时间.
我该怎么做呢?
我使用fftw库(fftw3.a,fftw3.lib)在Linux和Windows中编写了两个相同的程序,并计算fftwf_execute(m_wfpFFTplan)语句的持续时间(16-fft).
10000次运行:
我很困惑为什么在Windows上这比在Linux上快9倍.
处理器:Intel(R)Core(TM)i7 CPU 870 @ 2.93GHz
每个操作系统(Windows XP 32位和Linux OpenSUSE 11.4 32位)都安装在同一台计算机上.
我从互联网上下载了fftw.lib(适用于Windows)并且不知道配置.一旦我使用此配置构建FFTW:
/configure --enable-float --enable-threads --with-combined-threads --disable-fortran --with-slow-timer --enable-sse --enable-sse2 --enable-avx
Run Code Online (Sandbox Code Playgroud)
在Linux中,它产生的lib比默认配置(0.4 ms)快四倍.