程序员小说 Out Of Memory (四)

一位程序员面对客户一年前未解决的iOS项目问题,随后接到新游戏开发外包请求,涉及塔防、三消和三国主题的游戏。讨论中涉及游戏开发的酬劳、效率和市场偏好。最后,程序员吐槽了iOS自带的地图应用的缺陷。

疯子跟我说,他这几天光听以前的客户抱怨了。


  “有什么可抱怨的?”

  “就是几个一年前的项目,客户告诉我代码编译不了了。”

  “他们修改过代码?”

  “没有。”

  “你们修改过代码?”

  “也没有啊。”

  “那他妈的怎么回事?”

  “苹果修改了规则。”疯子掩面,从指缝中我能够看出中间流露的无助感。

  “那你们为什么还要做 iOS,跟我们做 Android 吧?”

  “先别说这个了,说正事了,什么事这么着急让你找我,为什么不能等到晚上加班以后?”

  “你也别提这个了,还差二十多个商店没有提交呢,都不知道这周能不能搞定。”

  “好了,那说正事吧。”

  “是这样,我有个朋友在美国创业,他们做的是一个手机游戏的积分共享平台,然后想自己做几款游戏放上去,一是测试一下,二是保证他们真正开始的时候稍微有点东西……”

  “真麻烦,你就说做什么,给多少钱就可以了。”

  面对这个不友好的打断,我也完全没有丝毫生气的意思,显然我也觉得自己说话实在是太啰嗦了,尤其对这么一个没有耐性,完全堕落为了钱而生活的人。

  “哦,就是三款游戏,一款塔防……”

  “我操,又是塔防!”

  “一款三消……”

  “我操,又是三消!”

  我突然不敢跟他继续说下面的东西,看着他满是期待的眼神我想他一定是猜到了我下面要说什么,希望我说点别的。我也经历过这些,对我而言,这种感觉像极了明明知道自己没有改过代码,还总想多 run 几遍看看是不是编译器出错,我想他现在也是这样。我不好意思的挠挠头,然后停顿了几秒,继续说道:“最后一个是……”

  “别他妈的是三国就行了……”

  我比他说出来稍微慢了半秒:“三国……”

  “我他妈的就知道……”

  “好了,别伤心了,玩家不就是喜欢这些么,你一个接外包的,肯定是做的越少,赚得越多越开心是不是?”

  “也对,那说说报酬吧。”

  “是这样,策划我晚上发给你,跟你关系这么久了,也算是朋友了。我直接给你透个底价,以后谈起来咱两谁都省心。她那里的意思是十万……”

  疯子插嘴打断了我的话,问道:“一款?”

  “三款……”

  “这个钱怎么都不行啊……”

  “我操,你让我说完啊,十万美元!但是他妈的美工你们自己做!这个钱是暂定,你看完策划之后再给答复就好!”

  “Deal!”

  就这样我们又谈了一些关于生活,关于创业的话题,大部分时间都是吐槽和抱怨,好像无奈已经成为了程序员生活最重要的组成部分,另一半是发呆等编译结果。

  出门之后,疯子问我最近的地铁站怎么走,我说让他自己拿手机搜一下,我也不是很清楚,他倒也听话。

  “我操,地图上显示这附近有三个地铁站!”

  “你什么破地图啊?”

  “iOS6自带的啊!”

  “就是那个跟 TomTom 做的?烂死了,要我是苹果绝对过去炸了他们的总部。”

  疯子看着地图沉默了五秒,至少我猜是五秒。晃晃手机说道:“打死我也不信他们能找到 TomTom 在哪。”

### CUDA 内核内存不足错误的异步报告原因 当CUDA应用程序执行时,内核调用通常是非阻塞的。这意味着主机代码不会等待设备完成操作而是继续执行后续指令直到遇到同步点[^1]。因此,在某些情况下,如果GPU上发生了资源分配失败(例如内存不足),这些错误可能并不会立即被检测到。 具体来说,由于CUDA采用了一种称为流(streams)机制来管理命令队列,多个内核可以并行提交给不同的流,并且它们之间的执行顺序由程序员控制。这种设计允许更高效地利用硬件资源,但也意味着任何发生在特定流中的错误可能会延迟至该流下一次尝试启动新任务之前才被发现。 对于`out of memory (OOM)` 错误而言,其根本原因是试图分配超出可用显存大小的数据结构或对象。然而因为上述提到的任务调度特性,实际发生 OOM 的时刻与程序感知此异常的时间之间可能存在时间差。 ### 解决方案 为了有效处理此类问题: #### 合理规划内存使用 确保申请的总内存不超过设备的实际容量。可以通过查询当前活动进程占用情况以及调整批处理尺寸等方式优化应用性能和稳定性。 ```cpp cudaError_t error = cudaGetLastError(); if(error != cudaSuccess){ printf("CUDA Error: %s\n", cudaGetErrorString(error)); } ``` 这段C++代码展示了如何在每次API调用之后立刻检查是否有未决错误存在。这有助于尽早发现问题所在位置以便及时采取措施修复。 另外还可以考虑启用持久化模式(Persistence Mode),它使得NVIDIA驱动能够在系统重启期间保持加载状态从而更好地监控整个系统的健康状况;同时配合nvidia-smi工具定期查看显卡的工作负载分布情况也是不错的选择之一。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值