• No results found

Digital signalbehandling i realtid; en jämförelse mellan CPU och GPU: Brusfiltrering av ljudsignal med hjälp av FFT

N/A
N/A
Protected

Academic year: 2022

Share "Digital signalbehandling i realtid; en jämförelse mellan CPU och GPU: Brusfiltrering av ljudsignal med hjälp av FFT"

Copied!
31
0
0

Loading.... (view fulltext now)

Full text

(1)

INOM

EXAMENSARBETE TEKNIK, GRUNDNIVÅ, 15 HP

STOCKHOLM SVERIGE 2020,

Digital signalbehandling i realtid;

en jämförelse mellan CPU och GPU

Brusfiltrering av ljudsignal med hjälp av FFT

LUDWIG EMILSSON

(2)

Real time digital signal processing; A CPU, GPU comparison: Filtering noisy

audio signal with FFT

Ludwig Emilsson

Degree Project in Computer Science Date: Juni 06, 2020

Supervisor: Erik Frans´en Examiner: Pawel Herman

Swedish title : Digital signalbehandling i realtid en j¨amf¨orelse mellan CPU och GPU: Brusfiltrering av ljudsignal med hj¨alp av FFT

School of Electrical Engineering and Computer Science

(3)

Abstract

Over the past 40 years, music production has evolved from being an analog process to a digital one. Analog instruments and filtering of signals have been complimented and partially replaced by digital instruments and filters in the form of software.

In order for software to be used in music production, it must be able to manipulate a signal in real time. This means that the delay from the time the data is loaded until it has been processed and reproduced must not take more than a certain specified time. For real-time applications in sound processing, this means that the delay must not be longer than 10 ms. A larger delay is perceived as delayed by an experienced listener and makes it difficult to use the application.

A common component in software used to process audio signals is the Fourier transform, which is a transform that, depending on the implemen- tation, can be efficiently executed on the computer’s graphics processor (GPU). Despite this, many digital instruments and filters that use Fourier transform are implemented to be executed on the system’s main processor (CPU).

In order to perform calculations on a GPU, data must first be sent from the main memory to the graphics memory, which takes time. In this report, I examine whether it is possible, with real-time execution requirements, to perform data transfer from main memory to graphics memory, process data and return the result to the main memory.

The data transferred from the main memory to the video memory is a periodic signal that is populated with normally distributed data points.

The periodic function is a sine tone and the normally distributed data points that are added to it are perceived as noise. The goal is to filter out the original sine tone from the noise.

The results show that it is possible to perform filtering of a signal on a system’s GPU with respect to real-time execution by using Matlab’s library routines for FFT, pointwise multiplication and IFFT. Shorter ex- ecution time can be achieved by implementing optimized algorithms to transfer data from the system’s main memory to graphics memory.

Sammanfattning

Under de senaste 40 ˚aren har musikproduktion utvecklats fr˚an att vara en analog process till en digital. Analoga instrument och filtrering av signaler har kompletterats och delvis blivit utbytta mot digitala instrument och filter i form av mjukvara.

or att mjukvara som ska anv¨andas i musikproduktion ska vara anv¨and-

(4)

Trots detta ¨ar m˚anga digitala instrument och filter som anv¨ander fouri- ertransform implementerade f¨or att exekveras p˚a systemets huvudproces- sor(CPU).

or att kunna utf¨ora ber¨akningar p˚a en GPU m˚aste data f¨orst skickas fr˚an huvudminnet till grafikminnet, vilket tar tid. I denna rapport un- ders¨oker jag huruvida det ¨ar m¨ojligt, med krav p˚a realtidsexekvering att genomf¨ora ¨overf¨oring av data fr˚an huvudminne till grafikminne, bearbeta data och returnera resultatet till huvudminnet.

Den data som ¨overf¨ors fr˚an huvudminnet till videominnet ¨ar en pe- riodisk signal som ¨ar f¨ororenad med normalf¨ordelade datapunkter. Den periodiska funktionen ¨ar en sinuston och de normalf¨ordelade datapunk- terna som adderas till denna uppfattas som brus. M˚alet ¨ar att filtrera fram den ursprungliga sinustonen ur bruset.

Resultatet visar att det ¨ar m¨ojligt att utf¨ora filtrering av en signal p˚a ett systems GPU med avseende p˚a realtidsexekvering genom att anv¨anda Matlabs biblioteksrutiner f¨or FFT, punktvismultiplikation och IFFT. Kor- tare exekveringstid g˚ar att uppn˚a genom att implementera optimerade al- goritmer f¨or att ¨overf¨ora data fr˚an systemets huvudminne till grafikminne.

(5)

Contents

1 Introduktion 2

1.1 Syfte . . . . 4

1.2 Fr˚agest¨allning . . . . 4

1.3 Avgr¨ansning . . . . 4

2 Bakgrund 5 2.1 Tidigare forskning . . . . 6

3 Metod 8 3.1 Begrepp och teori . . . . 8

3.1.1 Analog till digital konvertering . . . . 8

3.1.2 Provtagningsfrekvens och Nykvists provtagningsteorem . 8 3.1.3 Fouriertransform . . . . 8

3.1.4 onsterfunktion . . . . 9

3.1.5 Faltning . . . . 9

3.1.6 Faltning, f¨onsterfunktion och fouriertransform . . . . 10

3.1.7 Realtidsexekvering . . . . 10

3.1.8 GPU och CPU . . . . 10

3.2 Utformning . . . . 11

3.3 Verktyg . . . . 11

3.4 Datam¨angd . . . . 12

3.4.1 Funktioner . . . . 13

3.5 Utf¨orande . . . . 14

3.6 Validering . . . . 16

4 Resultat 17 5 Diskussion 18 5.1 Samh¨allsaspekter och etiska ¨overv¨aganden . . . . 21

5.2 allbar utveckling och milj¨o . . . . 21

6 Sammanfattning 21 6.1 Framtida arbete . . . . 22

7 Bilaga 25 7.1 Bilaga A : H˚ardvara . . . . 25

7.2 Bilaga B : GPGPU . . . . 26

(6)

1 Introduktion

Digital signalbehandling ¨ar ett ¨amne som behandlar hur man kan representera och behandla analoga signaler digitalt. N˚agra exempel p˚a signalbehandling ¨ar till exempel att ¨oka niv˚an p˚a en signal, addera eller att subtrahera signaler fr˚an en redan befintlig s˚adan. I det senare fallet kan det handla om att filtrera bort brus.

