草庐IT

cuda-gdb

全部标签

c++ - gdb 中的算术异常,但我没有除以零?

我的C++程序中出现浮点异常(核心已转储)错误,gdb显示问题出在执行模除法的行上:ProgramreceivedsignalSIGFPE,Arithmeticexception.[SwitchingtoThread0x7ffff6804700(LWP13931)]0x00000000004023e8inCompExp::eval(this=0x7fffec000e40,currVal=0)atexp.cpp:5555return(r==0)?0:l%r;该行防止被零除,我的回溯显示如下:#00x00000000004023e8inCompExp::eval(this=0x7fffec

c++ - 当运行的线程多于内核时,CUDA 性能会提高

为什么每个block运行超过32个线程时性能会提高?我的显卡有480个CUDA内核(15MS*32SP)。 最佳答案 每个SM有1-4个warp调度器(Tesla=1,Fermi=2,Kepler=4)。每个warp调度程序负责执行分配给SM的warp的子集。每个warp调度程序维护一个符合条件的warp列表。如果warp可以在下一个周期发出指令,则它是合格的。如果warp在数据依赖性上停止,等待获取和指令,或者下一条指令的执行单元正忙,则warp不合格。在每个周期中,每个warp调度程序将从符合条件的warp列表中选择一个warp

c++ - 您使用什么库在 CUDA 上进行矩阵计算?

按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭10年前。您使用什么库在CUDA上进行矩阵计算?或者有没有?好像每个人都是自己写的。对于通常的处理器,我使用Eigen.GPU呢?

c++ - 如何使用 CUDA 生成随机排列

我可以使用哪些并行算法从给定的集合中生成随机排列?特别是适合CUDA的论文的建议或链接会很有帮助。这的顺序版本将是Fisher-Yates洗牌。例子:设S={1,2,...,7}为源索引集。目标是并行生成n个随机排列。n个排列中的每一个都恰好包含每个源索引一次,例如{7,6,...,1}。 最佳答案 Fisher-Yatesshuffle可以并行化。例如,4个并发worker只需要3次迭代来洗牌8个元素的vector。在第一次迭代中,它们交换01、23、45、67;第二次迭代02、13、45、67;以及最后一次迭代04、15、26、

c++ - 使用 gdb 调试基于参数的 C 程序

我有一个C++程序,我通过传递字符串来运行它。g++-oamain.cpp-lpthread并用./a"Goodnice"执行它但是我如何使用gdb调试它呢?main.cpp从包含在其中的其他文件调用函数。gdb./a"Goodnice"将“--”作为文件并表示没有这样的文件!我要逐行调试! 最佳答案 使用gdb的--args选项:gdb--args./a"Goodnice"还要将-g选项添加到您的编译器调用中,否则gdb将无法将您的可执行文件与您的源代码连接起来:g++-g-oamain.cpp-lpthread

c++ - GDB bt 错误 : "Not enough registers or memory available to unwind further"

来自核心文件的回溯由于以下原因削减了有用的信息:Backtracestopped:Notenoughregistersormemoryavailabletounwindfurther.为什么会出现此消息,我可以做些什么吗? 最佳答案 尝试使用-O0标记构建例如。CFLAGS="-g-O0" 关于c++-GDBbt错误:"Notenoughregistersormemoryavailabletounwindfurther",我们在StackOverflow上找到一个类似的问题:

c++ - GDB 报告 C++ 对象的构造函数中的参数地址错误

当GDB将字符串作为参数传递给构造函数时,我遇到了一个奇怪的行为。代码工作正常,但是当我在调试器中单步执行时,GDB似乎认为我的参数位于不同的地址。有谁知道这里发生了什么?这是我可以创建的最简单的程序来演示该问题:--(jwcacces@neptune)--------------------------------------------(/home/jwcacces)----$nlgdb_weird.cpp1#include2#include34classC5{6public:7C(std::stringstr)8{9std::string*str_ptr=&str;10std::

c++ - 如何避免 GDB 中符号的命名空间前缀?

我正在使用C++库。该库使用多个命名空间。调试时,我必须在每个符号名称前加上命名空间前缀。它会导致大量额外的工作和打字。C++有usingnamespaceX的概念,可以更轻松地使用符号(大量的手动操作)。我在GDB中寻找类似的东西。例如,我想要bFoo::bar而不是bMyLibNamespace::Foo::bar。GDB似乎没有与命名空间相关的帮助,但我可能做错了什么:(gdb)helpnamespaceUndefinedcommand:"namespace".Try"help".(gdb)namespacehelpUndefinedcommand:"namespace".Try

c++ - CUDA素数生成

随着数据大小增加超过260k,我的CUDA程序停止工作(它不打印任何内容)。有人能告诉我为什么会这样吗?这是我的第一个CUDA程序。如果我想要更大的素数,如何在CUDA上使用大于longlongint的数据类型?显卡为GT425M。#include#include#include#defineSIZE250000#defineBLOCK_NUM96#defineTHREAD_NUM1024intdata[SIZE];__global__staticvoidsieve(int*num,clock_t*time){constinttid=threadIdx.x;constintbid=bl

c++ - float1 与 CUDA 中的 float

我注意到cuda中有一个float1结构类型。与简单的float相比,是否有任何性能优势,例如,在使用float数组与float1数组的情况下?struct__device_builtin__float1{floatx;};在float4中有一个性能优势,这取决于场合,因为对齐是4x4bytes=16bytes。是否仅用于带有float1参数的__device__函数?提前致谢。 最佳答案 关注@talonmies对帖子的评论CUDAThrustreductionwithdouble2arrays,我比较了使用CUDAThrust计