FLACCL: CUDA-enabled FLAC encoder by Gregory S. Chudov (prev. FlaCuda), Formerly "lossless codecs and CUDA" |
![]() ![]() |
FLACCL: CUDA-enabled FLAC encoder by Gregory S. Chudov (prev. FlaCuda), Formerly "lossless codecs and CUDA" |
Mar 9 2011, 14:14
Post
#251
|
|
|
Group: Members Posts: 231 Joined: 6-April 09 Member No.: 68706 |
Here i did a quick and dirty comparison, 414 files of mixed music, -8 FlaCuda#0.91 9.25GB (9 934 589 919 bytes), 739kbps FlacCL#0.3 Groupsize 256 9.25GB (9 936 741 894 bytes), 739kbps FlacCL#0.4 9.25GB (9 936 310 351 bytes), 739kbps Flake#0.1 9.25GB (9 941 925 617 bytes), 739kbps So ~2MB difference with 9GB of music is not really a degeneration for the OpenCL port. Seing the GPU encoder speeds against Flake#0.1 for encoding is a funny eye opener still Edit: i never liked the idea flake and alike encoders can encode non-standard files, so -11 is a setting i´ll never touch. Better use a different codec then. No, they generate files perfectly compliant with the FLAC standard. Just not with it's subset that was created for a very limited purpose. This post has been edited by _m²_: Mar 9 2011, 14:14 |
|
|
|
Mar 9 2011, 20:50
Post
#252
|
|
|
Group: Members Posts: 13 Joined: 8-March 11 Member No.: 88816 |
Here i did a quick and dirty comparison, 414 files of mixed music, -8 FlaCuda#0.91 9.25GB (9 934 589 919 bytes), 739kbps FlacCL#0.3 Groupsize 256 9.25GB (9 936 741 894 bytes), 739kbps FlacCL#0.4 9.25GB (9 936 310 351 bytes), 739kbps Flake#0.1 9.25GB (9 941 925 617 bytes), 739kbps So ~2MB difference with 9GB of music is not really a degeneration for the OpenCL port. Seing the GPU encoder speeds against Flake#0.1 for encoding is a funny eye opener still Edit: i never liked the idea flake and alike encoders can encode non-standard files, so -11 is a setting i´ll never touch. Better use a different codec then. Wow, that are a lot of files OK, your test is without a doubt more consistent. Did you do your test with Flake or libFlake? (both available in CUETools). I always got the lowest bitrates with LibFlake... but it always took a lot of encoding time. But files are usually only encoded once, but decoded a lot of times. I am using FLAC -11 because I want good compression and love the features of the FLAC file format (e. g. error consistence) and the compatibility (e. g. oggdropxpd or lamedrop), in addition great decoding time (for fast replay gain processing). I was experimenting with other formats, APE and TAK, but went back to FLAC because of better decoding speed and compatibility. The non-standard FLAC files are no problem for me. I do not have a portable player and foobar works very good with non-std FLAC files, also do the different tagging-tools. But I can understand your concerns because of the non-standard files. I hope you understand why it is not so relevant for me, if the files do not follow 100% the reference. |
|
|
|
Mar 9 2011, 21:04
Post
#253
|
|
![]() Group: Members Posts: 847 Joined: 7-October 01 Member No.: 235 |
Wow, that are a lot of files OK, your test is without a doubt more consistent. Did you do your test with Flake or libFlake? (both available in CUETools). I always got the lowest bitrates with LibFlake... but it always took a lot of encoding time. But files are usually only encoded once, but decoded a lot of times. I am using FLAC -11 because I want good compression and love the features of the FLAC file format (e. g. error consistence) and the compatibility (e. g. oggdropxpd or lamedrop), in addition great decoding time (for fast replay gain processing). I was experimenting with other formats, APE and TAK, but went back to FLAC because of better decoding speed and compatibility. The non-standard FLAC files are no problem for me. I do not have a portable player and foobar works very good with non-std FLAC files, also do the different tagging-tools. But I can understand your concerns because of the non-standard files. I hope you understand why it is not so relevant for me, if the files do not follow 100% the reference. I used libflake#0.1 from cuetools, there is no flake#0.1 version afaik. I tested it back a while already against the CL version. The GPU encoders always compressed better at -8 on average. You may do your own tests with -11 For better decoding speed i think even wavpack can compete with flake -11, i used wavpack before i switched to flac cause of my hardware-player a while back. I dropped flac 1.21 in yesterday if anyone wants to know... Flac 1.21 -8 9.27GB (9 955 977 141 bytes), 740kbps Not much bigger you see but much to slow if you got used to handle your files with the GPU encoders. Edit: You may want to check if the current GPU encoder uses variable blocksize at all. Afaik libflake does and since this kicks in at compression -9 and higher this may be the resaon for the size increase. This post has been edited by Wombat: Mar 9 2011, 21:38 |
|
|
|
Mar 9 2011, 22:40
Post
#254
|
|
|
Group: Members Posts: 329 Joined: 30-September 05 From: London, Europe Member No.: 24805 |
|
|
|
|
Mar 9 2011, 22:43
Post
#255
|
|
|
Group: Members Posts: 13 Joined: 8-March 11 Member No.: 88816 |
I used libflake#0.1 from cuetools, there is no flake#0.1 version afaik. I tested it back a while already against the CL version. The GPU encoders always compressed better at -8 on average. You may do your own tests with -11 For better decoding speed i think even wavpack can compete with flake -11, i used wavpack before i switched to flac cause of my hardware-player a while back. I dropped flac 1.21 in yesterday if anyone wants to know... Flac 1.21 -8 9.27GB (9 955 977 141 bytes), 740kbps Not much bigger you see but much to slow if you got used to handle your files with the GPU encoders. Edit: You may want to check if the current GPU encoder uses variable blocksize at all. Afaik libflake does and since this kicks in at compression -9 and higher this may be the resaon for the size increase. I did not know that. Yes you are right. FLAC Headers say: FLACCL#0.3 -11 MinBlocksize 4096, MaxBlocksize 4096 FLACCL#0.4 -11 MinBlocksize 4096, MaxBlocksize 4096 libFlake#0.1 -11 MinBlocksize 0, MaxBlocksize 4096 libFlake#0.1 - 8 MinBlocksize 4608, MaxBlocksize 4608 I hope variable blocksize will be implemented in FLACCL somewhere in the future, would be great |
|
|
|
Apr 6 2011, 13:03
Post
#256
|
|
|
Group: Members Posts: 114 Joined: 31-May 07 Member No.: 43892 |
Just curious. Did anyone get the Cuda version somehow running on a Fermi GPU? Can't you just use the OpenCL version on a Fermi GPU? yep, that works with my GTX460 (GF104) even on WinXP, but I also would like to be able to compare the CUDA version to the OpenCL version in terms of compression and speed |
|
|
|
Apr 24 2011, 11:49
Post
#257
|
|
![]() Group: Members Posts: 2 Joined: 24-April 11 Member No.: 90052 |
I'll try to find a HD4xxx GPU to test it on... I have an 4850, if you want a benchmark done i'm willing to help But i'm not sure how to do is, so if someone could point me to somewhere where this is explained.. CUETools.FLACCL.cmd.exe --group-size 64 --cpu-threads 3 -8 1.wav -o 1.flac FLACCL#0.3, Copyright © 2010 Gregory S. Chudov. This is free software under the GNU GPLv3+ license; There is NO WARRANTY, to the extent permitted by law. <http://www.gnu.org/licenses/> for details. Filename : 1.wav File Info : 44100kHz; 2 channel; 16 bit; 00:05:29.9730000 Results : 27.88x; 32571641 bytes in 00:00:11.8366770 seconds; CPU = Amd Phenom II X3 720 This post has been edited by schauw: Apr 24 2011, 11:50 |
|
|
|
Jun 25 2011, 16:33
Post
#258
|
|
|
Group: Members Posts: 16 Joined: 20-June 11 Member No.: 91694 |
win7 x64
Gigabyte 470 gtx + Gigybyte OC GURU i7 920 6 GB RAM ------------------- i get damaged FLAC files with CUETools/FLACCL converting from image-files to FLAC tracks, wich does not happen with all other codecs (libFLAC, libFlake, flake) included in CUETools the demaged music files are playable and i didn't notice anything wrong untill i listened to them.. there are "gaps" wich appear randomly and sound as if someone lower loudness to mute and turn up again immediately. i wished i could show you what "gaps" i mean. does anyone of you folks has an idea why CUETools/FLACCL does that unlike other with codecs? maybe you have the same problem or at least you wont use FLACCL till its fixed.. EDIT: gaps appear randomly This post has been edited by s_PLASH: Jun 25 2011, 17:17 |
|
|
|
Jun 25 2011, 16:50
Post
#259
|
|
![]() Group: Developer Posts: 653 Joined: 2-October 08 From: Ottawa Member No.: 59035 |
What player do you use? Some players do not support non-subset flac (compression levels 9-11).
-------------------- CUETools 2.1.4
|
|
|
|
Jun 25 2011, 16:58
Post
#260
|
|
|
Group: Members Posts: 16 Joined: 20-June 11 Member No.: 91694 |
What player do you use? Some players do not support non-subset flac (compression levels 9-11). foobar2000 and compression level for CUETools/FLACCL was 8 EDIT: with softwareupdates (CUETools_2.1.2a, foobar2000 v1.1.7) - same problem. This post has been edited by s_PLASH: Jun 25 2011, 17:06 |
|
|
|
Jun 25 2011, 17:04
Post
#261
|
|
![]() Group: Developer Posts: 653 Joined: 2-October 08 From: Ottawa Member No.: 59035 |
Strange, this never happened before.
Please upload sample files (if possible, both source and converted) to the ftp server i mentioned in PM. -------------------- CUETools 2.1.4
|
|
|
|
Jun 25 2011, 17:07
Post
#262
|
|
![]() Group: Members Posts: 847 Joined: 7-October 01 Member No.: 235 |
I encode with FlacCL from day one and never had one single corrupt file. You may want to enable "-verify" under FlacCL options and try to split the files that don´t work atm, also let create logs if the files are accurately ripped. When there is any error we should be able to spot it that way. Did you overclock anything in your system, if so disable all overclocking for testing.
|
|
|
|
Jun 26 2011, 10:03
Post
#263
|
|
|
Group: Members Posts: 16 Joined: 20-June 11 Member No.: 91694 |
I encode with FlacCL from day one and never had one single corrupt file. You may want to enable "-verify" under FlacCL options and try to split the files that don´t work atm, also let create logs if the files are accurately ripped. When there is any error we should be able to spot it that way. Did you overclock anything in your system, if so disable all overclocking for testing. i'll convert some albums without oc, verify enabled, listen them (i'll need two or three days for it..) and post here again |
|
|
|
Jun 27 2011, 04:03
Post
#264
|
|
|
Group: Members Posts: 8 Joined: 9-June 11 Member No.: 91368 |
This speed is almost scary, instant reaction was "HAX!!1"
Crash on decoding a 24b/96KHz input from Foobar though EDIT: Was using 0.3 from the wiki. Pulled 0.4 from cuetools and it works fine. Jolly good sir, I salute you! EDIT 2: I can't make my joy clear enough. It is a happy happy day when the 100mbps router between me and my NAS serves as more of a bottleneck than the flac encoder on max quality. This post has been edited by Akdor 1154: Jun 27 2011, 04:11 |
|
|
|
Jul 5 2011, 17:31
Post
#265
|
|
|
Group: Members Posts: 16 Joined: 20-June 11 Member No.: 91694 |
i tried to encode again and again without OC but it seems to be impossible to get good tracks on my system. worst case -all tracks very demaged. when i enable "verify" in encoder settings, it sometimes doesn't work at all (see error picture). if it does, damaged tracks are produced also. with verified libFLAC, libFlake and flake -no errors, no damaged tracks.
http://imageshack.us/photo/my-images/687/capturegzh.jpg/ @ Gregory S. Chudov i'm sending the original wavpack audio + .cue + .log-files to you. hope it helps somehow. This post has been edited by s_PLASH: Jul 5 2011, 18:03 |
|
|
|
Jul 5 2011, 18:13
Post
#266
|
|
![]() Group: Members Posts: 847 Joined: 7-October 01 Member No.: 235 |
very weird, there must be a problem with your system. Does your system stand different stresstests? Is your nvidia GTX Gigabyte a "pre- overclocked" model? Since i read about different pre-overclocked cards fail in games you may try to underclock it for testing.
|
|
|
|
Jul 12 2011, 10:11
Post
#267
|
|
|
Group: Members Posts: 8 Joined: 23-January 10 Member No.: 77439 |
Hello, I'm using currently the latest version of Flaccl and I'm having problems encoding a wave file :
When using the command-line encoder only : CODE Unhandled Exception: System.Exception: ChannelCount must be 2. at CUETools.Codecs.FLACCL.FLACCLWriter..ctor(String path, Stream IO, AudioPCM Config pcm) at CUETools.FLACCL.cmd.Program.Main(String[] args) Can't FLACCL process mono files ? In hope of having a bug-free GPU FLAC encoder, here is the specific track. http://bit.ly/qJOozq This post has been edited by eleria: Jul 12 2011, 10:43 |
|
|
|
Jul 13 2011, 23:56
Post
#268
|
|
|
Group: Members Posts: 14 Joined: 7-June 06 Member No.: 31567 |
flaccl does not work with 24-Bit files
but flac 1.2.1 does anyway... here are my results- W7 x64 my HD6950 its 236.41x faster than my i7 920 slbej @ 2.8ghz. cd.wav 658MB cd.rar 506MB (Best setting, similar speed as Flac1.2.1 cpu version) cd.flac 433MB -8 (similar speed as WinRar cpu version) cd.flac 413MB -11 (OpenCL version) default is -7 cd.ape 396MB insane 260seconds or 4.3minutes, cd.wv 425MB -h -x 48seconds. cd.wv 429MB -h 28sec. cd.wv 435MB -x 35sec. http://www.cuetools.net/wiki/FLACCL http://www.wavpack.com/ http://www.monkeysaudio.com/ c:\FLAC\flaccl03>flaccl -11 cd1.wav FLACCL#0.3, Copyright © 2010 Gregory S. Chudov. This is free software under the GNU GPLv3+ license; There is NO WARRANTY, to the extent permitted by law. <Licenses - GNU Project - Free Software Foundation> for details. Filename : cd1.wav File Info : 44100kHz; 2 channel; 16 bit; 01:05:14.1880000 Results : 236.41x; 433786700 bytes in 00:00:16.5565043 seconds; ------------------------------------------------------ c:\FLAC>flac -8 cd1.wav flac 1.2.1, Copyright © 2000,2001,2002,2003,2004,2005,2006,2007 Josh Coalson flac comes with ABSOLUTELY NO WARRANTY. This is free software, and you are welcome to redistribute it under certain conditions. Type `flac' for details. cd1.wav: WARNING: skipping unknown sub-chunk 'fact' (use --keep-foreign-metadata to keep) cd1.wav: wrote 454187072 bytes, ratio=0.658 ------------------------------------------------------ Gateway P-7811FX Intel P8400 @ 2.26GHZ 4GB RAM Nvidia 9800M GTS (G94M) d:\FLAC\flaccl03>flaccl -11 cd1.wav FLACCL#0.3, Copyright © 2010 Gregory S. Chudov. This is free software under the GNU GPLv3+ license; There is NO WARRANTY, to the extent permitted by law. <Licenses - GNU Project - Free Software Foundation> for details. Filename : cd1.wav File Info : 44100kHz; 2 channel; 16 bit; 01:05:14.1880000 Results : 93.67x; 433869020 bytes in 00:00:41.7887280 seconds; Result: 413MB. ******************************************** d:\FLAC\FlaCuda091>flacuda -11 cd1.wav FlaCuda#.91, Copyright © 2009 Gregory S. Chudov. This is free software under the GNU GPLv3+ license; There is NO WARRANTY, to the extent permitted by law. <Licenses - GNU Project - Free Software Foundation> for details. Filename : cd1.wav File Info : 44100kHz; 2 channel; 16 bit; 01:05:14.1880000 Results : 70.25x; 433236904 bytes in 00:00:55.7181090 seconds; |
|
|
|
Jul 14 2011, 16:53
Post
#269
|
|
|
Group: Members Posts: 14 Joined: 7-June 06 Member No.: 31567 |
QUOTE (David Bryant) Hello!
Thanks for the info...I did not realize that the OpenCL version of FLAC actually compressed that much better than FLAC itself, that's interesting! (I knew it was faster, obviously). I would love to have time to try to get WavPack working on OpenCL, but I have too many other projects. It would be great if someone else had a go at it (I would be happy to help). Cheers! David Bryant <david @ wavpack.com> This post has been edited by db1989: Jul 15 2011, 19:28
Reason for edit: quotation time and link were incorrect (were from above post); removed
|
|
|
|
Jul 15 2011, 19:11
Post
#270
|
|
|
Group: Members Posts: 14 Joined: 7-June 06 Member No.: 31567 |
with Ramdrive & gpu overclocking...
r:\flaccl03>flaccl -11 cd1.wav FLACCL#0.3, Copyright © 2010 Gregory S. Chudov. This is free software under the GNU GPLv3+ license; There is NO WARRANTY, to the extent permitted by law. <http://www.gnu.org/licenses/> for details. Filename : cd1.wav File Info : 44100kHz; 2 channel; 16 bit; 01:05:14.1880000 Results : 250.91x; 433786700 bytes in 00:00:15.6000274 seconds This post has been edited by db1989: Jul 15 2011, 19:27
Reason for edit: removing pointless quotation; can everyone try to avoid that?
|
|
|
|
Jul 15 2011, 19:58
Post
#271
|
|
![]() Group: Developer Posts: 653 Joined: 2-October 08 From: Ottawa Member No.: 59035 |
flaccl does not work with 24-Bit files flaccl 0.4 (from CUETools 2.1.2) does. But it's a bit experimental, and there's at least one known (if rare) bug in it, so i would wait for the next release. Results : 250.91x; 433786700 bytes in 00:00:15.6000274 seconds Thanks for the stats, i only have NVIDIA cards myself, so it was really useful. QUOTE (David Bryant) I would love to have time to try to get WavPack working on OpenCL, but I have too many other projects. Unfortunately me too at the moment. Also i doubt that WavPack can really benefit from GPU acceleration. This post has been edited by Gregory S. Chudov: Jul 15 2011, 20:03 -------------------- CUETools 2.1.4
|
|
|
|
Jul 15 2011, 20:21
Post
#272
|
|
![]() Group: Members Posts: 847 Joined: 7-October 01 Member No.: 235 |
flaccl does not work with 24-Bit files flaccl 0.4 (from CUETools 2.1.2) does. But it's a bit experimental, and there's at least one known (if rare) bug in it, so i would wait for the next release. I pretty much think Juan talks about 24bit files with higher sampling frequency like 96kHz. Afaik FlacCL can only do 44.1kHz like with deoded HDCD files. |
|
|
|
Jul 31 2011, 02:05
Post
#273
|
|
|
Group: Members Posts: 14 Joined: 7-June 06 Member No.: 31567 |
switched to Linux!
installed Ubuntu x64... have downloaded the tar ball, cuetoolsnet-CUETools.Codecs.FLACCL.tar.gz what to do next? no .sh, .bin or .py thanks. P.S. Yes, i mean 192khz 24-Bit or 32-bit files. |
|
|
|
Jul 31 2011, 08:46
Post
#274
|
|
![]() Group: Developer Posts: 3035 Joined: 2-December 07 Member No.: 49183 |
|
|
|
|
Jul 31 2011, 19:39
Post
#275
|
|
|
Group: Members Posts: 14 Joined: 7-June 06 Member No.: 31567 |
have downloaded the tar ball, cuetoolsnet-CUETools.Codecs.FLACCL.tar.gz what to do next? AFAIK: download the whole package, learn C#, learn OpenCL, port it to Linux, compile, use. install fglrx install sdk $sudo tar xvfz amd-app-sdk-v2.4-lnx64.tgz -C /opt $sudo tar xvfz icd-registration.tgz -C / $sudo apt-get install <necessary software> $sudo make all $sudo make install isn't enough? This post has been edited by JuanPabloCuervo: Jul 31 2011, 19:44 |
|
|
|
![]() ![]() |
|
Lo-Fi Version | Time is now: 19th June 2013 - 03:59 |