- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个使用大约 2GB 本地内存的内核。如果我之前运行该 kernel_func
,我尝试分配 2.5GB 内存的 cudaMalloc
会失败。
我发现在运行完kernel_func
后仍有2GB 内存被占用,这为我的cudaMalloc
留下了1.5GB。有没有人有解决方案或解释?
我知道为 kernel_func
使用全局内存可以解决问题,但出于某种原因,我需要为那个巨大的本地静态数组使用本地内存。
__global__ kernel_func() {
// The huge static array goes here
short my_array[50000];
}
int main() {
kernel_func<<<64, 128>>>();
// my_array is still occupying memory are this point
// This cudaMalloc will fail with insufficient memory
cudaMalloc(/* 2.5GB data */);
}
最佳答案
如果您允许 kernel_func
完成(例如使用 cudaDeviceSynchronize()
),那么我怀疑 my_array
是否仍像您建议的那样“占用内存”,在内核完成后,即在评论点:
// my_array is still occupying memory are this point
此时调用 cudaMemGetInfo() 可以更加确定。
不过,您遇到的可能是某种内存碎片。
我所知道的“清理历史”的唯一方法是在此时调用 cudaDeviceReset()
。但是,这会终止所有操作以及 GPU 上的任何分配,因此您应该只在 GPU 没有其他事件时才执行此操作,并且您必须在调用 cudaDeviceReset()
后重新分配所需的任何 GPU 数据.
当然,如果您可以改用 cudaMalloc
来安排您的分配,那可能会更容易。
请注意,cudaDeviceReset()
本身不足以将 GPU 恢复到正常的功能行为。为了实现这一点,“拥有”过程也必须终止。见 here 。
关于c++ - CUDA cudaMalloc 在运行具有巨大静态数组的内核后失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20079046/
我通过在共享首选项中使用 GSON 将其转换为 json 来存储我的复杂对象。但是在检索它时,无法获得预期的字符串。 代码 这里 holderListCustomizationMap 是对象的复杂映射
因此,我正在尝试对大于可用RAM的gz压缩文件执行某种面向行的操作,因此排除了将其首先读取为字符串的情况。问题是,如何在rust(缺少gunzip file.gz|./my-rust-program)
我试图更好地理解为什么具有潜在大精度的大数字处理不一致,特别是在 JavaScript 及其本地化工具(例如 ECMA-402/Intl)中。我假设这与 float 的使用有关,但我想了解限制在哪里和
我们有一个 5GB 的 csv 文件,这是我们业务的主列表。 有多个类别,每个类别包含数千条记录。我们的目标是将每个类别导出为其自己的 csv 文件。 我们如何运行查询并导出数据? 运行 OSX。有没
基于上一个问题 ( see here ),我试图通过 xmlEventParse 读取许多大型 xml 文件,同时保存节点变化数据。使用此示例 xml:https://www.nlm.nih.gov/
我正在开发一个系统,它加载一个巨大的 CSV 文件(超过 100 万行)并保存到数据库中。每行也有超过一千个字段。 CSV 文件被视为一个批处理,每一行都被视为其子对象。在添加对象的过程中,每个对象都
借助node-google模块 我编写了一个简单的 Node 模块来为我的网络应用程序启用“文本网络搜索”功能,并在我的一个 View 中显示结果。 由于在来自同一 IP 的少量查询后 Google
我有相当大的 4D 阵列 [20x20x40x15000],我使用 h5py 将其作为 HDF5 文件保存到磁盘.现在的问题是我想计算整个数组的平均值,即使用: numpy.average(HDF5_
我在遗留代码库中连接巨大的 CString 时遇到问题。 CStrings 可以包含 base64 编码的文件,因此可能很大。在某些时候,这些 CString 会像这样连接起来: result +=
我正在尝试让我的服务器提供来自另一台服务器的巨大文件。但是,为了保护我的凭据免受该远程服务器的攻击,我不能简单地将请求者重定向到文件 url;另一方面,虽然使用 StreamingHttpRespon
感谢对此的任何见解,我有 2 个问题: 1) 弄清楚为什么我的本地数据库 oplog 庞大且不断增长 2) 安全删除(或重置)我的 local.oplog 以释放 18 GB 的浪费空间 场景:我一直
我的预期任务:获取大量数据(1 GB 及更多大小)json 字符串,操作(进行一些格式化、解析 json、重组 json 数据)并写入新格式化的 json 字符串作为响应。处理这种情况的更好方法是什么
我做了一个小的 Angular 4 应用程序,但我不知道如何应用 tree shaking 和 aot 编译。我运行的命令如下: ng build --prod --aot 但我得到的结果仍然很大,供
我是一名优秀的程序员,十分优秀!