[英]Why do I need to include <stdio.h> to use CUDA's printf()?
我想在我的 CUDA 內核中printf()
一些東西。 編程指南建議我這樣做:
#include <stdio.h>
__global__ void helloCUDA(float f)
{
printf("Hello thread %d, f=%f\n", threadIdx.x, f);
}
但這只是包括標准 C 庫的stdio.h
。 為什么有必要這樣做? CUDA 的printf()
與 stdio 的printf()
行為不同; 我當然不需要那里的大部分其他東西。
這是一個你不需要知道的實現細節,它源於 CUDA 語法的限制(基本上定義同一函數的不同__device__
和__host__
版本是非法的)。
標准庫原型在編譯期間用作設備代碼中的代理,並且在為支持的架構編譯時,會使用一些偷偷摸摸的模板重載將設備實現插入設備代碼中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.