是否可以将 volatile 关键字与 Cudafy.NET 一起使用?
Is it possible to use the volatile keyword with Cudafy.NET?
我需要将传递给函数的数组声明为 volatile,Cudafy.NET 支持吗?
例如(在 C# 中):
[Cudafy]
private static void doStuffOnGPU(GThread thread, volatile int[] output)
{
//do a whole bunch of stuff
}
答案是否定的,截至2016年11月26日,Cudafy.NET不支持volatile关键字。但是,在某些情况下,您可以欺骗 Cudafy.NET 允许它。
例如:
//declare a dummy in global scope
public static int[] volatileArray = new int[256];
[Cudafy]
private static void doStuffOnGPU(GThread thread, int[] output)
{
//use the GThread.InsertCode() function to declare in CUDA
GThread.InsertCode("__shared__ volatile int volatileArray[256];");
//do a whole bunch of stuff
}
此代码将在 运行 串行测试时使用全局声明,并将在 GPU 上使用 volatile 声明。
我需要将传递给函数的数组声明为 volatile,Cudafy.NET 支持吗?
例如(在 C# 中):
[Cudafy]
private static void doStuffOnGPU(GThread thread, volatile int[] output)
{
//do a whole bunch of stuff
}
答案是否定的,截至2016年11月26日,Cudafy.NET不支持volatile关键字。但是,在某些情况下,您可以欺骗 Cudafy.NET 允许它。
例如:
//declare a dummy in global scope
public static int[] volatileArray = new int[256];
[Cudafy]
private static void doStuffOnGPU(GThread thread, int[] output)
{
//use the GThread.InsertCode() function to declare in CUDA
GThread.InsertCode("__shared__ volatile int volatileArray[256];");
//do a whole bunch of stuff
}
此代码将在 运行 串行测试时使用全局声明,并将在 GPU 上使用 volatile 声明。