Vid musikproduktion anv¨ands m˚anga olika typer av metoder f¨or att f¨or¨andra ljudet. Vanligt ¨ar att man adderar effekter s˚a som efterklang och k¨oreffekt f¨or att skapa en intressant och levande ljudbild. Filter anv¨ands flitigt f¨or att framh¨ava ett instruments naturliga frekvensomr˚ade men ¨aven f¨or att ta bort o¨onskade frekvenser som kan uppst˚a p˚a grund av d˚alig inspelningsteknik men ocks˚a bak- grundsljud [16]. Kompression ¨ar ytterligare en teknik som anv¨ands f¨or att j¨amna ut den dynamiska r¨ackvidden vilket enkelt uttryckt ¨ar en niv˚autj¨amning av de starkaste och l¨agsta ljuden.

Sammansatta signaler ¨ar det som gemene man ¨ar van vid att h¨ora, speciellt i musikaliska sammanhang. ¨Aven d˚a en grundton tas p˚a ett instrument finns det i ljudet som vi h¨or ¨overtoner och skiljer sig p˚a s˚a s¨att fr˚an sinustoner. Ett sammansatt ljud ¨ar allts˚a en signal som best˚ar av flera sinusfunktioner med olika frekvenser och amplitud. Sammansatta ljud kan vara sv˚ara att manipulera och att analysera men med hj¨alp av Fouriertransformen kan man plocka is¨ar ett sammansatt ljud och se vilka sinustoner det best˚ar av. En l¨amplig analogi

¨

ar att man f¨orst blandar olika grundf¨arger (sinuston), man f˚ar d˚a en ny f¨arg (sammansattljud). Att oblanda f¨arger g˚ar inte men motsvarigheten g˚ar att ora med ljud.

Fouriertransformen ¨ar en variant av Fourierserier som unders¨oktes under tidigt 1800-tal av Jean-Baptiste Joseph Fourier. Fourierserier beskriver hur varje kontinuerlig periodisk funktion g˚ar att beskriva som summan av ett antal sinusfunktioner. Detta betyder att en komplex signal g˚ar att dela upp i sina best˚andsdelar som var och en g˚ar att manipulera individuellt. Denna transform ar att genomf¨ora genom att den ursprungliga signalen multipliceras med en Fouriertransform matris [21].

Digitala signaler g˚ar att att spara i matriser d¨ar varje position motsvarar ljudet vid en specifik tidpunkt. Denna matris g˚ar att f¨or¨andra genom att mul- tiplicera med tal eller andra matriser f¨or att erh˚alla en ny signal. S¨ag att ett sammansatt ljud har en st¨orande komponent, tillexempel ett bakomliggande brus. Detta brus vill man eliminera. Ett tillv¨agag˚angss¨att kan d˚a vara att utf¨ora Fouriertransfrom som visar vilka sinustoner som ljudet best˚ar av. Det ar sedan att anpassa en funktion som enbart t¨acker frekvensomr˚adet man ¨ar intresserad av att beh˚alla f¨or att sedan punktvis multiplicera ursprungsmatrisen med den anpassade funktionen. Det leder till att amplituden f¨or de punkter som representerar bruset elimineras.

En modern dator har generellt tv˚a olika typer av processorer, en CPU vars arkitektur ¨ar utvecklad f¨or att klara av m˚angsidiga uppgifter [3] och en GPU som vanligtvis anv¨ands f¨or att leverera bild till en sk¨arm. D˚a ber¨akningar sker a en GPU m˚aste den data som ska behandlas f¨orst ¨overf¨oras fr˚an systemets

(7)

huvudminne till videominnet. Tiden f¨or ¨overf¨oringen ¨ar inte f¨orsumbar. Det finns en risk att detta steg begr¨ansar m¨ojligheterna att utf¨ora ber¨akningarna i realtid. Om tiden det tar att ¨overf¨ora data, behandla den och sedan skicka resultatet tillbaka till huvudminnet tar l¨angre tid ¨an 10 ms anses latens vara f¨or stor[22]. Det ¨ar allts˚a viktigt att lyssnaren kan h¨ora f¨or¨andringar i ljuden med minimal f¨ordr¨ojning.

(8)

1.1 Syfte

Syftet med rapporten ¨ar att unders¨oka om det finns ber¨akningar inom omr˚adet digital-signalbehandling som i dagsl¨aget utf¨ors p˚a ett systems CPU men likv¨al skulle kunna utf¨oras p˚a ett systems GPU. Till grund f¨or denna unders¨okning ligger en vilja att avlasta ett systems huvudprocessor utan att tillf¨ora special- iserad h˚ardvara f¨or signalbehandling.

1.2 Fr˚agest¨allning

Finns det ofta f¨orekommande ber¨akningar inom digital signalbehandling som i dagsl¨aget utf¨ors p˚a ett sytems CPU men som likv¨al kan utf¨oras p˚a ett systems GPU?

Kan en GPU utf¨ora filtrering av en signal p˚a kortare tid ¨an en CPU med hj¨alp av Fouriertransform och punktvis multiplikation?

Vilka f¨or och nackdelar finns det med att utf¨ora signalbehandling p˚a en GPU amf¨ort med en CPU?

1.3 Avgr¨ansning

Denna rapport ¨ar avgr¨ansad till att unders¨oka hur en metod f¨or att filtrera en signal presterar med avseende p˚a exekveringstid beroende p˚a var den ber¨aknas.

Skillnaden mellan ber¨akningarna ¨ar att ber¨akningarna sker p˚a en CPU respek- tive en GPU.

(9)

2 Bakgrund

Under 1970-talet och 1980-talet gjordes de f¨orsta f¨ors¨oken att utveckla DAW (digital audio workstation) vilket ¨ar ett verktyg f¨or att digitalt spela in ljud och redigera ljudfiler. En DAW best˚ar av ett gr¨anssnitt f¨or att ¨overf¨ora en analog signal till en digital signal och programvara f¨or att med n˚agon typ av inputenhet (mus,keyboard eller knappar) redigera ljuden. En av dom tidigaste DAW kan exemplifieras med den f¨orsta typen av samplers, ett instrument som

¨

overf¨or analoga signaler till digitala signaler f¨or att sedan ¨andra signalen och f˚a nya ljud. Den f¨orsta samplern sl¨apptes 1971 och spelade upp ljud fr˚an tidigare inspelade kyrkorglar [8]. P˚a senare tid anv¨ands termen DAW(software DAW)

¨

aven f¨or den programvaran som anv¨ands f¨or att spela in och redigera ljud [5].

1996 sl¨appte Steinberg media technologies specifikationen till ett gr¨anssnitt VST (virtual studio technology) och medf¨oljande SDK (Software development kit). VST ¨ar ett gr¨anssnitt f¨or att skapa plugins (mjukvarutill¨agg) f¨or DAW’s [9]. Dessa mjukvarutill¨agg kan vara instrument (syntar), effekter (reverb) eller verktyg som m¨ojligg¨or f¨or annan typ av ljudredigering utan tillg˚ang till n˚agon speciell h˚ardvara f¨or signalbehandling. VST sl¨apptes utan licenskrav f¨or att utveckla mjukvara. Detta bidrog till att VST kom att bli det mest anv¨anda gr¨anssnittet f¨or att skapa plugins till DAWs.

