
рдХрдИ рд▓реЛрдЧреЛрдВ рдиреЗ рдорд╣рд╛рди рдФрд░ рднрдпрд╛рдирдХ рддреЗрдЬ рдлреВрд░рд┐рдпрд░ рдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдо (рдПрдлрдПрдлрдЯреА) рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реБрдирд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ
рдЬреЗрдкреАрдИрдЬреА / рдПрдордкреАрдИрдЬреА рд╕рдВрдкреАрдбрд╝рди рдФрд░ рдзреНрд╡рдирд┐ рдХреА рдЖрд╡реГрддреНрддрд┐ рдЕрдкрдШрдЯрди (рддреБрд▓реНрдпрдХрд╛рд░рдХ, рдЖрджрд┐) рдХреЗ рдЕрдкрд╡рд╛рдж рдХреЗ рд╕рд╛рде рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЕрдХреНрд╕рд░ рдПрдХ рдЕрд╕реНрдкрд╖реНрдЯ рдкреНрд░рд╢реНрди рдмрдирд╛ рд░рд╣рддрд╛ рд╣реИред ред
рд╣рд╛рд▓ рд╣реА рдореЗрдВ, рдореБрдЭреЗ рдХреЙрдирд╡реЗ рдХреЗ рд▓рд╛рдЗрдл рдЧреЗрдо рдХрд╛ рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдорд┐рд▓рд╛, рдЬреЛ рддреЗрдЬреА рд╕реЗ рдлреВрд░рд┐рдпрд░ рдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ - рдФрд░ рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЖрдкрдХреЛ рдмрд╣реБрдд рд╣реА рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рд╕реНрдерд╛рдиреЛрдВ рдореЗрдВ рдЗрд╕ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреА рдкреНрд░рдпреЛрдЬреНрдпрддрд╛ рдХреЛ рд╕рдордЭрдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИред
рдирд┐рдпрдо
рдЖрдЗрдП рд╣рдо рдХреНрд▓рд╛рд╕рд┐рдХ "рдЬреАрд╡рди" рдХреЗ рдирд┐рдпрдореЛрдВ рдХреЛ рдпрд╛рдж рдХрд░рддреЗ рд╣реИрдВ - рд╡рд░реНрдЧ рдХреЛрд╢рд┐рдХрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдПрдХ рд╡рд░реНрдЧ рдкрд░, рдПрдХ рдЬреАрд╡рд┐рдд рдХреЛрд╢рд┐рдХрд╛ рдорд░ рдЬрд╛рддреА рд╣реИ рдЕрдЧрд░ рдЗрд╕рдореЗрдВ 3 рдпрд╛ рдЙрд╕рд╕реЗ рдХрдо 2 рдкрдбрд╝реЛрд╕реА рд╣реЛрддреЗ рд╣реИрдВ, рдФрд░ рдЕрдЧрд░ рдПрдХ рдЦрд╛рд▓реА рд╕реЗрд▓ рдореЗрдВ рдареАрдХ 3 рдкрдбрд╝реЛрд╕реА рд╣реЛрддреЗ рд╣реИрдВ - рддреЛ рдпрд╣ рдкреИрджрд╛ рд╣реЛрддрд╛ рд╣реИред рддрджрдиреБрд╕рд╛рд░, рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЗ рдкреНрд░рднрд╛рд╡реА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП, рд╕реЗрд▓ рдХреЗ рдЖрд╕рдкрд╛рд╕ рдкрдбрд╝реЛрд╕рд┐рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдЬрд▓реНрджреА рд╕реЗ рдЧрд┐рдирдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред
рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХрд╛ рдПрдХ рдкреВрд░рд╛ рд╕рдореВрд╣ рд╣реИ (рдореЗрд░реЗ
рдЬреЗрдПрд╕ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕рд╣рд┐рдд)ред рд▓реЗрдХрд┐рди рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдПрдХ рдЧрдгрд┐рддреАрдп рд╕рдорд╛рдзрд╛рди рд╣реИ рдЬреЛ рдШрдиреЗ рднрд░реЗ рд╣реБрдП рдЦреЗрддреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫреА рдЧрддрд┐ рджреЗ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдЬрд▓реНрджреА рд╕реЗ рдирд┐рдпрдореЛрдВ рдХреА рдмрдврд╝рддреА рдЬрдЯрд┐рд▓рддрд╛ рдФрд░ рд╕рдВрдХреНрд╖реЗрдкрдг рдХреЗ рдХреНрд╖реЗрддреНрд░ / рдорд╛рддреНрд░рд╛ рдХреЗ рд╕рд╛рде рдЕрдВрддрд░рд╛рд▓ рдореЗрдВ рдЪрд▓рд╛ рдЬрд╛рддрд╛ рд╣реИ - рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕реНрдореВрдерд▓рд╛рдЗрдлрд╝-рдЬреИрд╕реЗ (
1 ,
2 ), рдФрд░ 3 рдбреА рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВред
рдПрдлрдПрдлрдЯреА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди
рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рд╡рд┐рдЪрд╛рд░ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:
- рд╣рдо рдпреЛрдЧ рдореИрдЯреНрд░рд┐рдХреНрд╕ (рдлрд┐рд▓реНрдЯрд░) рдмрдирд╛рддреЗ рд╣реИрдВ, рдЬрд╣рд╛рдВ 1 рдХреЛрд╢рд┐рдХрд╛рдУрдВ рдореЗрдВ рд╣реЛрддреЗ рд╣реИрдВ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рд░рд╛рд╢рд┐ рд╣рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ (8 рдЗрдХрд╛рдЗрдпрд╛рдВ, рд╢реЗрд╖ рд╢реВрдиреНрдп)ред рд╣рдо рдореИрдЯреНрд░рд┐рдХреНрд╕ рдкрд░ рдПрдХ рд╕реАрдзрд╛ рдлреВрд░рд┐рдпрд░ рд░реВрдкрд╛рдВрддрд░рдг рдХрд░рддреЗ рд╣реИрдВ (рдЗрд╕реЗ рдХреЗрд╡рд▓ 1 рдмрд╛рд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ)ред
- рд╣рдо рдПрдХ рд╕реАрдзрд╛ рдлреВрд░рд┐рдпрд░ рд░реВрдкрд╛рдВрддрд░рдг рдЦреЗрд▓ рдореИрджрд╛рди рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде рдПрдХ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдкрд░ рдХрд░рддреЗ рд╣реИрдВред
- рд╣рдо рдкрд░рд┐рдгрд╛рдо рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рддрддреНрд╡ рдХреЛ рдкреИрд░рд╛рдЧреНрд░рд╛рдл 1 рд╕реЗ "рд╕рдВрдХреНрд╖реЗрдк" рдХреЗ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХреЗ рд╕рдВрдЧрдд рддрддреНрд╡ рд╕реЗ рдЧреБрдгрд╛ рдХрд░рддреЗ рд╣реИрдВред
- рд╣рдо рдЙрд▓рдЯрд╛ рдлреВрд░рд┐рдпрд░ рд░реВрдкрд╛рдВрддрд░рдг рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рд╕реЗрд▓ рдХреЗ рд▓рд┐рдП рдкрдбрд╝реЛрд╕рд┐рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рдпреЛрдЧ рдХреЗ рд╕рд╛рде рдПрдХ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рд╣рдореЗрдВ рдЪрд╛рд╣рд┐рдПред
рдЗрд╕ рдкреВрд░реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдХрдирд╡рд┐рдХреНрд╢рди рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред
C ++ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ
FFTW рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЬреАрд╕реА рдореЗрдВ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдВрдЬреА:
gcc life.cpp -lfftw3 -lm -lstdc ++
рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЛ рдЬрдЯрд┐рд▓ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдореЗрдВ рдмрджрд▓рд╛рд╡ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рд░рдирдЯрд╛рдЗрдо рдкрд░ рдЫрд╡рд┐рдпрд╛рдВ:рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдлрд╝рд┐рд▓реНрдЯрд░ рдореИрдЯреНрд░рд┐рдХреНрд╕ (рдореВрд▓ рдКрдкрд░реА рдмрд╛рдПрдВ рдХреЛрдиреЗ рд╣реИ, рдлрд╝реАрд▓реНрдб "рд▓реВрдкреНрдб" рд╣реИ):

