我有一个在Linux上运行的C++应用程序,我正在优化它.如何确定代码的哪些区域运行缓慢?
嘿,我的朋友和我正在努力打败彼此的运行时间,以产生1到100万之间的" 自我号码 ".我用c ++编写了我的文章,我仍在努力减少宝贵的时间.
这是我到目前为止所拥有的,
#include <iostream>
using namespace std;
bool v[1000000];
int main(void) {
long non_self = 0;
for(long i = 1; i < 1000000; ++i) {
if(!(v[i])) std::cout << i << '\n';
non_self = i + (i%10) + (i/10)%10 + (i/100)%10 + (i/1000)%10 + (i/10000)%10 +(i/100000)%10;
v[non_self] = 1;
}
std::cout << "1000000" << '\n';
return 0;
}
Run Code Online (Sandbox Code Playgroud)
代码工作正常,我只想优化它.有小费吗?谢谢.
我自己编写了CUDA内核.与CPU代码相比,我的内核代码比CPU快10倍.
但我对我的实验有疑问.
我的程序是否完全使用所有GPU内核,适当的共享内存使用,足够的寄存器数量,足够的占用率进行优化?
如何评估内核代码的性能?
如何从理论上计算出CUDA的最大吞吐量?
我是对的比较CPU的GFLOPS和GPU的GFLOPS和GFLOPS率之间的透明理论性能吗?
提前致谢.