gpt4 book ai didi

c++ - 我可以从不是由 nvcc 编译的 C++ 代码调用 CUDA 运行时函数吗?

转载 作者:太空宇宙 更新时间:2023-11-04 14:10:47 25 4
gpt4 key购买 nike

有什么方法可以调用 CUDA 运行时函数调用,例如

cudaMemcpy(...);

在 .cpp 文件中,使用常规 C++ 编译器编译?

最佳答案

编辑:有一个 example here但它不再被发现,但大部分示例都复制在下面。

调用者 C(但可以是 C++)

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <cuda.h>

extern void kernel_wrapper(int *a, int *b);

int main(int argc, char *argv[])
{
int a = 2;
int b = 3;

kernel_wrapper(&a, &b);

return 0;
}

被调用者 (CUDA)

__global__ void kernel(int *a, int *b)
{
int tx = threadIdx.x;

switch( tx )
{
case 0:
*a = *a + 10;
break;
case 1:
*b = *b + 3;
break;
default:
break;
}
}

void kernel_wrapper(int *a, int *b)
{
int *d_1, *d_2;
dim3 threads( 2, 1 );
dim3 blocks( 1, 1 );

cudaMalloc( (void **)&d_1, sizeof(int) );
cudaMalloc( (void **)&d_2, sizeof(int) );

cudaMemcpy( d_1, a, sizeof(int), cudaMemcpyHostToDevice );
cudaMemcpy( d_2, b, sizeof(int), cudaMemcpyHostToDevice );

kernel<<< blocks, threads >>>( a, b );

cudaMemcpy( a, d_1, sizeof(int), cudaMemcpyDeviceToHost );
cudaMemcpy( b, d_2, sizeof(int), cudaMemcpyDeviceToHost );

cudaFree(d_1);
cudaFree(d_2);
}

关于c++ - 我可以从不是由 nvcc 编译的 C++ 代码调用 CUDA 运行时函数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14497280/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com