рдкреНрд░рддреНрдпрдХреНрд╖ FFT рдХреЗ рдмрд╛рдж рдлрд┐рд▓реНрдЯрд░ рдХрд╛ рдЕрд╕рд▓реА рд╣рд┐рд╕реНрд╕рд╛:

рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдХреНрд╖реЗрддреНрд░ 1 рдЧреНрд▓рд╛рдЗрдбрд░ рд╣реИ:

рд╕реНрд░реЛрдд рдХреНрд╖реЗрддреНрд░ рдХрд╛ FFT, рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдФрд░ рдХрд╛рд▓реНрдкрдирд┐рдХ рднрд╛рдЧ:


рдлрд╝рд┐рд▓реНрдЯрд░ рдореИрдЯреНрд░рд┐рдХреНрд╕ рджреНрд╡рд╛рд░рд╛ рдЧреБрдгрд╛ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж:


рдЙрд▓рдЯрд╛ рдПрдлрдПрдлрдЯреА рдХреЗ рдмрд╛рдж, рд╣рдореЗрдВ рд░рд╛рд╢рд┐ рдорд┐рд▓рддреА рд╣реИ:

рдкрд░рд┐рдгрд╛рдо рдХрд╛рдлреА рдЕрдкреЗрдХреНрд╖рд┐рдд рд╣реИ:
рдлрд╝реАрд▓реНрдб рдХрд╛ "рд▓реВрдкрд┐рдВрдЧ" рдПрдлрдПрдлрдЯреА рдХреЗ рдХрд╛рд░рдг рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИред
рдПрдлрдПрдлрдЯреА рдмрдиреНрд╕
- рдЖрдк рдХрд┐рд╕реА рднреА рдЧреБрдгрд╛рдВрдХ рд╡рд╛рд▓реЗ рдХрд┐рд╕реА рднреА рддрддреНрд╡ рдХреЛ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ - рдФрд░ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рдордп рдирд┐рд╢реНрдЪрд┐рдд рд░рд╣рддрд╛ рд╣реИ , рдПрди 2 logNред рдпрд╛рдиреА рдпрджрд┐ рд╢рд╛рд╕реНрддреНрд░реАрдп рдЬреАрд╡рди рдХреЗ рд▓рд┐рдП - рднрд░реЗ рд╣реБрдП рдЦреЗрддреЛрдВ рдкрд░ рдкрд╛рд░рдВрдкрд░рд┐рдХ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдЕрднреА рднреА рдХрд╛рдлреА рддреЗрдЬ рд╣реИрдВ, рддреЛ рд╕рдорди рдХреЗ рдХреНрд╖реЗрддреНрд░ / рдорд╛рддреНрд░рд╛ рдореЗрдВ рд╡реГрджреНрдзрд┐ рдХреЗ рд╕рд╛рде - рд╡реЗ рдзреАрдореЗ рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ, рдФрд░ рдПрдлрдПрдлрдЯреА рдХреА рдЧрддрд┐ рдирд┐рд╢реНрдЪрд┐рдд рд░рд╣рддреА рд╣реИред
- FFT - рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд▓рд┐рдЦрд╛ рд╣реИ, рдбрд┐рдмрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрдиреБрдХреВрд▓рд┐рдд рд╣реИ - рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреА рд╕рднреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП: sse, sse2, avx, altivec рдФрд░ neonред
- рдЖрдк рдЖрд╕рд╛рдиреА рд╕реЗ рддреИрдпрд╛рд░ рдХрд┐рдП рдЧрдП рдорд▓реНрдЯреАрдкреНрд░реЛрд╕реЗрд╕рд░ рдФрд░ CUDA / OpenCL FFT рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рд▓реЗ рдХрд░ рд╕рднреА рдкреНрд░реЛрд╕реЗрд╕рд░ рдФрд░ рд╡реАрдбрд┐рдпреЛ рдХрд╛рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдлрд┐рд░, рдЖрдкрдХреЛ рдПрдлрдПрдлрдЯреА рдЕрдиреБрдХреВрд▓рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрд░рд╡рд╛рд╣ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ FFTW рдорд▓реНрдЯреА-рдкреНрд░реЛрд╕реЗрд╕рд░ рдирд┐рд╖реНрдкрд╛рджрди (рдирд┐рд░реНрдорд╛рдг рдХреЗ рджреМрд░рд╛рди (рдУрдкрдиреЗрдмрд▓-рдУрдкрдирдореНрдк)) рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рдЙрддрдирд╛ рд╣реА рдмрдбрд╝рд╛ рдХреНрд╖реЗрддреНрд░ - рдХрдо рддреБрд▓реНрдпрдХрд╛рд▓рди рд╣рд╛рдирд┐ред
- 3 рдбреА рд╕реНрдкреЗрд╕ рдкрд░ рднреА рдпрд╣реА рджреГрд╖реНрдЯрд┐рдХреЛрдг рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИред
рдПрдХ "рднреЛрд▓реА" рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╕рд╛рде рдЧрддрд┐ рдХреА рддреБрд▓рдирд╛ рдХрд░реЗрдВ
рдПрдлрдПрдлрдЯреАрдбрдмреНрд▓реНрдпреВ рдХреЛ рдПрдХрд▓ рдкрд░рд┐рд╢реБрджреНрдзрддрд╛ рдореЛрдб рдореЗрдВ рдЗрдХрдЯреНрдард╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ (-рдиреЗрдмрд▓-рдлреНрд▓реЛрдЯ, рд▓рдЧрднрдЧ 1.5 рдЧреБрдирд╛ рдХреА рдЧрддрд┐ рдореЗрдВ рд╡реГрджреНрдзрд┐ рджреЗрддрд╛ рд╣реИ)ред рдкреНрд░реЛрд╕реЗрд╕рд░ - Core2Duo E8600ред gcc 4.7.2 -O3
рдПрдХ рднреЛрд▓реА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рд╕реНрд░реЛрдд рдХреЛрдб for (int i=8; i<1000; i++) { delta[i][0] = (lrand48() % 21)-10; delta[i][1] = (lrand48() % 21)-10; } #define NUMDELTA 18 for(int frame=0;frame<10;frame++) { double start = ticks(); for (y=0; y<SIZE; y++) for (x=0; x<SIZE; x++) { int sum=0; for(int i=0;i<NUMDELTA;i++) sum+=array[readpage][(SIZE+y+delta[i][0]) % SIZE][(SIZE+x+delta[i][1]) % SIZE]; if(array[readpage][y][x]) array[1-readpage][y][x] = (sum>3 || sum<2)?0:1;else array[1-readpage][y][x] = (sum==3)?1:0; } readpage = 1-readpage; printf("NaiveDelta: %10.10f\n", ticks()-start); }
рдкрд░реАрдХреНрд╖рдг рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди | рдХрд┐рддрдиреЗ рдХреЛрд╢рд┐рдХрд╛рдУрдВ рдХреЛ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдлрдПрдлрдЯреА рдФрд░ рднреЛрд▓реЗ рдПрд╣рд╕рд╛рд╕ рдХреА рдЧрддрд┐ рд╣реИ |
1 рдХреЛрд░, 512x512 | 29 |
2 рдХреЛрд░, 512x512 | 18 |
1 рдХреЛрд░, 4096x4096 | 88 |
2 рдХреЛрд░, 4096x4096 | 65 |
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рд╕реНрдкрд░реНрд╢реЛрдиреНрдореБрдЦ рджрд╡рд╛рдПрдВ рднреА рдПрдлрдПрдлрдЯреА рдХреЗ рдЦрд┐рд▓рд╛рдл рд╣реИрдВ - рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдкрдХреЛ рд╕реИрдХрдбрд╝реЛрдВ рдФрд░ рд╣рдЬрд╛рд░реЛрдВ рдХреЛрд╢рд┐рдХрд╛рдУрдВ рдХреЛ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ - рддреЛ рдПрдлрдПрдлрдЯреА рдЬреАрдд рдЬрд╛рдПрдЧрд╛ред
рдЕрдкрдбреЗрдЯ:рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рдирд┐рдХрд▓рд╛, FFTW, FFTW_ESTIMATE рдзреНрд╡рдЬ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╕рдордп, рдЗрд╖реНрдЯрддрдо FFT рдЧрдгрдирд╛ рдпреЛрдЬрдирд╛рдУрдВ рд╕реЗ рджреВрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред FFTW_MEASURE рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╕рдордп, рдЧрддрд┐ рдореЗрдВ рдХрд╛рдлреА рд╡реГрджреНрдзрд┐ рд╣реБрдИ рд╣реИ, рдФрд░ рд╕реНрдерд┐рддрд┐ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЕрдзрд┐рдХ рдЦреБрд╢ рд╣реИ (рдЬрдм 18 рд╕реЗ рдХрдо рдХреЛрд╢рд┐рдХрд╛рдУрдВ рдХрд╛ рдпреЛрдЧ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рднреЛрд▓реА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЕрдЪрд╛рдирдХ 3 рдЧреБрдирд╛ рддреЗрдЬ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣рд╛рдВ рд╕рдм рдХреБрдЫ 18 рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ):
рдкрд░реАрдХреНрд╖рдг рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди | рдПрдлрдПрдлрдЯреА рдФрд░ рднреЛрд▓реЗ рдПрд╣рд╕рд╛рд╕ рдХреА рдЧрддрд┐ рдХреЛ рд╕рдВрдХреНрд╖реЗрдк рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рддрдиреА рдХреЛрд╢рд┐рдХрд╛рдПрдВ рд╣реИрдВ |
1 рдХреЛрд░, 512x512 | 18 |
2 рдХреЛрд░, 512x512 | 18 |
1 рдХреЛрд░, 4096x4096 | 28 |
2 рдХреЛрд░, 4096x4096 | 19 |
рд╡реЗ рдЬреЛ рднреА рдХрд╣рддреЗ рд╣реИрдВ, рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдореЗрдВ рдЧрдгрд┐рдд рдХрднреА-рдХрднреА рд╕рдмрд╕реЗ рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рд╕реНрдерд╛рдиреЛрдВ рдореЗрдВ рдХрд╛рдо рдЖ рд╕рдХрддрд╛ рд╣реИред
рдФрд░ FFT рдХрд╛ рдмрд▓ рдЖрдкрдХреЗ рд╕рд╛рде рд╣реЛ рд╕рдХрддрд╛ рд╣реИ!