CUDA文档没有具体说明有多少CUDA进程可以共享一个GPU.例如,如果同一个用户在系统中只安装了一个GPU卡的情况下启动了多个CUDA程序,效果如何?它会保证执行的正确性吗?在这种情况下,GPU如何安排任务?
基本上我想动态启动一些可能创建自己的子进程的进程,我也希望在我想要的时候杀死我刚创建的某组进程.我能想到的一种方法是使用名称启动进程(以区分为一组),然后使用pkill通过名称来杀死它们.问题是如何使用名称启动进程,以便我可以使用pkill来杀死它们的名称?我也对其他解决方案持开放态度.
从LLVM 3.0开始,Analysis目录下有CostModel.cpp.它说,参考它的文档
该文件定义了成本模型分析.它为LLVM-IR提供了非常基本的成本估算.此分析使用codegen的服务来估算降低到机器指令时任何IR指令的成本.成本结果是无单位的,并且成本数字表示机器的吞吐量,假设所有负载都到达高速缓存,所有分支都被预测,等等.可以添加成本数字以便比较两个或更多个转换备选方案.
我想知道我应该如何编译和使用这个传递IR文件.具有适当命令的具体示例将是完美的.
在用于CUDA程序的NVPTX(LLVM IR)中,存储器地址空间的标识符从0到5(参见下表).
我在同一个LLVM IR程序中看到,内存地址被标识为"Generic"或其他类型,如图片所示.
我的问题是,对于通用存储器地址空间,数据实际位于硬件,片外,片上存储器或本地寄存器中的哪个位置?有人能解释一下最终管理泛型类型的地址空间吗?
在CUDA应用程序抛出异常后,CUDA文档不清楚内存数据如何变化.
例如,内核启动(动态)遇到异常(例如Warp超出范围的地址),将停止当前的内核启动.在此之后,设备上的数据(例如__device__变量)是否仍然保留,或者它们是否与例外一起被删除?
一个具体的例子是这样的:
有人能说明这背后的理由吗?