Digitaliseringen av musikproduktion har gjort det m¨ojligt f¨or hobbymusiker att anv¨anda sig av effekter, instrument och redigeringsverktyg som tidigare enbart kunde tillhandah˚allas av produktionsbolag. I och med persondatorers

¨

okade ber¨akningskapacitet och minskande pris g˚ar det i dagsl¨aget utan special- iserad h˚ardvara att producera och spela in musik av h¨og kvalitet. Med vissa undantag ¨ar plugins utvecklade att exekveras p˚a en dators centralenhet (CPU).

Detta g¨or att om m˚anga ber¨akningar utf¨ors samtidigt blir systemets processor st¨andigt upptagen med att utf¨ora dessa.

I professionella musikstudior anv¨ands d¨arf¨or processorer specifikt utveck- lade f¨or att effektivt utf¨ora vanliga ber¨akningar inom digital-signalbehandling.

Dessa processorer har en annan instruktionsupps¨attning ¨an processorer som anv¨ands f¨or generella ¨andam˚al(general purpose processor) och ¨ar ibland integr- erad i separat h˚ardvara [13][12]. Dessa processorer ¨ar dyra och begr¨ansade till signalbehandling och g˚ar allts˚a inte att anv¨anda till annat, det ¨ar inte en proces- sor f¨or hobbymusiker. Med en avv¨agning p˚a pris och funktionalitet v¨aljer ofta ickeprofessionella musikproducenter annan h˚ardvara s˚a som kraftigare general purpose processorer.

(10)

Under de senaste 10 ˚aren har ett ¨okat intresse visats f¨or GPGPU – Gen- eral purpose computing on graphics processing units. Detta baseras p˚a antalet publicerade artiklar som behandlar ¨amnet GPGPU [Se bilaga B : GPGPU]. En av anledningarna ¨ar att det har blivit m¨ojligt att fullst¨andigt programmera en GPU med ramverk som CUDA och openCL. Praktiskt inneb¨ar det att flyttal- soperationer g˚ar att genomf¨ora betydligt mycket snabbare p˚a en GPU ¨an p˚a en CPU.

Grafikprocessorer ¨ar en h˚ardvaruarkitektur som ¨ar designade f¨or att paral- lellt kunna utf¨ora m˚anga flyttalsopperationer per sekund, betydligt fler ¨an en general purpose processor [24]. Sedan Nvidia lanserade CUDA 2003 har det teo- retiska antalet flyttalsoperationer som g˚ar att utf¨ora per tidsenhet f¨or GPUer

˚arligen ¨okat kraftigt. Detsamma g˚ar inte att s¨aga f¨or CPUer. Man ser 2013 att ardet p˚a det teoretiska antalet flyttalsopperationer tydligt divergerar mellan GPUer och CPUer. Fr˚an 2013 till 2017 har det v¨ardet f¨or Nvidias GPUer ¨okat i fr˚an 4000 GFLOP/s till 16500 GFLOP/s under samma period har Intels CPUer

¨

okat fr˚an cirka 1000 GFLOP/s till 3000 GFLOP/s (data g¨aller f¨or enkel flyttal- sprecision) [24]. Det ¨ar d¨arf¨or intressant att unders¨oka om det g˚ar att ers¨atta eller avlasta en CPU med en GPU vid digital signalbehandling.

2.1 Tidigare forskning

Grafikproccesorer har visat sig vara anv¨andbara i fler omr˚aden ¨an bara 3d ren- dering. Omr˚aden s˚a som artificiell intelligens [4] och och sortering av data [18]

men ¨aven verifiering av transaktioner av den typ som l¨agger grunden f¨or digitala valutor [20] nyttjar effektivt strukturen hos en grafikprocessor. Paralleliserbara ber¨akningar p˚a data som naturligt g˚ar att representera med matriser ¨ar en uppgift f¨or en GPU. Vissa algoritmer i kategorin digital signalbehandling borde arf¨or vara utm¨arkta att utf¨ora p˚a en GPU.

Experiment har utf¨orts f¨or att unders¨oka vilka typer av ljudmaipulationer som en GPU presterar b¨attre ¨an en CPU. L˚angt ifr˚an alla typer har unders¨okts men det ger en bild av att det ¨ar m¨ojligt att f¨or vissa av dom l˚ata en GPU utf¨ora arbetet. Ett arbete av S.Wahlen [23] visar att chorus och compression ¨ar betydligt effektivare att utf¨ora p˚a en GPU ¨an p˚a en CPU. Problem uppst˚ar vid ber¨akningar som kr¨aver att tidigare ber¨akningars resultat sparas i n˚agon typ av buffer s˚a som vid delay. Ber¨akningarna ¨ar allts˚a inte oberoende och parallalel- liserbarheten av ber¨akningar som en GPU ¨ar designad f¨or ¨ar inte m¨ojlig. Denna unders¨okning publicerades 2005 vilket ¨oppnar upp f¨or diskussion om huruvida ber¨akningarna av exekveringstiden f¨or GPUer och CPUer fortfarande g¨aller.

I en artikel om massive convolution [1], vilket ¨ar den grundl¨aggande opera- tionen i akustisk signalbehandling av flera kanaler redog¨ors f¨or m¨ojligheten att avlasta en CPU med hj¨alp av en GPU. Massive convolution best˚ar av m˚anga faltningar av flera kanaler och anv¨ands till exempel f¨or att applicera filter eller akustiska effekter som tredimensionellt ljud. En viktig aspekt som behandlas i artikeln ¨ar m¨ojligheten att ¨overlappa ¨overf¨orandet av data fr˚an en enhets CPU till dess GPU i syfte att utf¨ora faltningen i realtid. En algoritm f¨or att ¨overf¨ora data implementeras och visar att det g˚ar att halvera tiden f¨or faltningen med

(11)

hj¨alp av algoritmen j¨amf¨ort med en naiv implementation d¨ar all data som ska behandlas skickas som en enhet. Det huvudsakliga problemet som unders¨oks ¨ar hur man kan utf¨ora operationen i realtid [1].

”In a real-time audio application, transfer and computation on GPU must spend less time than filling the sample’sdata buffer. This time depends on the rate of the incoming samples.”

