Menu

#20 Read speed

1.0
open
nobody
None
2023-01-25
2022-06-11
Anonymous
No

Hello,

First, thanks for a great player!

I use PGGB so my albums are 30 GB (WAV files), but reading to RAM is only 600MB/s (even with parallelize file read) for a NVME (3500MB/s read capable).
Could you make read speed faster?

Regards,
Henk

Discussion

  • yamamoto2002

    yamamoto2002 - 2022-06-16

    This is pretty interesting problem. I'd like to look into it when I have a spare time

     
  • Anonymous

    Anonymous - 2022-06-17

    Great.

     
  • yamamoto2002

    yamamoto2002 - 2022-08-04

    On preliminary testing, it seems it is possible to transfer 1GB/s to 2GB/s WAV with converting to PCM16/24/32/32float using memory mapped file read and assembly optimized bit-depth conversion. It seems the bottleneck of the process is copying data onto main memory. following is Intel Advisor result.

     
  • yamamoto2002

    yamamoto2002 - 2022-08-04

    ASM PCM16toF32 100M sample conversion in 0.022285 sec. 4.487364 Gsamples/sec
    C++ PCM16toF32 100M sample conversion in 0.053660 sec. 1.863582 Gsamples/sec
    ASM PCM16to24 100M sample conversion in 0.068168 sec. 1.466968 Gsamples/sec
    C++ PCM16to24 100M sample conversion in 0.144177 sec. 0.693593 Gsamples/sec
    ASM PCM24toF32 100M sample conversion in 0.029918 sec. 3.342425 Gsamples/sec
    C++ PCM24toF32 100M sample conversion in 0.110455 sec. 0.905349 Gsamples/sec
    ASM PCM24to32 100M sample conversion in 0.029540 sec. 3.385252 Gsamples/sec
    C++ PCM24to32 100M sample conversion in 0.102460 sec. 0.975993 Gsamples/sec
    ASM PCM16to32 100M sample conversion in 0.039539 sec. 2.529155 Gsamples/sec
    C++ PCM16to32 100M sample conversion in 0.048266 sec. 2.071843 Gsamples/sec

     
  • yamamoto2002

    yamamoto2002 - 2022-08-04

    This is PCM24bit to 32 float conversion performance

     
  • yamamoto2002

    yamamoto2002 - 2022-08-23

    5GB/sec WAV file read was achieved with 8-queue IO Completion ports with 8 thread parallel read with AVX512F and AVX512BW bit depth conversion. Now integrating it with PlayPcmWin code.

     
  • Anonymous

    Anonymous - 2022-08-24

    Wow, great!

     
  • yamamoto2002

    yamamoto2002 - 2022-12-29

    Implemented on PlayPcmWin 5.0.85 but read performance improvement is not enough. Found the read performance bottleneck is on C# marshaling part of the code...

     
  • Anonymous

    Anonymous - 2023-01-23

    Thanks, but in my system there is no improvement.

     
  • yamamoto2002

    yamamoto2002 - 2023-01-25

    True. I'm fixing the bottleneck part. Not completed yet. There are a lot of workaround code for malformed WAV files on C# WAV file read program and I'd like to port it to native C++ code to keep compatibility and it takes some time...

     

Anonymous
Anonymous

Add attachments
Cancel





Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.