小编mic*_*sta的帖子

多GPU基本用法

如何使用两个设备来改善例如以下代码的性能(向量之和)?是否可以"同时"使用更多设备?如果是,我如何管理不同设备的全局内存上的向量分配?

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
#include <cuda.h>

#define NB 32
#define NT 500
#define N NB*NT

__global__ void add( double *a, double *b, double *c);

//===========================================
__global__ void add( double *a, double *b, double *c){

    int tid = threadIdx.x + blockIdx.x * blockDim.x; 

    while(tid < N){
        c[tid] = a[tid] + b[tid];
        tid += blockDim.x * gridDim.x;
    }

}

//============================================
//BEGIN
//===========================================
int main( void ) {

    double *a, *b, *c;
    double *dev_a, *dev_b, *dev_c;

    // allocate …
Run Code Online (Sandbox Code Playgroud)

cuda gpu multi-gpu

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

设备功能指针

我需要以下主机代码的设备版本:

double (**func)(double x);

double func1(double x)
{
 return x+1.;
}

double func2(double x)
{
 return x+2.;
}

double func3(double x)
{
 return x+3.;
}

void test(void)
{
 double x;

 for(int i=0;i<3;++i){
  x=func[i](2.0);
  printf("%g\n",x);
 }

}

int main(void)
{
 func=(double (**)(double))malloc(10*sizeof(double (*)(double)));

 test();

 return 0;
}
Run Code Online (Sandbox Code Playgroud)

其中func1,func2,func3必须是__device__函数,"test"必须是(适当修改)__global__内核.

我有一台NVIDIA GeForce GTS 450(计算能力2.1),先谢谢Michele

================================================== ======

一个有效的解决方

#define REAL double

typedef REAL (*func)(REAL x);

__host__ __device__ REAL func1(REAL x)
{
    return x+1.0f;
}

__host__ __device__ REAL func2(REAL x)
{
    return x+2.0f;
}

__host__ …
Run Code Online (Sandbox Code Playgroud)

cuda

11
推荐指数
1
解决办法
6939
查看次数

gnuplot:数据矩阵的3D图

如何在具有这种数据结构的Gnuplot中绘制(3D绘图)矩阵,使用第一行和第一行作为ax和y刻度(第一行的第一个数字是列数)?

4 0.5 0.6 0.7 0.8
1 -6.20 -6.35 -6.59 -6.02
2 -6.39 -6.52 -6.31 -6.00
3 -6.36 -6.48 -6.15 -5.90
4 -5.79 -5.91 -5.87 -5.46
Run Code Online (Sandbox Code Playgroud)

gnuplot

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

标签 统计

cuda ×2

gnuplot ×1

gpu ×1

multi-gpu ×1