a Microsoft Corporation har en grupp implementerat en egen version av FFT optimerad f¨or en GPU och j¨amf¨or den med Nvidias API, CUFFT, f¨or olika stora datam¨angder N1- N25 [10][? ]. Syftet ¨ar att unders¨oka om deras implementa- tion av FFT ¨ar snabbare ¨an de befintliga biblioteksrutinerna som tillhandah˚alls i CUFFT. Resultatet visar att s˚a ¨ar fallet men ¨aven att det effektivt g˚ar att utf¨ora FFT p˚a data av godtycklig l¨angd och dimension p˚a ett systems GPU utan krav p˚a realtidsexekvering.

(12)

3 Metod

Detta avsnitt inleds med f¨orklaringar av olika begrepp som ¨ar n¨odv¨andiga or att f¨orst˚a problemomr˚adet och metodens utformning. F¨orklaringarna ¨ar grundl¨aggande och f¨orklarar det n¨odv¨andigaste f¨or att f¨orst˚a metodens utformn- ing. Inledningsvis beskrivs metoden generellt, verktyg som anv¨ants f¨oljt av en mer ing˚aende beskrivning av datam¨angden och tillv¨agag˚angss¨att.

3.1 Begrepp och teori

3.1.1 Analog till digital konvertering

Analog till digital konvertering ¨ar reduktionen av en tidskontinuerlig analog sig- nal med avseende p˚a tid och amplitud till en tidsdiskret signal med avseende p˚a samma parametrar. Detta kan ske genom att en sensor l¨aser av och konverterar sv¨angningar i ett medium (till exempel luft) till elektrisk sp¨anning. Denna sig- nal vill man representera med en tidsdiskret signal. Det inneb¨ar att det analoga ljudet kommer representeras av ett diskret antal tidpunkterpunkter. Antalet punkter beror p˚a provtagningsfrekvensen, vilket ¨ar antalet provtagningar per sekund. F¨or varje provtagningspunkt finns ett associerat v¨arde som represent- erar signalens amplitud. Detta v¨arde g˚ar att spara med olika noggrannhet.

Denna noggrannhet kallas f¨or bitdjup och ¨ar ofta p˚a 16, 24 eller 32 bitar vilket inneb¨ar att amplituden g˚ar att dela upp i 216, 224och 232 delar [16].

3.1.2 Provtagningsfrekvens och Nykvists provtagningsteorem Vid val av provtagningsfrekvens m˚aste mottagaren av det konverterade ljudet tas i h¨ansyn. Ett friskt m¨annisko¨ora kan h¨ora frekvenser i intervallet

[20 Hz, 20000 Hz]. Enligt Nykvist kriteriet ¨ar 44100 Hz den l¨agsta provtagnings- frekvensen om man vill representera frekvensomr˚adet [20 Hz, 20000 Hz].

I musikindustrin ¨ar en provtagningsfrekvens p˚a 48000 Hz standard men mul- tiplier av denna frekvens anv¨ands ocks˚a beroende p˚a lagringsmediet men ¨aven or att underl¨atta vissa moment relaterade till provtagningen [11][16].

3.1.3 Fouriertransform

Fouriertransform ¨ar en transform fr˚an temporaltplan till frekvensplan. I frekvens- planet uttrycks funktionen i sina sinusoidala basfunktioner. Fouriertransform

¨

ar definierad f¨or tidskontinuerliga och tidsdiskreta funktioner samt f¨or reelv¨arda och komplexv¨arda data. En invers till fouriertransformen existerar och trans- formerar funktioner fr˚an frekvensplan till temporaltplan. FFT(fast fourier trans- form) och IFFT(inverse fast fourier transform) ¨ar algoritmen f¨or tidsdiskret fouriertransform med tidskomplexitet O(n*log (n)). Det finns flera olika imple- mentationer av algoritmen men en v¨alk¨and ¨ar Cooley-Tukey implementationen.

FFT och IFFT anv¨ands bland annat i signalbehandling d¨ar det ¨ar av intresse och d¨ar det underl¨attar att manipulera en signal i frekvensplanet ist¨allet f¨or spatialtplan [15].

(13)

3.1.4 onsterfunktion

Windowing ¨ar en metod f¨or att framh¨ava en del av en signal. Metoden best˚ar av att skapa en funktion (f¨onsterfunktion) med noll-skilda v¨arden i ett intervall av intresse medan resterande v¨arden s¨atts till noll. F¨onsterfunktionen multipliceras med signalen och ger upphov till en ny signal som ¨ar nollad i samma punkter som f¨onsterfunktionen.

3.1.5 Faltning

Faltning ¨ar enkelt f¨orklarat en integral som uttrycker hur mycket tv˚a funktioner

¨

overlappar varandra. I figur 1 finns tv˚a funktioner, en r¨od och en bl˚a. I detta sammanhang kan vi se dom som tv˚a stycken signaler med amplitud noll till ett vilket avl¨ases p˚a Y-axeln. X-axeln representerar tid. Den bl˚aa signalen

¨

overlappar delvis med den r¨oda. Kombinationen av dessa tv˚a ger den gr¨ona sammansatta signalen som indikerar hur mycket den bl˚a och den r¨oda signalen

¨

overlappar med varandra [19].

Figure 1: Faltning av tv˚a funktioner

(14)

3.1.6 Faltning, f¨onsterfunktion och fouriertransform

Faltning av tv˚a funktioner i det temporala planet motsvaras av punktvis mul- tiplikation av samma funktioner i frekvensplanet. Detta inneb¨ar att man kan utf¨ora faltning av tv˚a funktioner genom att transformera dessa till frekvens- planet, punktvis multiplicera funktionerna f¨or att slutligen transformera tillbaka till temporalt plan [16].

3.1.7 Realtidsexekvering

anga applikationer inom ljudbehandling kr¨aver att utf¨orandet g˚ar att exekvera i realtid. En anledning till det ¨ar att man vill kunna ¨andra parametrar och direkt h¨ora effekterna av ¨andringarna. Det kan till exempel handla om att i realtid filtrera bort brus eller som i h¨orapparater f¨orst¨arka och f¨orsvaga vissa frekvenser.

Realtidsexekvering inneb¨ar att latensen inte f¨or ¨overstiga ett applikation- sspecifikt v¨arde. F¨or ljudaplikationer ¨ar en accepterad latens 10 ms [22]. Kravet

¨

ar ofta att signalbehandlingen ska g˚a att utf¨ora med en f¨ordr¨ojning p˚a mindre

¨

an 5-10 ms. I praktiken inneb¨ar det att data m˚aste behandlas i samma frekvens som provtagningsfrekvensen [23].

3.1.8 GPU och CPU

En modern dator har tv˚a typer av processorer en CPU (central processing unit) och en GPU (graphic processing unit). P˚a grund av respektive processors ardvaruarkitektur l¨ampar de sig olika bra f¨or viss typ av uppgifter.

