小编pap*_*l87的帖子

用C编写大型二进制文件

我正在使用 64 位 mingw 在 windows x64 上编译 c 代码。我正在使用 fwrite 从内存数组创建二进制文件。我想写 ~20Gb 调用这个函数,但它只是写到 1.4~1.5gb 然后它停止写入(没有崩溃,只是挂在那里......什么都不做)。有什么解决办法吗?现在我正在写 20 个文件,然后我合并它们。将文件作为“ab”打开可以工作,但如果我使用该模式,我将无法正确读取文件。

示例(伪)代码:

    short* dst= malloc(20GB);
    *calculations to fill dst* 
    file=fopen("myfile",'wb');
    fwrite(dst, sizeof(short), 20GB/sizeof(short), file);
    fclose(file)
Run Code Online (Sandbox Code Playgroud)

该程序永远不会结束,文件大小永远不会超过 1.5GB

c io binary file

2
推荐指数
1
解决办法
1148
查看次数

16 位短(实)跨步数据的 FFT

我需要计算像这样存储的 2 个短数据数组的 FFT(重复数百万次): 数据在内存中的分布 等等。

数组值由黄色和蓝色表示。每个 K 值都有一个大小为 K 的未使用数据空间,我需要跳过。

我对数据进行了重新排序(和浮动转换)以消除无用的值,并使用 FFTW(带有 c)来计算所需的变换。

关于这个过程我有两个问题。

  1. 有没有办法使用inistrideidist参数(如文档中所示)按原样使用数组(无需重新排序,仅转换为 float )?我想没有,但也许我已经精疲力竭了。
  2. 有没有好的库可以使用短数据作为输入来计算 fft?我很乐意用一些精度来换取显着的加速。该代码将在 i7 上运行。

c integer fft fftw

2
推荐指数
1
解决办法
1847
查看次数

标签 统计

c ×2

binary ×1

fft ×1

fftw ×1

file ×1

integer ×1

io ×1