首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DeviceReduceModule抛出一个OverflowException

DeviceReduceModule抛出一个OverflowException
EN

Stack Overflow用户
提问于 2015-09-04 07:31:05
回答 1查看 49关注 0票数 0
代码语言:javascript
复制
let absoluteSumModule = (new DeviceReduceModule<float32>(GPUModuleTarget.Worker(worker), fun a b -> a+b)).Create(128000)

我尝试过各种maxNumItems设置,但不管是什么,它都会抛出相同的异常。与上次不同的是,我甚至不知道错误可能是什么,所以我在这里包含了整个转储。

代码语言:javascript
复制
Failure
  (Description "$f0(sm52,64)",
   Exception
     System.OverflowException: Value was either too large or too small for a UInt16.
   at Alea.CUDA.UsageByInstanceUtil.f@1-46(Object clrModuleInstance, IRModuleBuildingContext ctx, FieldInfo fieldInfo)
   at Alea.CUDA.UsageByInstanceUtil.cudafy@104.Invoke(IRModuleBuildingContext ctx)
   at <StartupCode$Alea-CUDA>.$Compilation.compile@490[T](Template`1 template, FSharpOption`1 bitcodeCache, IRModuleBuildingContext ctx, Unit unitVar0)
   at <StartupCode$Alea-CUDA>.$Compilation.compile@515-7[T](Template`1 template, FSharpOption`1 bitcodeCache, IRModuleBuildingContext ctx, Unit unitVar0),
   System.OverflowException: Value was either too large or too small for a UInt16.
   at Alea.CUDA.UsageByInstanceUtil.f@1-46(Object clrModuleInstance, IRModuleBuildingContext ctx, FieldInfo fieldInfo)
   at Alea.CUDA.UsageByInstanceUtil.cudafy@104.Invoke(IRModuleBuildingContext ctx)
   at <StartupCode$Alea-CUDA>.$Compilation.compile@490[T](Template`1 template, FSharpOption`1 bitcodeCache, IRModuleBuildingContext ctx, Unit unitVar0)
   at <StartupCode$Alea-CUDA>.$Compilation.compile@515-7[T](Template`1 template, FSharpOption`1 bitcodeCache, IRModuleBuildingContext ctx, Unit unitVar0))
System.Exception: Compiling failed.
   at Alea.CUDA.Worker.LoadProgram[T](Template`1 template, CompileOptions options)
   at <StartupCode$Alea-CUDA>.$UsageByInstance.-ctor@271-215.Invoke(Unit _arg1)
   at System.Lazy`1.CreateValue()
   at System.Lazy`1.LazyInitValue()
   at <StartupCode$Alea-CUDA>.$UsageByInstance.-ctor@77-214.Invoke(Unit _arg1)
   at System.Lazy`1.CreateValue()
   at System.Lazy`1.LazyInitValue()
   at Alea.CUDA.Unbound.DeviceReduceModule`1.Create(Int32 maxNumItems)
   at <StartupCode$FSI_0002>.$FSI_0002.main@() in C:\Users\Marko\Documents\Visual Studio 2015\Projects\Load MNIST\Load MNIST\utils.fsx:line 28
Stopped due to error
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-09-05 05:16:21

嗯,我查过了,看上去是个窃听器。得检查一下这个。如果您在普通的F#文件中编码它,但在F#交互中不工作,它就能工作。

同时,在F#中,我们请您使用运算符的报价,因此您可以尝试如下:

代码语言:javascript
复制
> let worker = Worker.Default;;

val worker : Worker = [0|5.2|GeForce GTX 970|7]

> let m = new DeviceReduceModule<float32>(GPUModuleTarget.Worker(worker), <@ (+) @>);;
Binding session to 'C:\Users\Xiang\Documents\Inbox\Library3\packages\Alea.CUDA.IL.2.1.2.3274\lib\net40\Alea.CUDA.IL.dll'...

val m : DeviceReduceModule<float32>

> m.GPUForceLoad();;
Binding session to 'C:\Users\Xiang\Documents\Inbox\Library3\packages\Alea.CUDA.2.1.2.3274\lib\net40\Alea.CUDA.dll'...
val it : unit = ()
> let x = m.Create(128000);;

val x : DeviceReduce<float32>

> 

因此,不使用fun a b -> a + b,您可以尝试<@ fun a b -> a + b @>,或者简单地使用<@ (+) @>

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32392505

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档