En CPU ¨ar den huvudsakliga styrenheten i en dator, den s¨ager vad som ska g¨oras och n¨ar det ska g¨oras och ansvarar f¨or att schemal¨agga processer och avsluta dessa. Moderna CPUer best˚ar av flertalet k¨arnor (cores i figur 2), d¨ar varje k¨arna i sig ¨ar en processor med tillg˚ang till flertalet niv˚aer av sm˚a men snabbt tillg¨angliga flyktiga minnesenheter (chache i figur 2) [2]. CPUn har ¨aven en direkt koppling till ett systems RAM (System Memory i figur 2).

GPU ¨ar en h˚ardvaruarkitektur som ¨ar speciellt utformad f¨or att parallelt utf¨ora flyttalsoperationer [6]. Flyttalsopperationer anv¨ands bland annat d˚a man vill representera fysiska v¨arden, n˚agot man g¨or vid digital signalbehandling.

GPUn ¨ar ¨aven f¨ordelaktig att anv¨anda vid ber¨akningsintensiva uppgifter. Det vill s¨aga, tiden som det tar att utf¨ora ber¨akningar ¨overstiger kraftigt den tid det tar att ¨overf¨ora data till och fr˚an GPUn. Ber¨akningar som g˚ar att dela upp i mindre delber¨akningar som ¨ar parallelliserbara ¨ar ¨aven l¨ampliga att utf¨ora p˚a en GPU [14]. Det beror p˚a att GPUn har m˚anga fler k¨arnor med tillg˚ang till videominnet(Device Memory i figur 2).

(15)

Figure 2: J¨amf¨orelse mellan antal k¨arnor p˚a en CPU och GPU. Varje kvadrat representerar en k¨arna (eng. core) och varje rektangel representerar en typ av minne (cacheminne och huvudminne (RAM) f¨or CPU, samt videominne (eng.

Device memory) f¨or GPU.

3.2 Utformning

or att unders¨oka om det finns ber¨akningar som i dagsl¨aget utf¨ors p˚a ett sy- stems CPU men som likv¨al kan utf¨oras p˚a ett systems GPU utf¨or jag en m¨angd operationer som ¨ar vanliga inom digital signalbehandling. Metoden best˚ar i att f¨or olika provtagningsfrekvenser utf¨ora FFT, multiplikation av tv˚a matriser oljt av IFFT. Tillv¨agag˚angs¨attet ¨ar ett exempel p˚a hur man kan filtrera fram en periodisk funktion ur data som st¨orts med att tillf¨ora slumpm¨assigt nor- malf¨ordelade datapunkter. F¨or varje provtagningsfrekvens kommer filtreringen att utf¨oras 100 g˚anger f¨or att ta fram ett aritmetiskt medelv¨arde av exekver- ingstiden f¨or respektive provtagningsfrekvens. Samma operationer utf¨ors p˚a en CPU(AMD FX-8150) och en GPU(GeForce GTX 970) [Se bilaga A : H˚ardvara], exekveringstiderna noteras. Filtreringen ¨ar utformad p˚a s˚a s¨att att s˚a l¨ange alla operationerna utf¨ors f¨or alla datapunkter ¨ar resultatet representativt f¨or andra signalbehandlingsproblem vilka g˚ar att l¨osa p˚a samma s¨att.

(16)

i sin tur inneb¨ar att alla ber¨akningar sker p˚a systemets GPU. F¨or att kunna anv¨anda resultatet f¨or vidare ber¨akningar kr¨avs det att data ¨overf¨ors tillbaka till huvudminnet vilket g¨ors med funktionen gather(). Tiden det tar att utf¨ora testet p˚a GPU ber¨aknas med gputimeit().

3.4 Datam¨angd

or alla funktioner g¨aller det att dimensionerna ¨ar densamma. Funktionerna kommer best˚a av 44100, 48000, 96000 samt 192000 datapunkter och represent- erar samma signal med olika stor noggrannhet. F¨or provtagningsfrekvensen 44100 inneb¨ar det att signalen ¨ar uppdelad i 44100 punkter d¨ar varje s˚adan punkt ¨ar ett 32-bitars flyttal. Detsamma g¨aller f¨or ¨ovrig provtagningsfrekvenser.

Tiden det tar att utf¨ora ber¨akningarna ¨ar allts˚a f¨or en signal som ljuder under en sekund men d¨ar signalen beroende p˚a provtagningsfrekvens representeras med olika m˚anga datapunker. Datam¨angderna ¨ar inte uppdelade i mindre buffert- storlekar f¨or att successivt bearbetas. Datam¨angderna ¨ar representativa f¨or en kanal (mono).

(17)

3.4.1 Funktioner

S = 1*sin(2*pi*50*t): En sinusfunktion med amplitud 1 och frekvens 50 Hz, se figur 3.

Figure 3: S = 1*sin(2*pi*50*t): X-axel:tid (ms), y-axel:amplitud Sinusfunktionen adderas sedan med normalf¨ordelade slumpm¨assigt genererade punkter R, SR = S + R. Summan blir en periodisk funktion f¨ororenad av dessa punkter, se figur 4.

(18)

En Gaussisk funktion G = 50*exp(-((t-50)*2)/2*0.01) med v¨antev¨arde 50 skapas och anv¨ands f¨or att bilda G2 = G + G. Denna funktion t¨acker ¨over intervallet [-50Hz, 50Hz]. Funktionen ¨ar direkt anpassad efter sinusfunktionens frekvens och kr¨aver information om den. Det sker allts˚a ingen ber¨akning f¨or att hitta den periodiska funktionen som ska filtreras ut.

Figure 5: G2 - F¨onsterdunktion: X-axel tid (ms), y-axel:amplitud

3.5 Utf¨orande

Inledningsvis tr¨affade jag Propellerhead softwares ansvarige f¨or utvecklingsavdel- ningen. Propellerhead ¨ar ett f¨oretag som grundades 1994 och har sedan dess utvecklat DAWs och plugins. Anledningen till m¨otet var att diskutera min prob- lemformulering och f˚a ˚aterkoppling p˚a huruvida det var m¨ojligt att genomf¨ora filtreringen p˚a en GPU effektivt. Det fanns tv˚a saker som han fann problema- tiska. Det f¨orsta var tiden det tar att f¨ora ¨over data fr˚an huvudminnet till videominnet. Han misst¨ankte att det tar f¨or l˚ang tid och s˚aledes leder till en f¨or og f¨ordr¨ojning. Det andra var att det kr¨avs tv˚a versioner f¨or utvecklarna att implementera i f¨orh˚allande till hur m˚anga som skulle anv¨anda sig av produkten.

Testet g˚ar ut p˚a att filtrera ut den periodiska funktionen S fr˚an SR med funktionen G2. Exekveringstiden ber¨aknas som t1-t0. Testet utf¨ors 100 g˚anger, arefter ber¨aknas det aritmetiska medelv¨ardet f¨or respektive provtagningsfrekvens.

signalen med p˚alagt brus visas i figur 6. Bearbetningen sker i f¨oljande steg 1-4:

1) Tid t0 noteras.

