node-cuda-raub
Version:
NVIDIA CUDA™ bindings for Node.js
78 lines (60 loc) • 1.89 kB
JavaScript
var Buffer = require('buffer').Buffer;
var cu = require('../cuda');
//cuDriverGetVersion
//cuDeviceGetCount
console.log("Node-cuda exports:", cu);
for (var i = 0; i < cu.deviceCount; i++) {
//cuDeviceGet
var cuDevice = new cu.Device(i);
//cuDeviceComputeCapability
//cuDeviceGetName
//cuDeviceTotalMem
console.log("Device " + i + ":", cuDevice);
}
//cuCtxCreate
var cuCtx = new cu.Ctx(0, cu.Device(0));
//cuCtxGetApiVersion
console.log("Created context:", cuCtx);
//cuMemAllocPitch
var cuMem = cu.memAllocPitch(100, 100, 8);
console.log("Allocated 100x100 array of doubles:", cuMem);
//cuMemFree
var error = cuMem.free();
console.log("Mem Free with error code: " + error);
//cuMemAlloc
var cuMem = cu.memAlloc(100);
console.log("Allocated 100 bytes:", cuMem);
var buf = new Buffer(100);
for (var i = 0; i < buf.length; i++) {
buf[i] = (i + 1) % 256;
}
console.log("Created buffer of 100 bytes:", buf);
// cuMemcpyHtoD
var error = cuMem.copyHtoD(buf);
console.log("Copied buffer to device:", error);
//cuModuleLoad
var cuModule = cu.moduleLoad("test/test.cubin");
console.log("Loaded module:", cuModule);
//cuModuleGetFunction
var cuFunction = cuModule.getFunction("helloWorld");
console.log("Got function:", cuFunction);
//cuLaunchKernel
var error = cu.launch(cuFunction, [3, 1, 1], [2, 2, 2],
[{
type: "DevicePtr",
value: cuMem.devicePtr
}]);
console.log("Launched kernel:", error);
// cuMemcpyDtoH
var error = cuMem.copyDtoH(buf, true);
console.log("Copied buffer to host:", error);
//cuCtxSynchronize
var error = cuCtx.synchronize(function(error) {
console.log("Context synchronize with error code: " + error);
//cuMemFree
var error = cuMem.free();
console.log("Mem Free with error code: " + error);
//cuCtxDestroy
error = cuCtx.destroy();
console.log("Context destroyed with error code: " + error);
});