如何将 cuda-memcheck 应用于具有来自标准 I/O 的管道输入的应用程序

白农

我想将 cuda-memcheck 用于具有标准 I/O 的应用程序。

应用程序 dut 读取标准输入并写入标准输出。

cat input.txt | cuda-memcheck ./dut -dutoptions > output.txt

在这种情况下,dut 应用程序似乎已启动,但 cuda-memcheck 无法正常工作。

我怎样才能做到这一点?

罗伯特·克罗维拉

一种可能的方法:

将要执行的命令放入脚本中。在该脚本上运行 cuda-memcheck。

$ cat input.txt
4

$ cat t2030.cu
#include <iostream>

__global__ void k(int *d){
  *d = 5;
}

int main(){

  int *d = NULL;
#ifndef FAULT
  cudaMalloc(&d, sizeof(d[0]));
#endif
  int a;
  std::cin  >> a;
  std::cout << "value read: " << a << std::endl;
  k<<<1,1>>>(d);
  cudaDeviceSynchronize();
}

$ nvcc -o t2030 t2030.cu
$ cat test
cat input.txt | ./t2030 > output.txt
$ chmod +x test
$ cuda-memcheck ./test
========= CUDA-MEMCHECK
========= ERROR SUMMARY: 0 errors
$ cat output.txt
value read: 4
$ nvcc -DFAULT -o t2030 t2030.cu
$ cuda-memcheck ./test
========= CUDA-MEMCHECK
========= Invalid __global__ write of size 4
=========     at 0x00000050 in k(int*)
=========     by thread (0,0,0) in block (0,0,0)
=========     Address 0x00000000 is out of bounds
=========     Device Frame:k(int*) (k(int*) : 0x50)
=========     Saved host backtrace up to driver entry point at kernel launch time
=========     Host Frame:/lib64/libcuda.so.1 [0x20d6ea]
=========     Host Frame:./t2030 [0x864b]
=========     Host Frame:./t2030 [0x5ec88]
=========     Host Frame:./t2030 [0x3ea0]
=========     Host Frame:./t2030 [0x3d81]
=========     Host Frame:./t2030 [0x3da9]
=========     Host Frame:./t2030 [0x3c2a]
=========     Host Frame:/lib64/libc.so.6 (__libc_start_main + 0xf5) [0x21b15]
=========     Host Frame:./t2030 [0x3a91]
=========
========= Program hit cudaErrorLaunchFailure (error 719) due to "unspecified launch failure" on CUDA API call to cudaDeviceSynchronize.
=========     Saved host backtrace up to driver entry point at error
=========     Host Frame:/lib64/libcuda.so.1 [0x3bd253]
=========     Host Frame:./t2030 [0x3a047]
=========     Host Frame:./t2030 [0x3c2f]
=========     Host Frame:/lib64/libc.so.6 (__libc_start_main + 0xf5) [0x21b15]
=========     Host Frame:./t2030 [0x3a91]
=========
========= ERROR SUMMARY: 2 errors
$

请注意,对于 volta 或更新的设备,cuda-memcheck应替换为compute-sanitizer.

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

cuda-memcheck无法启动应用程序(7)

如何将NSApplicationPresentationOptions应用于应用程序?

如何将if语句应用于具有输入的数据框?

如何将 swift 应用程序连接到套接字 io 服务器

如何将socket.io附加到Google Firebase应用程序功能?

如何将 socket.io 与 Heroku 部署的 React Native 应用程序连接?

如何将 Material Theme 应用于应用程序(活动)中的所有按钮?

如何将标准应用于伊莎贝尔的所有子目标?

如何将验证应用于具有特定类的所有标签?

熊猫-将函数应用于具有来自不同列的多个参数的数据框

将具有来自全局环境的信息的功能应用于列表

如何将 Clamp.js 应用于具有相同类的多个元素?

如何将悬停效果应用于具有相同 css 类的其他元素?

如何将Servlet筛选器仅应用于具有HTTP POST方法的请求

如何将具有多种条件的函数应用于熊猫数据框?

如何将具有2个参数的lambda应用于Haskell中的列表?

如何将具有泛型的函数类型应用于函数

如何将子图应用于具有次要Y轴的图列表

HTML / CSS如何将CSS应用于具有自定义数据属性的“ a”?

如何将宏注释应用于具有上下文绑定的案例类?

如何将具有nullable = false的架构应用于json读取

如何将authguard应用于reactjs中具有多个组件的路由

如何将JavaScript应用于具有不同ID的文本框数组?

在Julia中,如何将函数应用于具有数组的数据框?

如何将array_map应用于PHP中具有更多参数的函数?

如何将 Styleframe 应用于具有两张工作表的 Excel 文件

如何将样式应用于所有文本输入且不具有“ size”属性的样式?

如何将AND应用于列表的所有元素?

如何将= If应用于现有公式?