运行我的程序时,英伟达板卡Jetson TX2比Jetson Tx1速度更慢可能是什么原因??求解答

  • 4 replies
  • 67135 views
两个版本程序:1.从文件中读出数据,CPU、GPU处理处理,输出结果;
         2.使用一线程读取USB接口的数据(使用linux的cyusb库),CPU、GPU处理处理,输出结果;
现在出现的问题是:1.第二种方式程序运行速度变慢(通过gettimeofday和nvprof看过)
             2.Jetson Tx2运行速度比Jetson Tx1要慢一些。
这个程序在PC上验证过没有问题;cpu利用率也还好,60%左右;目前手边有四块板卡,应该不是板卡有问题导致的。
那可能有什么原因呢?求解答。

*

sisiy

  • *****
  • 246
    • 查看个人资料
您可能没有把TX2设置成火力全开模式。TX2默认模式下出于省电的原因,性能很低的,

具体如何设置,你参考此贴:https://www.jetsonhacks.com/2017/03/25/nvpmodel-nvidia-jetson-tx2-development-kit/

您可能没有把TX2设置成火力全开模式。TX2默认模式下出于省电的原因,性能很低的,

具体如何设置,你参考此贴:https://www.jetsonhacks.com/2017/03/25/nvpmodel-nvidia-jetson-tx2-development-kit/

我已经设置过TX2的工作模式了。
问题里我说的不太清楚,实际情况是第一个版本的程序TX2运行速度挺快的,但是第二个版本TX2的运行速度就变慢了。
毕竟做这个项目,需要实时从USB口读取数据,并且希望处理速度越快越好,所以有此一问。
补充一下我的情况是,从文件中读取数据是读数据-》处理数据-》读数据,是一个没有间断的循环。而从USB接口读取数据,是线程中cyusb_bulk_transfer(timeout=1s),读取的数据放在缓冲区,主程序从缓冲区取出数据处理数据。如果主程序处理的慢,数据会堆积;如果主程序处理的快,程序会等待数据读取,暂不运行。

我已经设置过TX2的工作模式了。
问题里我说的不太清楚,实际情况是第一个版本的程序TX2运行速度挺快的,但是第二个版本TX2的运行速度就变慢了。
毕竟做这个项目,需要实时从USB口读取数据,并且希望处理速度越快越好,所以有此一问。
补充一下我的情况是,从文件中读取数据是读数据-》处理数据-》读数据,是一个没有间断的循环。而从USB接口读取数据,是线程中cyusb_bulk_transfer(timeout=1s),读取的数据放在缓冲区,主程序从缓冲区取出数据处理数据。如果主程序处理的慢,数据会堆积;如果主程序处理的快,程序会等待数据读取,暂不运行。

你应当直接比较kernel的运行时间,从而确定是否是GPU部分真的慢了。而不是靠缓冲区中的数据堆积程度预估。
此外,这个问题只有相同的代码才有比较意义(相同代码,在2个板子上对比),而不是同时有3种代码,TX2上还有2个版本,注意控制实验变量!不要同时有多个!

我建议楼主首先控制同一版本,在不同的硬件上运行(TX1 vs TX2)。

然后再分别查看CPU和GPU使用情况(包括你最初说的nvprof查看)。

这样至少能知道大致的问题的出现的点在哪里,而不是只是估计缓冲区里面的数据的消耗和堆积程度。

你觉得呢?