我正在尝试将GPU与CPU性能进行比较.对于NVIDIA GPU,我一直在使用这些cudaEvent_t类型来获得非常精确的时序.
对于CPU我一直在使用以下代码:
// Timers
clock_t start, stop;
float elapsedTime = 0;
// Capture the start time
start = clock();
// Do something here
.......
// Capture the stop time
stop = clock();
// Retrieve time elapsed in milliseconds
elapsedTime = (float)(stop - start) / (float)CLOCKS_PER_SEC * 1000.0f;
Run Code Online (Sandbox Code Playgroud)
显然,如果你在几秒钟内计算,那段代码就是好的.此外,结果有时候出来很奇怪.
有谁知道在Linux中创建高分辨率计时器的某种方法?
我想知道gcc上的-static选项是什么.编译某个应用程序时我需要这个选项,但是当我这样做时,我收到以下错误:
gcc -static -O3 -o prog prog.c
/usr/bin/ld: cannot find -lc
collect2: ld returned 1 exit status
Run Code Online (Sandbox Code Playgroud)
什么需要安装?
GCC版本:
[user@localhost dir]$ gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-redhat-linux/4.6.1/lto-wrapper
Target: x86_64-redhat-linux
Configured with: ../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-bootstrap --enable-shared --enable-threads=posix --enable-checking=release --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-linker-build-id --enable-languages=c,c++,objc,obj-c++,java,fortran,ada,go,lto --enable-plugin --enable-java-awt=gtk --disable-dssi --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-1.5.0.0/jre --enable-libgcj-multifile --enable-java-maintainer-mode --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --disable-libjava-multilib --with-ppl --with-cloog --with-tune=generic --with-arch_32=i686 --build=x86_64-redhat-linux
Thread model: posix
gcc version 4.6.1 20110908 (Red Hat 4.6.1-9) (GCC)
Run Code Online (Sandbox Code Playgroud) 我正在看一个定义了大量常量数组的应用程序.让我感到困惑的是在宏观中使用彼此相邻的两个磅标志.例如:
#define r0(p,q,r,s) 0x##p##q##r##s
Run Code Online (Sandbox Code Playgroud)
那两个磅标志是什么意思?
我刚刚开始进行CUDA编程,而且它的功能非常好,我的GPU已经被认可了.我在这里使用这个非常有用的指南在Visual Studio中部分设置了Intellisense:
http://www.ademiller.com/blogs/tech/2010/10/visual-studio-2010-adding-intellisense-support-for-cuda-c/
和这里:
http://www.ademiller.com/blogs/tech/2011/05/visual-studio-2010-and-cuda-easier-with-rc2/
但是,Intellisense仍然没有像这样接受内核调用:
// KernelCall.cu
#include <iostream>
#include "cuda.h"
#include "cuda_runtime.h"
#include "device_launch_parameters.h"
__global__ void kernel(void){}
int main()
{
kernel<<<1,1>>>();
system("pause");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
行内核<<< 1,1 >>>()用红色下划线,特别是第一个左边的一个箭头,错误读数为"Error:expected and expression".但是,如果我将鼠标悬停在该函数上,则会正确显示其返回类型和参数.它仍然编译得很好,我只是想知道如何摆脱这个小烦恼.
我一直在研究如何减少因CPU和GPU来回传输数据而导致的延迟.当我第一次开始使用CUDA时,我注意到CPU和GPU之间的数据传输确实需要几秒钟,但我并不在乎,因为这对我正在编写的小程序来说并不是一个真正的问题.实际上,对于绝大多数使用GPU,包括视频游戏的程序来说,延迟可能不是一个大问题,因为它们仍然比在CPU上运行的速度快得多.
然而,我是HPC爱好者的一员,当我看到天河一号理论峰值FLOPS与实际LINPACK测量性能之间的巨大差异时,我开始关注我的研究方向.这引起了我对我是否采取正确的职业道路的担忧.
通过使用cudaHostAlloc()函数来使用固定内存(页面锁定)内存是一种减少延迟的方法(非常有效),但还有其他任何我不知道的技术吗?要说清楚,我说的是优化代码,而不是硬件本身(那是NVIDIA和AMD的工作).
作为一个侧面问题,我知道戴尔和惠普销售的是特斯拉服务器.我很好奇GPU如何利用数据库应用程序,您需要从硬盘驱动器(HDD或SSD)中不断读取,这只是CPU可以执行的操作,
目前已经CUDA识别键CUDA C/C++函数,例如cudaMalloc,cudaFree,cudaEventCreate等.
它还识别某些类型,如dim3和cudaEvent_t.
但是,它不识别其他功能和类型,例如纹理模板,__syncthreads功能或atomicCAS功能.
一切都编译得很好,但我已经厌倦了在整个地方看到红色下划线,我想看到当你输入任何可识别的功能时显示的示例参数.
如何让VS获得这些功能?
intellisense cuda keyword visual-studio-2010 code-completion
在128位数字变为现实之前,长64位并保留很长时间是不是更有意义?
我有一个带有N列的QTableWidget,当设置列数时,它们会自动填充整个QTableWidget.当我尝试将列数动态更改为N/2列时,每列的大小不会更改.这导致QTableWidget的右半部分只是空格.
相反,如果我将列数重置为2*N,则列宽适当调整自己并填充QTableWidget.
我想知道如何在没有QTableWidget任何空格的情况下重置列数和行数?
我以前有两个程序的候选版本,然后我卸载它们并安装了程序的生产版本.这包括CUDA工具包,Parallel Nsight和GPU计算SDK.当我转到Project-> Build Customizations并选择CUDA 4.0时,我无法再将.cu文件设置为CUDA C/C++文件,当我尝试重新加载项目时,我收到的错误如下:
The result "" of evaluating the value "$(CudaBuildTasksPath)" of the "AssemblyFile" attribute in element <UsingTask> is not valid. C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\BuildCustomizations\CUDA 4.0.targets
这是什么问题?
cuda ×4
c ×3
intellisense ×2
optimization ×2
32bit-64bit ×1
bit ×1
c++ ×1
directory ×1
file ×1
gcc ×1
keyword ×1
latency ×1
linux ×1
long-integer ×1
long-long ×1
memory ×1
nvidia ×1
operators ×1
options ×1
perl ×1
precision ×1
qt ×1
qtablewidget ×1
static ×1
timer ×1