2) SR och G2 transformeras till frekvensplanet med FFT.

(19)

Figure 6: SR; X-axel tid (ms), y-axel:amplitud

I frekvensplanet kan man tydligt se att en periodisk funktion finns i SR.

Figure 7: SR i frekvensdom¨an: X-axel frekvens (Hz), y-axel:amplitud

(20)

och j¨amf¨or med Figur 6.

Figure 8: SRG2 tidsdom¨an : X-axel tid (ms), y-axel:amplitud

3.6 Validering

Om signalen blir r¨att filtrerad eller inte ¨ar av litet intresse utan agerar en- bart som bevis f¨or att n˚agot har h¨ant med signalen. Det ¨ar tiden det tar att applicera ett filter med tillv¨agag˚angss¨attet FFT, parvis multiplikation, f¨oljt av IFFT f¨or dom tv˚a implementationerna som ska evalueras och j¨amf¨oras f¨or olika datam¨angder. Testet ¨ar utformat p˚a s˚a s¨att att s˚a l¨ange alla opera- tionerna utf¨ors f¨or alla datapunkter ¨ar resultatet representativt f¨or andra signal- behandlingsproblem som g˚ar att l¨osa p˚a liknande s¨att. F¨or att validera att alla datapunkter har behandlats anv¨andes Matlabs funktion conv(x,y) som enligt definition har ett ekvivalent resultat med mitt test och samma tidskomplexitet.

(21)

4 Resultat

or alla datastorlekar som testats exekverar algoritmen snabbare med GPU implementationen. F¨or 44100 samt 48000 skiljer sig implementationerna med 5.320 respektive 7.069 ms. Vid datastorleken 96000 skiljer sig implement- ationerna med 31.029 ms och f¨or 192000 64.544 ms. Nedan f¨oljer en tabell av exekveringstiderna f¨or respektive datam¨angd samt en f¨ortydligande graf. Detta

¨

ar allts˚a den tid det tar att utf¨ora FFT, punktvis multiplikation f¨oljt av IFFT a en CPU och en GPU.

44100 48000 96000 192000 1,243 1,212 2,251 3,736 6,563 8,281 33,28 68,28

Tabellhuvud: antal datapunkter, rad 1: exekveringstid GPU, rad 2: exekverings- tid CPU.

GPU-implementationen presterar b¨attre ¨an CPU-implementationen f¨or data- angderna. Vid 44100 samt 48000 ¨ar skillnaden inte lika stor mellan implement- ationerna som vid 96000 och 192000. Vid de st¨orre datam¨angderna skiljer sig tiden avsev¨art mellan implementationerna. Tidsskillnaden mellan den l¨agsta och st¨orsta datam¨angden f¨or GPU-implementationen ¨ar 2,493 vilket indikerar att majoriteten av tiden ¨ar kopplad till kostnaden att ¨overf¨ora data fr˚an hu- vudminne till videominne. N¨ar datastorleken ¨okar med en faktor 2 ¨okar bara exekveringstiden med en faktor 1,2 f¨or GPU-implementationen till skillnad f¨or CPU-implementationen d¨ar exekveringstiden ¨okar med en faktor 30(faktorn ¨ar ber¨aknad som medelv¨ardet av skillnaderna).

ordelarna med att utf¨or ber¨akningarna p˚a GPUn ¨ar att vid st¨orre datam¨angder blir kostnaden att ¨overf¨ora data fr˚an huvudminnet till videominnet mindre i orh˚allande till den totala ber¨akningstiden. Det betyder att f¨or sm˚a datam¨angder

¨

ar skillnaden mellan exekvering p˚a en GPU och en CPU inte s˚a stora men men or st¨orre datam¨angder blir den p˚ataglig. Ytterligare en f¨ordel ¨ar att anv¨anda ett systems fulla kapacitet genom att l˚ata all h˚ardvara utf¨ora ber¨akningar, om ardvaran redan finns, utnyttja den. Nackdelarna ¨ar framf¨orallt kopplade till kostnader relaterade till att skriva tv˚a implementationer, en f¨or GPU och en f¨or CPU.

(22)

Figure 9: exekveringstid CPU(orange) GPU(bl˚a) ; X-axel: antal datapunkter, Y-axel: tid(ms)

5 Diskussion

Resultatet visar att f¨or detta problem, som ¨ar vanligt inom signalbehandling, presterar en GPU b¨attre ¨an en CPU. Detta g¨aller f¨or datastorlekarna 44100, 48000, 96000 och 192000. Tydligt ¨ar att n¨ar datastorleken ¨okar blir skillnaden mellan exekveringstiderna f¨or GPU implementationen och CPU implement- ationen st¨orre. Vid st¨orre datam¨angder presterar den f¨or GPUn b¨attre ¨an den or CPUn. Vilket f˚ar st¨od fr˚an en artikel ”Debunking the 100X GPU vs. CPU myth: an evaluation of throughput computing on CPU and GPU” [17] som bland annat j¨amf¨or antalet flytalsoperationer per sekund f¨or fft p˚a en Core i7- 960(CPU) och en GTX280(GPU). Resultatet visar att antalet Gflop/s f¨or i7-960

¨

ar 71.4 och antalet Gflop/s f¨or GTX280 ¨ar 213.

I sektionen tidigare forskning tar jag upp en artikel som har unders¨okt n˚agra vanligt f¨orekommande ljudmanipuleringar. Resultatet visar att det f¨or vissa manipulationer, n¨amligen k¨oreffekt och kompression, s˚a blir ber¨akningstiden ¨ar

(23)

kortare n¨ar ber¨akningarna sker p˚a en GPU. Manipuleringar som kr¨aver att man

˚ateranv¨ander tidigare ber¨akningar s˚a som f¨or delay, tar l¨angre tid p˚a en GPU

¨

an p˚a en CPU.

Utifr˚an dessa resultat samt resultatet fr˚an forskning som togs upp i sektio- nen tidigare forskning [4][18][18][20][23][1][10] ¨ar jag ¨overtygad att om datas- torleken ¨okade ytterligare skulle dom tv˚a olika implementationernas exekver- ingstider divergera. Allts˚a, N¨ar datam¨angden v¨axer ¨okar f¨ordelarna med att utf¨ora ber¨akningarna p˚a GPUn.

Eftersom jag inte unders¨oker exekveringstiderna f¨or datastorlekar under 44100

¨

