簡體   English   中英

為什么我需要包括<stdio.h>使用 CUDA 的 printf()?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM