Welcome to Doom9's Forum, THE in-place to be for everyone interested in DVD conversion.

Before you start posting please read the forum rules. By posting to this forum you agree to abide by the rules.

 

Go Back   Doom9's Forum > Capturing and Editing Video > VapourSynth

Reply
 
Thread Tools Search this Thread Display Modes
Old 31st August 2017, 18:55   #1  |  Link
HolyWu
Registered User
 
HolyWu's Avatar
 
Join Date: Aug 2006
Location: Taiwan
Posts: 639
eedi3

https://github.com/HomeOfVapourSynth...urSynth-EEDI3/

There are two filters in this plugin, one using pure CPU and the other using OpenCL. Unfortunely one of the heavy loop can't get parallel execution on GPU (or I'm too dumb to find a way to conquer it) and still need to be executed on CPU, the OpenCL version may not necessarily run faster than pure CPU version. Anyway, here is my rough test on my E3-1230v3 and (poor) GTX 660.

AVS EEDI3 v0.9.2.1 x64
eedi3(opt=1, pure c): 1.15 fps
eedi3(opt=2, sse2): 3.81 fps

VS EEDI3 r2 x64
EEDI3(opt=1, pure c): 1.22 fps
EEDI3(opt=2, sse2): 4.19 fps
EEDI3(opt=3, sse4.1): 4.89 fps
EEDI3(opt=4, avx): 6.18 fps
EEDI3(opt=5, avx512): unavailable
EEDI3CL(opt=1, pure c): 4.88 fps
EEDI3CL(opt=2, sse2): 7.17 fps

Sample video used for benchmarking.

Last edited by HolyWu; 13th October 2017 at 08:52.
HolyWu is offline   Reply With Quote
Old 31st August 2017, 19:03   #2  |  Link
feisty2
I'm Siri
 
feisty2's Avatar
 
Join Date: Oct 2012
Location: Los Angeles, California
Posts: 2,130
with floating point support, great, the one comes with vsinstaller can rest in peace now
__________________
If I got new ideas, will post here: https://github.com/IFeelBloated
feisty2 is offline   Reply With Quote
Old 4th October 2017, 15:19   #3  |  Link
DJATOM
Registered User
 
DJATOM's Avatar
 
Join Date: Sep 2010
Location: Ukraine, Bohuslav
Posts: 185
Debian 8, gcc 4.9, and I can't build it there: https://pastebin.com/km3g2hKS. If compiler is too old (most likely that), which gcc version should I use?
DJATOM is offline   Reply With Quote
Old 4th October 2017, 16:02   #4  |  Link
HolyWu
Registered User
 
HolyWu's Avatar
 
Join Date: Aug 2006
Location: Taiwan
Posts: 639
Quote:
Originally Posted by DJATOM View Post
Debian 8, gcc 4.9, and I can't build it there: https://pastebin.com/km3g2hKS. If compiler is too old (most likely that), which gcc version should I use?
I guess GCC 5.x series could do the job.
HolyWu is offline   Reply With Quote
Old 13th October 2017, 09:03   #5  |  Link
HolyWu
Registered User
 
HolyWu's Avatar
 
Join Date: Aug 2006
Location: Taiwan
Posts: 639
Update r2.
  • EEDI3: Add avx and avx512 instruction sets. Remove avx2 instruction set.
  • EEDI3CL: Remove sse4.1 and avx2 instruction sets.
  • Minor speed improvement.

The benchmark in the first post is revised.
HolyWu is offline   Reply With Quote
Old 15th October 2017, 18:54   #6  |  Link
edcrfv94
Registered User
 
Join Date: Apr 2015
Posts: 77
Code:
import vapoursynth as vs

core = vs.get_core(threads=0)
core.max_cache_size = 32000

c = core.std.BlankClip(width=1920, height=1080, format=vs.YUV420P8, length=2000)
c = core.eedi3m.EEDI3(c, field=0, opt=4)
c.set_output()
AMD ryzen 1950x stock

VS EEDI3 r1 x64
AVX2: 33.57fps

VS EEDI3 r2 x64
pure c: 6.14fps
sse2: 21.87fps
sse4.1: 27.58fps
AVX: 35fps
edcrfv94 is offline   Reply With Quote
Old 19th October 2017, 06:10   #7  |  Link
HolyWu
Registered User
 
HolyWu's Avatar
 
Join Date: Aug 2006
Location: Taiwan
Posts: 639
Quote:
Originally Posted by Stephen R. Savage View Post
AVX-512 code seems to work.

It looks like not all the code paths are optimized for AVX-512, as it spent some time at the AVX turbo frequency.
Thanks. Could you please try again with https://www.mediafire.com/file/tb7io.../EEDI3-test.7z and see whether it makes any difference?
HolyWu is offline   Reply With Quote
Old 26th October 2017, 14:05   #8  |  Link
DJATOM
Registered User
 
DJATOM's Avatar
 
Join Date: Sep 2010
Location: Ukraine, Bohuslav
Posts: 185
It would be nice if eedi3cl will have dw parameter just like it implemented in nnedi3cl. In that case I can dispose of Transpose calls in my script when CL versions is used (I'm using "sclip=nnedi3 clip").
DJATOM is offline   Reply With Quote
Old 24th November 2017, 21:53   #9  |  Link
KingLir
Registered User
 
Join Date: Jan 2017
Posts: 143
I am getting the following when building on macOS (latest 10.13.1 with latest eedi3 from GitHub). Any ideas ? I will appreciate any help.

https://pastebin.com/T1TJha0D

Last edited by KingLir; 24th November 2017 at 21:57.
KingLir is offline   Reply With Quote
Old 24th November 2017, 23:00   #10  |  Link
Are_
Registered User
 
Join Date: Jun 2012
Location: Ibiza, Spain
Posts: 279
Your clang is too old, you need clang 5 or greater. If there isn't anything newer wait for it or use an older release without avx512 support.
Are_ is offline   Reply With Quote
Old 24th November 2017, 23:10   #11  |  Link
KingLir
Registered User
 
Join Date: Jan 2017
Posts: 143
Quote:
Originally Posted by Are_ View Post
Your clang is too old, you need clang 5 or greater. If there isn't anything newer wait for it or use an older release without avx512 support.
Are you sure ? It's the latest Xcode and it says (also in the log I posted above) that it's clang 900.0.38

$ clang --version
Apple LLVM version 9.0.0 (clang-900.0.38)
Target: x86_64-apple-darwin17.2.0
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
KingLir is offline   Reply With Quote
Old 24th November 2017, 23:24   #12  |  Link
Are_
Registered User
 
Join Date: Jun 2012
Location: Ibiza, Spain
Posts: 279
I use Linux and I can replicate that error only if I use clang-4.0.1, with clang-5.0.0 it builds OK.
Apple's clang will be based on vanilla clang-5.x.x probably when they change that "clang-900" version string to something higher.
Are_ is offline   Reply With Quote
Old 24th November 2017, 23:53   #13  |  Link
KingLir
Registered User
 
Join Date: Jan 2017
Posts: 143
Quote:
Originally Posted by Are_ View Post
I use Linux and I can replicate that error only if I use clang-4.0.1, with clang-5.0.0 it builds OK.
Apple's clang will be based on vanilla clang-5.x.x probably when they change that "clang-900" version string to something higher.
I see. Anyone knows how I can set it up on macOS ?
I have brew working and everything already installed.
Can't figure what command or edit I need to do for the makefile / configure....
KingLir is offline   Reply With Quote
Old 25th November 2017, 05:04   #14  |  Link
HolyWu
Registered User
 
HolyWu's Avatar
 
Join Date: Aug 2006
Location: Taiwan
Posts: 639
Quote:
Originally Posted by KingLir View Post
I see. Anyone knows how I can set it up on macOS ?
I have brew working and everything already installed.
Can't figure what command or edit I need to do for the makefile / configure....
Try again with the latest commit.
HolyWu is offline   Reply With Quote
Old 25th November 2017, 08:23   #15  |  Link
KingLir
Registered User
 
Join Date: Jan 2017
Posts: 143
Quote:
Originally Posted by HolyWu View Post
Try again with the latest commit.
Thanks! all previous ones seems to fixed - now getting a new one:

$ make
CXXLD libeedi3m.la
ld: library not found for -lOpenCL
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [libeedi3m.la] Error 1

Last edited by KingLir; 25th November 2017 at 14:31.
KingLir is offline   Reply With Quote
Old 25th November 2017, 18:24   #16  |  Link
HolyWu
Registered User
 
HolyWu's Avatar
 
Join Date: Aug 2006
Location: Taiwan
Posts: 639
Quote:
Originally Posted by KingLir View Post
Thanks! all previous ones seems to fixed - now getting a new one:

$ make
CXXLD libeedi3m.la
ld: library not found for -lOpenCL
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [libeedi3m.la] Error 1
The error is quite obvious. The linker can't find the OpenCL library. Are you sure it's installed? Or maybe you need to pass additional flags to tell the linker where it's located?
HolyWu is offline   Reply With Quote
Old 25th November 2017, 18:50   #17  |  Link
KingLir
Registered User
 
Join Date: Jan 2017
Posts: 143
Quote:
Originally Posted by HolyWu View Post
The error is quite obvious. The linker can't find the OpenCL library. Are you sure it's installed? Or maybe you need to pass additional flags to tell the linker where it's located?
Oh, I google it and found that replacing " -lOpenCL " with " -framework OpenCL " will work - and indeed it worked.
Thanks again !
KingLir is offline   Reply With Quote
Old 23rd December 2017, 13:17   #18  |  Link
HolyWu
Registered User
 
HolyWu's Avatar
 
Join Date: Aug 2006
Location: Taiwan
Posts: 639
Update r3.
  • EEDI3: Fix incorrect data type in AVX512 code path for 32 bit depth.
  • EEDI3CL: Fix decimal-point character issue in different locales.
  • EEDI3CL: Use snprintf to convert floating point to string for more precise value.
  • EEDI3CL: Store the compiled binary for reuse in the offline cache located in $HOME/.boost_compute on UNIX-like systems and in %APPDATA%/boost_compute on Windows.
  • EEDI3CL: Minor performance improvement by explicitly specify work-group size.
HolyWu is offline   Reply With Quote
Old 11th July 2018, 00:23   #19  |  Link
Myrsloik
Professional Code Monkey
 
Myrsloik's Avatar
 
Join Date: Jun 2003
Location: Ikea Chair
Posts: 2,000
Quote:
Originally Posted by HolyWu View Post
Update r3.
  • EEDI3: Fix incorrect data type in AVX512 code path for 32 bit depth.
  • EEDI3CL: Fix decimal-point character issue in different locales.
  • EEDI3CL: Use snprintf to convert floating point to string for more precise value.
  • EEDI3CL: Store the compiled binary for reuse in the offline cache located in $HOME/.boost_compute on UNIX-like systems and in %APPDATA%/boost_compute on Windows.
  • EEDI3CL: Minor performance improvement by explicitly specify work-group size.
Would you consider renaming the dll to eedi3m for the next release? Having the same filename creates even more confusion. No hurry.
__________________
VapourSynth - proving that scripting languages and video processing isn't dead yet
Myrsloik is offline   Reply With Quote
Old 12th July 2018, 03:06   #20  |  Link
HolyWu
Registered User
 
HolyWu's Avatar
 
Join Date: Aug 2006
Location: Taiwan
Posts: 639
Quote:
Originally Posted by Myrsloik View Post
Would you consider renaming the dll to eedi3m for the next release? Having the same filename creates even more confusion. No hurry.
Since it probably won't have a next release for a long time unless a bug is found, I just reupload the archive in GitHub release with only filename changed.
HolyWu is offline   Reply With Quote
Reply

Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT +1. The time now is 01:39.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, vBulletin Solutions Inc.