我对cuda有一个奇怪的问题,
在下面的片段中,
#include <stdio.h>
#define OUTPUT_SIZE 26
typedef $PRECISION REAL;
extern "C"
{
__global__ void test_coeff ( REAL* results )
{
int id = blockDim.x * blockIdx.x + threadIdx.x;
int out_index = OUTPUT_SIZE * id;
for (int i=0; i<OUTPUT_SIZE; i++)
{
results[out_index+i]=id;
printf("q");
}
}
}
Run Code Online (Sandbox Code Playgroud)
当我编译并运行代码(通过pycuda)时,它按预期工作.当我删除printf时,结果很奇怪 - 大部分数组都是正确填充的,但有些似乎是完全随机的.
这是完整的python代码:
import numpy as np
import string
#pycuda stuff
import pycuda.driver as drv
import pycuda.autoinit
from pycuda.compiler import SourceModule
class MC:
cudacodetemplate = """
#include <stdio.h>
#define OUTPUT_SIZE 26
typedef $PRECISION …Run Code Online (Sandbox Code Playgroud) 我正在尝试在python中执行Fitted Value Iteration(FVI)(包括使用分段线性插值逼近5维函数).
scipy.interpolate.griddata非常适用于此.但是,我需要将插值程序调用几千次(因为FVI是基于MC的算法).
所以基本上,函数已知的点集是静态的(并且很大 - 比如32k),但是我需要近似的点(这是原始集的小扰动)是非常大的(32k x 5000说).
scipy.interpolate.griddata是否已经将其移植到CUDA?或者,有没有办法加快计算速度?
谢谢.