ar det os¨akert hurvida den faktor som exekveringstiden ¨okar med ¨aven ¨ar rep- resentativ f¨or mindre storlekar. Eftersom tidsskillnaden mellan de olika datas- torlekarna f¨or GPU-implementationen ¨ar v¨aldigt liten, g˚ar det att spekulera i att majoriteten av exekveringstiden ¨ar kostnaden f¨or att ¨overf¨ora data. Om man g¨or antagandet att den faktor som exekveringstiden ¨okar med d˚a datastor- leken dubbleras, ¨aven g¨aller d˚a datam¨angden halveras, resulterar det i att GPU- implementationen skulle exekveras p˚a 1 ms medan CPU-implementationen ex- ekveras p˚a 0.2 ms f¨or datastoleken 22500. Detta verkar troligt d˚a skillnaden mellan exekveringstiden f¨or 44100 och 48000 datapunkter ¨ar 0.03. Exekver- ingstiden ¨ar allts˚a betydligt l¨agre ¨an den h¨ogsta godk¨anda f¨ordr¨ojning f¨or att proceduren kan anses utf¨orbar i realtid.

I denna unders¨okning har all data skickats samtidigt. Det inneb¨ar att data inte har delats upp i mindre buffrar, n˚agot som ¨ar vanligt f¨orekommande. An- ledningen till det ¨ar att unders¨okningen enbart ska klarg¨ora om det finns po- tential och m¨ojlighet att anv¨anda en GPU ist¨allet f¨or en CPU i ljudspecifika applikationer.

Datm¨angderna motsvarar en kanals ljud(mono) och inte tv˚a (stero). Detta betyder att det ¨ar dubbelt s˚a m˚anga datapunkter som m˚aste behandlas f¨or steroformat. Motiveringen till att tv˚a kanaler inte testas ¨ar att det t¨acks upp av fallet med 96000 datapunkter. 44100 * 2 = 96000 och 48000 ¨ar en multipel av 96000. Detta betyder att datapunkter f¨or tv˚a kanaler ¨ar antingen mindre eller lika med 96000 vilket har testats. Det finns dock risk att tv˚a separata kanaler representeras och ¨overf¨ors annorlunda fr˚an huvudminnet till videominnet och att MATLABs implementation av FFT behandlar det annorlunda ¨an om det bara ¨ar en kanal.

I denna unders¨okning har varje datapunkt en noggrannhet p˚a 32-bitar. Tanken

¨

ar att det ska motsvara 32-bitars bitdjup f¨or signalen. Bitdjup ¨ar den nog- grannhet man v¨aljer att presentera det analoga ljudet digitalt. Det ¨ar sv˚art att garantera n˚agon st¨orre s¨akerhet i huruvida ett 32-bitars flyttal i Matlab ¨ar rep-

(24)

ar en signal har behandlats p˚a systemets GPU skickas det tillbaka till huvudminnet. Po¨angen med ett ljud ¨ar att man vill h¨ora det, allts˚a m˚aste systemets CPU h¨amta data som representar ljudet fr˚an huvudminnet och sedan spela upp det. Detta ytterligare sista steg har inte pr¨ovats och kommer addera tid till kedjan, n˚agot som inte har tagit h¨ansyn till i resultatet.

Resultatet indikerar att det ¨ar m¨ojligt att utf¨ora FFT, punktvis multiplika- tion av tv˚a matriser f¨oljt av IFFT p˚a detta specifika systems GPU p˚a kortare tid ¨an p˚a dess CPU. Tidigare litteratur visar ¨aven den att en GPU ¨ar en l¨amplig kandidat att utf¨ora generella ber¨akningar som tidigare utf¨orts p˚a en CPU och i dagsl¨aget faktiskt g¨or s˚a. Det ¨ar ¨aven visat att FFT g˚ar att utf¨ora mer effektivt a en GPU ¨an en CPU men ¨aven att det finns vissa ljudspecifika applikationer som kan dra nytta av arkitekturen hos en GPU. Denna rapport har fokuserat p˚a FFT och IFFT, det finns sj¨alvklart andra ber¨akningar som anv¨ands vid signal- behandling och det ¨ar ingen garanti att en GPU presterar b¨attre ¨an en CPU f¨or andra typer av ber¨akningar.

Aven om det ¨¨ ar m¨ojligt att utf¨ora signalbehandling i realtid p˚a en GPU finns det andra faktorer som avg¨or om det ¨ar en bra id´e. Det ¨ar inte s¨akert att anv¨andare av DAW har ett system med separat GPU, utan den kan vara integrerad p˚a systemets CPU. Ur en utvecklingsaspekt kan det uppst˚a problem a det kr¨avs tv˚a separata implementationer f¨or en plugin. Pengar och resurser som skulle kunna investeras i utvecklingsarbeten spenderas m¨ojligtvis p˚a funk- tionalitet som marknaden inte har ett behov av. Det kr¨avs allts˚a en gedigen analys av marknadens behov och hur stor andel av befintliga system som skulle kunna utnyttja en GPU-baserad ljudbehandlingsl¨osning.

(25)

or vissa signalbehandlingsproblem tillkommer kravet att problemet ska g˚a att l¨osa i realtid med minimal f¨ordr¨ojning mellan input och output. Tiden f¨or processen f˚ar inte ¨overstiga 10 ms. Ingen av implementationerna klarar detta krav f¨or de pr¨ovade datastorlekarna. F¨or att uppn˚a realtidsexekvering delas ofta problemet upp i delproblem och en signal delas upp i buffrar d¨ar varje buffer behandlas var f¨or sig. Med de tidigare antagandena resulterar detta i att or en bufferstorlek p˚a 256 datapunkter ¨ar det m¨ojligt att exekvera i realtid p˚a en CPU. Om tiden det tar att ¨overf¨ora data till GPUn ¨ar 1 ms uppfyller inte GPU-implementationen realtidskravet oavsett vilken bufferstorlek man v¨aljer.

Under avsnittet tidigare forskning presenterar jag, att det ¨ar m¨ojligt att utf¨ora operationerna i realtid p˚a en GPU, men det kr¨aver att man implementerar en algoritm f¨or att minska tiden det tar att ¨overf¨ora data fr˚an CPUn till GPUn.

5.1 Samh¨allsaspekter och etiska ¨overv¨aganden

Eftersom landskapet f¨or musikproduktion har m˚alats om under dom senaste

