小编use*_*155的帖子

一个函数在CUDA C ++中调用另一个函数

我对CUDA编程有问题!输入是矩阵A(2 x 2),输出是矩阵A(2 x 2),每个新值都是**旧值的3指数**示例:输入:A:{2,2}输出:A { 8,8} {2,2} {8,8}

我在CudaCode.CU文件中有2个功能:

   __global__ void Power_of_02(int &a)
{
    a=a*a;
}

 //***************
__global__ void Power_of_03(int &a)
{
    int tempt = a;
    Power_of_02(a); //a=a^2;
    a= a*tempt; // a = a^3
}
Run Code Online (Sandbox Code Playgroud)

和内核:

__global__ void CudaProcessingKernel(int *dataA )    //kernel function  

   {  
        int bx = blockIdx.x;  
    int tx = threadIdx.x;  
        int tid = bx * XTHREADS + tx;  

    if(tid < 16)
    {
    Power_of_03(dataA[tid]);
        }
    __syncthreads();

   }  
Run Code Online (Sandbox Code Playgroud)

我认为是正确的,但是会出现错误:仅在compute_35或更高版本的体系结构上允许从__global__函数(“ Power_of_03”)调用__global__函数(“ Power_of_02”)

为什么我错了?怎么修呢?

parallel-processing cuda global function call

2
推荐指数
1
解决办法
2730
查看次数

如何在CUDA中执行多个矩阵乘法?

我有一个方阵矩阵,int *M[10];以便M[i]找到i-th矩阵的第一个元素.我想将所有矩阵乘以M[i]另一个矩阵N,以便我接收一个方阵矩阵int *P[10]作为输出.

我看到了不同的可能性:

  1. 确定计算M[i]不同线程的不同元素; 例如,我有大小的10矩阵,4x4以便涉及的线程数量160; 如何使用CUDA实现这种方法?
  2. 在上面的例子的框架中,创建一个复合矩阵大小40x40(即,收集10,4x4大小矩阵在一起)和使用40x40线程; 但这种方法似乎需要更多时间; 我正在尝试使用矩阵数组,但我认为我做错了; 我如何在10矩阵中使用这种方法?如何在内核函数中编写代码?

这就是我正在尝试的;

void GPU_Multi(int *M[2], int *N, int *P[2], size_t width)
{

    int *devM[2];
    int *devN[2];
    int *devP[2];
    size_t allocasize =sizeof(int) *width*width;

    for(int i = 0 ; i < 10 ; i ++ ) 
    {
        cudaMalloc((void**)&devM[ i ], allocasize ); …
Run Code Online (Sandbox Code Playgroud)

parallel-processing cuda matrix c++11

2
推荐指数
2
解决办法
3649
查看次数

标签 统计

cuda ×2

parallel-processing ×2

c++11 ×1

call ×1

function ×1

global ×1

matrix ×1