一个简易的nodejs使用cuda的nvrtc功能的扩展
node-nvrtc``nvrtc``node.js``nvrtc``cuda
npm install node-nvrtc
win-x86_64``linux-x86_64
,cuda10.2
cuda
win64``linux-x86_64``cuda10.2
nvrtc
32var NVRTC = require("node-nvrtc");
/** */
var deviceCount = NVRTC.getDeviceCount();
if(deviceCount <= 0){
throw new Error("");
}
//
for(var i = 0;i < deviceCount;i++){
console.log(`${i}`,NVRTC.getDeviceProperties(i));
}
/** */
var data = new Float32Array([1,2,3,4,5]);
/** */
var cudaData = new NVRTC.CudaBuffer(data.byteLength);
//jscuda
cudaData.writeData(data.buffer);
/**cuda */
var code = `my_program
__global__
void my_kernel(float* data) {
data[threadIdx.x] = data[threadIdx.x] * data[threadIdx.x];
}`;
/** */
var launcher = new NVRTC.CudaProgram(code).createKernel("my_kernel").createInstantiate([]).createLauncher([1,1,1],[data.length,1,1]);
//cuda
launcher.run(cudaData);
//
cudaData.readData(data.buffer);
console.log(data);