˚artionden p˚a grund av den tekniska utvecklingen har det kr¨avt omst¨allningar i branschen. Detta har gynnat sm˚a produktionsbolag, och hobbyproducenter och bidrar till att fler personer kan skapa och ta del av ny musik. En n˚agot vag parallel g˚ar att dra till internettrevoulutionen d˚a information blev tillg¨ang- lig f¨or alla som vill ha den. N¨ar teknik blir tillg¨anglig f¨or allm¨anheten j¨amnar det ut maktf¨orh˚allandena och tidigare tydliga monopol inom en bransch kan orsvagas. M¨ojligheten f¨or privatpersoner och sm˚a bolag att skapa kvalitativa ljud och produktioner billigare gynnar dessa nyss n¨amnda. Att stora produk- tionsbolag drabbas negativt ¨ar inte n˚agot som jag ser som en m¨ojlighet, kanske tv¨artom. Stora produktionsbolag har stora resurser och en etablerad position a marknaden och kan ist¨allet f˚a m¨ojlighet att hitta och plocka upp ny duk- tiga m¨anniskor som tack vare billigare och effektivare teknik kan bidra till att ytterligare st¨arka kunskapen inom omr˚adet.

5.2 H˚allbar utveckling och milj¨o

Milj¨o och h˚allbar utveckling ¨ar n˚agot som i dagsl¨aget ¨ar h¨ogst relevant. Sec- ondhandtj¨anster och ˚ateranv¨andning av tidigare producerade varor ¨ar en stor del i att inte ¨overexploatera naturresurser. Om det ¨ar m¨ojligt att ˚ateranv¨anda redan befintlig h˚ardvara s˚a som en GPU ist¨allet f¨or att beh¨ova k¨opa speciella signalbehandlings processorer ¨ar det positivt.

(26)

av denna typ under kortare tid p˚a en GPU ¨an p˚a en CPU. Problematiken ligger i att ¨overf¨ora data fr˚an huvudminnet till videominnet p˚a ett effektivt s¨att. I den metod som anv¨ants resulterar det i att ¨overf¨oringen introducerar extra tid- skostnad. Tidskostnaden f¨or att ¨overf¨ora data ¨ar inte f¨orsumbar men ¨ar s˚a pass liten att hela proceduren kan utf¨oras med en f¨ordr¨ojning som ¨ar mindre ¨an 10 ms.

6.1 Framtida arbete

Det finns mycket som ¨ar intressant att forts¨atta unders¨oka, dels det som n¨amns i diskussionen g¨allande bitdjup och bufferstorlekar. Flera olika GPUer och CPUer borde pr¨ovas mot varandra, dels tidigare generationers GPUer mot dagens gen- erations CPUer f¨or att utforska m¨ojligheten att GPUer som ¨ar utdaterade f¨or att anv¨andas vid 3d-grafik kan anv¨andas vid signalbehandling. Ett sj¨alvklart test

¨

ar att j¨amf¨ora hur olika GPUer st˚ar sig j¨amf¨ort med processorer specifikt utfor- made f¨or digital signalbehandling. F¨or att fullst¨andigt kartl¨agga m¨ojligheterna

¨

ar det intressant att lista och se vilka typer av vanliga signalbehandlingsalgorit- mer som ¨ar m¨ojliga att utf¨ora mer effektivt p˚a en GPU ¨an en CPU. Med hj¨alp av tex CUDA g˚ar det att programmera och optimera s¨attet som data ¨overf¨ors fr˚an huvudminne till videominne med buffrar och detta m¨ojligg¨or eventuellt att minska f¨ordr¨ojningen mellan input och output, denna intj¨anade tid g˚ar d˚a att nyttja till fler ber¨akningar n¨ar data v¨al har ¨overf¨orts [1].

(27)

References

[1] Jose A Belloch, Alberto Gonzalez, Francisco-Jose Mart´ınez-Zald´ıvar, and Antonio M Vidal. Real-time massive convolution for audio applications on gpu. The Journal of Supercomputing, 58(3):449–457, 2011.

[2] Ahmet Bindal. Central Processing Unit, pages 251–438. Springer Interna- tional Publishing, Cham, 2019.

[3] G´erard Blanchet and Bertrand Dupouy. The Basic Modules. John Wiley Sons, Inc., isbn = 9781848214293, Hoboken, NJ USA, 2013.

[4] Avi Bleiweiss. Multi agent navigation on the gpu. In Games Developpement Conference, pages 39–42. Citeseer, 2009.

[5] Karla Borja, Suzanne Dieringer, and Jesse Daw. The effect of music stream- ing services on music piracy among college students. Computers in Human Behavior, 45:69–76, 2015.

[6] Shane Cook. CUDA programming a developer’s guide to parallel computing with GPUs. Elsevier/MK, Amsterdam ; Boston, 2013.

[7] WE Cummins. The impulse response function and ship motions. Technical report, David Taylor Model Basin Washington DC, 1962.

[8] Hugh Davies. A history of sampling. Organised Sound, 1(1):3–11, 1996.

[9] Steinberg Media Technologies GmbH. Vst 3 api documenta- tion. https://steinbergmedia.github.io/vst3_doc/vstinterfaces/

index.html. [Online accessed; 2020-04-21].

[10] Naga K Govindaraju, Brandon Lloyd, Yuri Dotsenko, Burton Smith, and John Manferdelli. High performance discrete fourier transforms on graphics processors. In Proceedings of the 2008 ACM/IEEE conference on Super- computing, page 2. IEEE Press, 2008.

[11] Robjohns H. Is it worth recording at a higher sam- ple rate? https://www.soundonsound.com/sound-advice/

q-it-worth-recording-higher-sample-rate/, 2005. [Online; ac- cessed 06-Juli-2019].

[12] Intel. intel 64 and IA-32 architectures Software Developer’s Manual. Intel.

References

Related documents

L˚ at y(t) vara andelen av populationen som ¨ar smittad efter tiden t dygn, r¨aknad fr˚ an uppt¨ack- ten... Observera att ¨amnets koncentration ¨ar samma som m¨angden av

[r]

I en produktionsprocess blir enheterna, oberoende av varandra, felak- tiga med sannolikhet 0.01 och 300 enheter tillverkas. I en urna finns vita och

Man kan faktiskt g¨ora ett konfidensintervall f¨or medianen med konfidensgrad minst lika med 1 − α helt utan n˚ agra som helst antaganden om den bakom- liggande f¨ordelningen

Till exempel fick jag inte med n˚ agot Ljus- och Optikland i f¨ orsta f¨ ors¨ oket, och pilen mot Kosmologi, som ligger utanf¨ or den h¨ ar kartan, borde peka mer upp˚ at,

Vid bed¨ omningen av l¨ osningarna av uppgifterna i del 2 l¨ aggs stor vikt vid hur l¨ osningarna ¨ ar motiverade och redovisade. T¨ ank p˚ a att noga redovisa inf¨ orda

¨ar en kompakt m¨angd och funktionen f ¨ar kontinuerlig p˚a denna, s˚a d¨arf¨or kan vi p˚a f¨orhand veta att f har ett minsta v¨arde p˚a denna m¨angd, vilket d˚a ocks˚a,

Matematiska institutionen Stockholms