CUDA FFT. High Performance 3-D FFT in CUDA Environment. Akira Nukada, 1, 2 Yasuhiko Ogata, 1, 2 Toshio Endo 1, 2 and Satoshi Matsuoka 1, 2, 3

Σχετικά έγγραφα
GPGPU. Grover. On Large Scale Simulation of Grover s Algorithm by Using GPGPU

FX10 SIMD SIMD. [3] Dekker [4] IEEE754. a.lo. (SpMV Sparse matrix and vector product) IEEE754 IEEE754 [5] Double-Double Knuth FMA FMA FX10 FMA SIMD

Binary32 (a hi ) 8 bits 23 bits Binary32 (a lo ) 8 bits 23 bits Double-Float (a=a hi +a lo, a lo 0.5ulp(a hi ) ) 8 bits 46 bits Binary64 11 bits sign

GPU. CUDA GPU GeForce GTX 580 GPU 2.67GHz Intel Core 2 Duo CPU E7300 CUDA. Parallelizing the Number Partitioning Problem for GPUs

GPU DD Double-Double 3 4 BLAS Basic Linear Algebra Subprograms [3] 2

Προγραμματισμός GPUs μέσω του περιβάλλοντος CUDA

Δθμιουργία, μελζτθ και βελτιςτοποίθςθ φωτορεαλιςτικϊν απεικονίςεων πραγματικοφ χρόνου με χριςθ προγραμματιηόμενων επεξεργαςτϊν γραφικϊν

Εισαγωγή στον GPGPU προγραμματισμό 50,000, ,000,000 (1 από 2) 19/5/2018

ΥΠΟΛΟΓΙΣΤΙΚΗ ΧΗΜΕΙΑ ΜΕ ΕΦΑΡΜΟΓΕΣ ΣΕ ΜΟΡΙΑ, ΥΛΙΚΑ, ΠΕΡΙΒΑΛΛΟΝ

FPGA. Fast and Efficient Tsunami Propagation Simulation with FPGA and GPGPU

Efficient Implementation of Sparse Linear Algebra Operations on InfiniBand Cluster. Akira Nishida,

ΥΠΟΛΟΓΙΣΤΙΚΗ ΧΗΜΕΙΑ ΜΕ ΕΦΑΡΜΟΓΕΣ ΣΕ ΜΟΡΙΑ, ΥΛΙΚΑ, ΠΕΡΙΒΑΛΛΟΝ. Ι ΑΣΚΟΝΤΕΣ: Μαρία Κανακίδου, Σταύρος Φαράντος, Γιώργος Φρουδάκης

2016 IEEE/ACM International Conference on Mobile Software Engineering and Systems

GPU. Energy Consumption and Acceleration of GPU of Molecular Dynamics Simulation. TAKURO UDAGAWA 1 and MASAKAZU SEKIJIMA 2, 3

EUROPEAN TERRITORIAL COOPERATION PROGRAMME GREECE ITALY

DESKTOP - Intel processor reference chart

ΑΥΤΟΜΑΤΟΠΟΙΗΣΗ ΜΟΝΑΔΑΣ ΘΡΑΥΣΤΗΡΑ ΜΕ ΧΡΗΣΗ P.L.C. AUTOMATION OF A CRUSHER MODULE USING P.L.C.

Περιβάλλον Παράλληλου Προγραμματισμού

Κεφάλαιο 1 Αφαιρετικότητα και Τεχνολογία Υπολογιστών (Computer Abstractions and Technology)

3. Προσωπικός Ηλεκτρονικός Υπολογιστής (Personal Computer - PC)

GPU GPU GPU GPU. GPU (Graphics Processing Unit) GPU GPU GPU AGPU [11] AGPU. GPGPU (general-purpose GPU) GPU GPU AGPU GPU

Table 1: Performance of Camellia (updated on October 31, 2008) Software Performance

Orthogonalization Library with a Numerical Computation Policy Interface

CUDA Compute Unified Device Architecture

Παράλληλος Προγραμματισμός σε Επεξεργαστές Γραφικών

Αριθµητικές Μέθοδοι Collocation. Απεικόνιση σε Σύγχρονες Υπολογιστικές Αρχιτεκτονικές

Έργο: Υποστήριξη Υπουργείου Παιδείας, ια Βίου Μάθησης και Θρησκευµάτων σε Πληροφοριακά Συστήµατα 2011

Bundle Adjustment for 3-D Reconstruction: Implementation and Evaluation

3: A convolution-pooling layer in PS-CNN 1: Partially Shared Deep Neural Network 2.2 Partially Shared Convolutional Neural Network 2: A hidden layer o

Παράλληλος Προγραμματισμός με OpenCL

ΤΕΧΝΙΚΕΣ ΠΡΟ ΙΑΓΡΑΦΕΣ ΕΞΟΠΛΙΣΜΟΥ

Παράλληλος Προγραμματισμός σε Επεξεργαστές Γραφικών

GridFTP-APT: Automatic Parallelism Tuning Mechanism for Data Transfer Protocol GridFTP

IPSJ SIG Technical Report Vol.2014-CE-127 No /12/6 CS Activity 1,a) CS Computer Science Activity Activity Actvity Activity Dining Eight-He

ΓΡΑΜΜΙΚΟΣ & ΔΙΚΤΥΑΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

Η Μ Ε Ρ Ο Μ Η Ν Ι Α ΠΕΜΠΤΗ 13 ΙΟΥΝΙΟΥ ώρα 10:00 π.μ. ΤΟΠΟΣ ΔΙΕΝΕΡΓΕΙΑΣ : ΑΤΕΙ- ΘΕΣΣΑΛΟΝΙΚΗΣ -ΣΙΝΔΟΣ-ΘΕΣ/ΝΙΚΗΣ

Stabilization of stock price prediction by cross entropy optimization

EΘΝΙΚΟ ΚΑΙ ΚΑΠΟΔΙΣΤΡΙΑΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΕΙΔΙΚΟΣ ΛΟΓΑΡΙΑΣΜΟΣ ΚΟΝΔΥΛΙΩΝ ΕΡΕΥΝΑΣ ΓΡΑΜΜΑΤΕΙΑ ΕΠΙΤΡΟΠΗΣ ΕΡΕΥΝΩΝ ΑΝΑΡΤΗΤΕΑ ΣΤΟ ΚΗΜΔΗΣ & ΣΤΗ ΔΙΑΥΓΕΙΑ

A Method for Creating Shortcut Links by Considering Popularity of Contents in Structured P2P Networks

Χορεύοντας με τα teraflops

Παράλληλος Προγραμματισμός σε Επεξεργαστές Γραφικών

Fourier transform, STFT 5. Continuous wavelet transform, CWT STFT STFT STFT STFT [1] CWT CWT CWT STFT [2 5] CWT STFT STFT CWT CWT. Griffin [8] CWT CWT

Re-Pair n. Re-Pair. Re-Pair. Re-Pair. Re-Pair. (Re-Merge) Re-Merge. Sekine [4, 5, 8] (highly repetitive text) [2] Re-Pair. Blocked-Repair-VF [7]

Anomaly Detection with Neighborhood Preservation Principle

Indexing Methods for Encrypted Vector Databases

Γραφικά Υπολογιστών Εισαγωγή

Παράλληλος προγραμματισμός σε επεξεργαστές γραφικών

Παράλληλος Προγραμματισμός σε Επεξεργαστές Γραφικών

Προγραμματισμός Συστημάτων Υψηλών Επιδόσεων (ΗΥ421) Εργασία Εξαμήνου

Συστήματα Παράλληλης & Κατανεμημένης Επεξεργασίας

ΘΕΜΑ : MULTIMEDIA & ΤΕΧΝΟΑΟΓΙΑ

Ο προσφερόμενος εξοπλισμός θα πρέπει να καλύπτεται από εγγύηση του κατασκευαστή τουλάχιστον 1 έτους. ΝΑΙ 13.1

ΑΠΟΤΕΛΕΣΜΑΤΑ ΔΙΑΒΟΥΛΕΥΣΗΣ. Προκήρυξη Διαγωνισμού για την «Προμήθεια Εξοπλισμού Κόμβου Μηχανικής Μάθησης» /

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ Σχολή Μηχανολόγων Μηχανικών Εργαστήριο Θερμικών Στροβιλομηχανών

Simulink The MathWorks, Inc.

Συστήματα Παράλληλης & Κατανεμημένης Επεξεργασίας

Κατανεμημένο Σύστημα Διαχείρισης Εργασιών Απομακρυσμένης Εκτέλεσης Κώδικα Για Επιταχυντές Γραφικών Σε Συστοιχίες Υπολογιστών ΔΙΠΛΩΜΑΤΙΚΗ ΕΡΓΑΣΙΑ

[4] 1.2 [5] Bayesian Approach min-max min-max [6] UCB(Upper Confidence Bound ) UCT [7] [1] ( ) Amazons[8] Lines of Action(LOA)[4] Winands [4] 1

[ΚΑΤΑΓΡΑΦΗ ΗΛΕΚΤΡΟΝΙΚΟΥ ΥΛΙΚΟΥ ΚΑΙ ΔΙΑΥΛΩΝ ΕΠΙΚΟΙΝΩΝΙΑΣ]

Αντιπρύτανη Ακαδηµαϊκών Θεµάτων Αντιπρύτανη ιεθνών Σχέσεων Οικονοµικών και ιοίκησης /ντή ιοίκησης και Οικονοµικών

Buried Markov Model Pairwise

Processor-Memory (DRAM) ιαφορά επίδοσης

ER-Tree (Extended R*-Tree)

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ

Quick algorithm f or computing core attribute

Kingston HyperX Predator Μ.2 PCIe 2.0 x4 240GB Solid State Drive Πραγματικό αρπακτικό δεδομένων!

A Sequential Experimental Design based on Bayesian Statistics for Online Automatic Tuning. Reiji SUDA,

Εισαγωγή. Λογισµικό & Προγραµµατισµός Συστηµάτων Υψηλής Επίδοσης

Parallel Implementation of John Conway s Game of Life

Πώς να επιλέξετε το σωστό Υπολογιστή

ΧΡΗΣΗ Η/Υ - ΘΕΩΡΙΑ ΔΕΔΟΜΕΝΑ ΠΛΗΡΟΦΟΡΙΕΣ. Σχήμα 1.1.1: Σχηματική αναπαράσταση επεξεργασίας δεδομένων

Ετήσια Τεχνική Έκθεση

The Tersoff many-body potential: Sustainable performance through vectorization

Λογικά σύμβολα των CPU, RAM, ROM και I/O module

A Fast Finite Element Electromagnetic Analysis on Multi-core Processer System

Κέντρο Υποδομών και Υπηρεσιών ΤΠΕ Πανεπιστήμιο Κρήτης

Ηλεκτρονικοί Υπολογιστές Δ Εξάμηνο

ΕΘΝΙΚΟ ΚΑΙ ΚΑΠΟΔΙΣΤΡΙΑΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ

Υ- 01 Αρχιτεκτονική Υπολογιστών Πολυεπεξεργαστές

Συστήματα Παράλληλης & Κατανεμημένης Επεξεργασίας

ΤΙΤΛΟΣ ΕΡΓΑΣΙΑΣ ΚΑΤΑΓΡΑΦΗ ΗΛΕΚΤΡΟΝΙΚΟΥ ΥΛΙΚΟΥ ΚΑΙ ΔΙΑΥΛΩΝ ΕΠΙΚΟΙΝΩΝΙΑΣ

H/Y Ε-07: Κατανεµηµένα Συστήµατα Εαρινό Εξάµηνο Ακ. Έτους ιδάσκουσα: Παναγιώτα Φατούρου Προγραµµατιστικές Εργασίες

Journal of the Graduate School of the Chinese Academy of Sciences. Application Dependent Software. Standard Application Components.

Πανεπιστήμιο Θεσσαλίας Τμήμα Μηχανικών Η/Υ, Τηλεπικοινωνιών και Δικτύων

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΕΙΔΙΚΟΣ ΛΟΓΑΡΙΑΣΜΟΣ ΠΑΝΕΠΙΣΤΗΜΙΟΥ ΚΡΗΤΗΣ

HOSVD. Higher Order Data Classification Method with Autocorrelation Matrix Correcting on HOSVD. Junichi MORIGAKI and Kaoru KATAYAMA

Retrieval of Seismic Data Recorded on Open-reel-type Magnetic Tapes (MT) by Using Existing Devices

Βιοπληροφορική. Μαργαρίτα Θεοδωροπούλου. Πανεπιστήμιο Θεσσαλίας, Λαμία 2016

Ατομική Διπλωματική Εργασία ΕΚΤΕΛΕΣΗ ΤΟΥ QUERY 6 ΤΟΥ BENCHMARK TPC-H ΣΕ ΚΑΡΤΑ ΓΡΑΦΙΚΩΝ, ΜΕ CUDA. Μαρία Λοϊζίδη ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ

An Efficient Calculation of Set Expansion using Zero-Suppressed Binary Decision Diagrams

Writing kernels for fun and profit

ΗΛΕΚΤΡΟΝΙΚΟΙ ΥΠΟΛΟΓΙΣΤΕΣ

Διάλεξη 15 Απόδοση της Ιεραρχίας Μνήμης Βελτιστοποίηση της απόδοσης

Αρχιτεκτονική Υπολογιστών

ΔΙΑΚΗΡΥΞΗ. ΠΡΟΧΕΙΡΟΥ ΔΙΑΓΩΝΙΣΜΟΥ ΓΙΑ ΤΗΝ ΠΡΟΜΗΘΕΙΑ «ΕΞΟΠΛΙΣΜΟΥ ΑΙΜΟΔΟΣΙΑΣ» προϋπολογιζόμενης δαπάνης ,00 συμπεριλαμβανομένου Φ.Π.Α.

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ. Άσκηση 5: Παράλληλος προγραμματισμός σε επεξεργαστές γραφικών

Dynamic Data Type Refinement Methodology

ΠINAKAΣ ΠΕΡΙΓΡΑΦΗ/ΠΡΟΔΙΑΓΡΑΦΕΣ

ΠΡΟΣΚΛΗΣΗ ΕΝΔΙΑΦΕΡΟΝΤΟΣ KAI ΚΑΤΑΘΕΣΗΣ ΠΡΟΣΦΟΡΩΝ ΓΙΑ ΤΗΝ ΠΡΟΜΗΘΕΙΑ ΕΡΓΑΣΤΗΡΙΑΚΩΝ ΑΝΑΛΩΣΙΜΩΝ:

Πρόγραμμα Σεμιναρίων Φεβρουαρίου - Ιουλίου

Transcript:

Vol. 1 No. 2 231 239 (Aug. 2008) CUDA 3 FFT 1, 2 1, 2 1, 2 1, 2, 3 NVIDIA GPU CUDA CUDA 3 FFT GeForce 8 GPU 3 FFT CUFFT 1.1 3.1 3.3 79.5 GFLOPS High Performance 3-D FFT in CUDA Environment Akira Nukada, 1, 2 Yasuhiko Ogata, 1, 2 Toshio Endo 1, 2 and Satoshi Matsuoka 1, 2, 3 CUDA environment, which is supported in latest NVIDIA GPUs, allows data sharing between threads using shared memory, and also provides more flexible memory accesses. We propose a high performance 3-D FFT algorithm for the CUDA environment. Using GeForce 8 series GPUs, we achieved a high performance up to 79.5 GFLOPS at 3-D FFT, which is from 3.1 to 3.3 times the performance compared with the performance of CUFFT library 1.1. 1. Graphics Processing Unit GPU 3 1 Tokyo Institute of Technology 2 Japan Science and Technology Agency, Core Research for Evolutional Science and Technology 3 National Institute of Informatics GPU CPU CPU GPU GPU GPU General-Purpose computation on Graphics Processing Unit GPGPU 1) GPU NVIDIA Cg 2) Microsoft High Level Shader Language HLSL C BrookGPU 3) GPU NVIDIA GPU CUDA Compute Unified Device Architecture 4) C/C++ GPU N 5) 6) GPU GPU FFT 7) 3 3 FFT CUDA FFT O(N log N) O(N) CPU GPU FFT GPU 8),9) 512 MB GPU 256 3 3 FFT 2. NVIDIA CUDA GPU CUDA 231 c 2008 Information Processing Society of Japan

232 CUDA 3 FFT CUDA GPU G80 GeForce 8800 GTX GeForce 8800 GTX 16 MP Streaming Processor SP 8 16 kb 8,192 8800 GTX 128 SP CUDA GPU SP SIMD Single Instruction Multiple Data CUDA 768 32 Warp 24 Warp 1 Warp 32 8 8 SP 1 CUDA GPU PCI-Express 2008 1 CUDA GPU GeForce 8 1 8800 GTS G92 512 MB 8800 GTS 512 G92 65 nm 90 nm G80 3 GPU 8800 GT 8800 GTX SP 8800 GTS 1 GFLOPS FFT SP AMD Phenom 9500 2.2 GHz 4 70.4 GFLOPS 35.2 GFLOPS 8800 GTS 6 GPU multirow FFT 10),11) multirow FFT FFT Table 1 1 NVIDIA GeForce 8 Specifications of NVIDIA GeForce 8 series GPUs. SP Memory Model MP # clock GFLOPS Capacity Interface Clock Bandwidth 8800 GT 14 112 1.500 GHz 336 512 MB 256-bit 1,800 MHz 57.6 GB/s 8800 GTS 16 128 1.625 GHz 416 512 MB 256-bit 1,940 MHz 62.0 GB/s 8800 GTX 16 128 1.350 GHz 345 768 MB 384-bit 1,800 MHz 86.4 GB/s Table 2 2 Number of streams and achieved memory bandwidth. Bandwidth (GB/s) # of streams 8800 GT 8800 GTX 1 48.1 71.7 2 47.6 71.9 4 47.4 71.8 8 36.4 65.4 16 27.8 43.7 32 25.7 37.5 64 20.2 32.3 128 22.6 35.4 256 18.4 30.7 3 FFT 1 FFT GPU SP SIMD multirow FFT 2 64 3 8800 GT 42 8800 GTX 48 128 MB 2 float float2 STREAMS SIMD

233 CUDA 3 FFT global void cuda_memcpy(float *s, float *d) { int index = mul24(blockidx.x,blockdim.x) + threadidx.x; int step = mul24(griddim.x, blockdim.x); int n = 256 * 256 * (256 / STREAMS); float2 src1 = (float2 *)s, dst1 = (float2 *)d; float2 src2 = src1 + n, dst2 = dst1 + n; float2 src3 = src2 + n, dst3 = dst2 + n;... for (int i = index; i < n; i += step) { dst1[i] = src1[i]; dst2[i] = src2[i];... dststreams[i] = srcstreams[i]; } } 10 GB/s 256 2.1 Coalesced Memory Access SP Half-Warp 16 1 4byte 8byte 16 byte 64 byte 128 byte 256 byte GPU GDDR Coalesced Memory Access Warp Coalesced Memory Access CUDA 3. CUDA 3 FFT 3 FFT 3 1 FFT CPU 3 FFT 3 X Y Z X Y Z CUDA GPU Coalesced Memory Access Half-Warp 16 32-bit float 4byte 16 = 64 byte 256 16 kb 1 3.1 3 FFT X CPU 1 FFT Y Z 1 16 kb

234 CUDA 3 FFT multirow FFT multirow FFT 256 FFT multirow FFT 512 + α 1,024 8 Coalescing Memory Access 256 FFT 2 16 FFT 16 FFT multirow FFT 51 52 128 256 FFT 16 FFT 2 8800 GT 8800 GTX 256 FFT multirow FFT 10 GB/s 16 FFT multirow FFT 38 GB/s Y Z 1 FFT 16 FFT 3 FFT 5 1 16 FFT Z 256 FFT 2 16 FFT Z 256 FFT 3 1 Y 4 2 Y 5 X 1 FFT Y Z 16 16 5 V(256,16,16,16,16) WORK Fortran 5 for Y Z 1 3 2 4 COMPLEX V(256,16,16,16,16),WORK(256,16,16,16,16) for Z1,Y2,Y1,X WORK(X,*,Y1,Y2,Z1)=FFT256_1(V(X,Y1,Y2,Z1,*)) for Y2,Y1,Z2,X V(X,Z2,*,Y1,Y2)=FFT256_2(WORK(X,Z2,Y1,Y2,*)) for Y1,Z1,Z2,X WORK(X,*,Z2,Z1,Y1)=FFT256_1(V(X,Z2,Z1,Y1,*)) for Y2,Y1,Z2,X V(X,Y2,*,Z2,Z1)=FFT256_2(WORK(X,Y2,Z2,Z1,*)) for Z1,Z2,Y1,Y2 V(*,Y2,Y1,Z2,Z1)=FFT256(V(*,Y2,Y1,Z2,Z1)) FFT256() 256 FFT FFT256 1() FFT256 2() 256 FFT 16 FFT for Z1,Y2,Y1,X Z1 Y2 Y1 X 4 4 (Z1*Y2*Y1*X) 1 Coalesced Memory Access 1 4 5 256 FFT 16 FFT 5 256 FFT 16 FFT 2 V(X,Y1,Y2,Z1,Z2) V(X,Y2,Y1,Z2,Z1) Stockham 11) Y Z 16 FFT 3 A D 4 Table 3 3 Definition of memory access patterns. A (256,*,16,16,16) B (256,16,*,16,16) C (256,16,16,*,16) D (256,16,16,16,*)

235 CUDA 3 FFT 4 GB/s 8800 GT 42 64 Table 4 Achieved memory bandwidth (GB/s) with each memory access pattern for input and output on 8800 GT. The number of thread blocks is 42, and the number of threads per thread block is 64. Output Input A B C D A 47.4 47.9 46.8 47.1 B 48.2 48.3 46.8 47.1 C 47.3 47.1 34.4 33.3 D 45.6 45.2 32.6 27.8 Table 6 6 The configuration of the system used for performance evaluations. CPU AMD Phenom 9500, 2.2 GHz, Quad-Core Chipset AMD 790FX RAM DDR2-800 SDRAM 1 GB 4 OS Fedora Core 8, linux 2.6.23 Driver NVIDIA Linux driver 169.04 Software CUDA SDK 1.1 CUDA Toolkit 1.1 GCC 4.1.2 5 GB/s 8800 GTX 48 64 Table 5 Achieved memory bandwidth (GB/s) with each memory access pattern for input and output on 8800 GTX. The number of thread blocks is 48, and the number of threads per thread block is 64. Output Input A B C D A 71.5 71.5 67.7 66.8 B 71.3 71.3 67.6 67.0 C 68.7 68.5 51.3 50.4 D 67.5 66.7 50.0 43.7 4 5 C D A B 1 A B 1 C D 5 2 1 4 3 3.2 1 4 5 1 4 16 FFT SP 5 X 256 FFT SP 64 256 FFT 1 256 FFT SP 1 4 64 SP 100% 64 8 SP 5 16 4. GeForce 8800 GT/GTS/GTX 3 FFT 6 790FX 8800 GT/GTS PCI-Express 2.0 8800 GTX PCI-Express 1.1 7 GPU 256 3 3 FFT GFLOPS N 3 3 FFT 15N 3 log 2 N CUFFT3D

236 CUDA 3 FFT Table 8 8 The elapsed time and achieved bandwidth in each step of our implementation. Step 1&3 Step 2&4 Step 5 Total Model Time (ms) GB/s Time (ms) GB/s Time (ms) GB/s Time (ms) GB/s 8800 GT 6.89 38.9 6.78 39.5 7.24 37.0 34.57 38.8 8800 GTS 6.31 42.5 6.29 42.7 6.00 44.7 31.20 43.0 8800 GTX 4.52 59.3 4.84 55.3 6.92 38.7 25.64 52.3 7 CUFFT 256 3 3 FFT Table 7 Performance of 3-D FFT of size 256 3. 9 1 FFT 65,536 256 FFT Table 9 The performance of 65,536 sets of 256-point 1-D FFTs. Our implementation CUFFT3D Model Time (ms) GFLOPS GFLOPS Our Implementation CUFFT1D Model Time (ms) GFLOPS Time (ms) GFLOPS 8800 GT 34.4 58.5 18.6 8800 GTS 31.2 64.6 20.6 8800 GTX 25.3 79.5 23.4 8800 GT 7.24 92.7 13.7 49.0 8800 GTS 6.00 111.8 11.4 58.9 8800 GTX 6.92 97.0 13.2 50.8 NVIDIA CUDA Toolkit 1.1 FFT 3 FFT GeForce 8 3 CUFFT 3.1 3.3 5 3 FFT 8 1 3 2 4 8 1&3 2&4 1 4 16 FFT 1 3 1.0 2 4 5 256 FFT 2 256 FFT 64 256 FFT 4 3 256 FFT 5 SP 8800 GT 8800 GTS 1 4 8800 GTX 1 4 SP SP 8800 GTS 8800 GTX 5 5 65,536 256 1 FFT CUFFT 1 FFT 9 CUFFT SP 8800 GTX 5 GFLOPS 30% 1 180 46 64 18 18 SP 32%

237 CUDA 3 FFT Table 11 11 256 3 3 FFT The performance of 3-D FFT of size 256 3 including the data transfer time between host and device. Host-to-Device 3D FFT on Device Device-to-Host Total Model PCI-Express Time (ms) GB/s Time (s) GFLOPS Time (ms) GB/s Time (ms) GFLOPS 8800 GT 2.0 x16 26.3 5.11 34.4 58.5 26.9 4.99 87.6 23.0 8800 GTS 2.0 x16 25.9 5.18 31.2 64.6 26.2 5.12 83.3 24.2 8800 GTX 1.1 x16 47.5 2.82 25.3 79.5 39.4 3.40 112 17.9 12 FFTW 3.2alpha2 CPU 256 3 3 FFT Table 12 The performance of 3-D FFT of size 256 3 in single precision using FFTW library 3.2alpha2 on CPUs. Processor Clock Socket/Core Compiler Time (ms) GFLOPS AMD Phenom 9500 2.20 GHz 1/4 gcc 4.1.2 195 10.3 Intel Core 2 Quad Q6700 2.66 GHz 1/4 gcc 4.1.2 188 10.7 AMD Opteron 880 2.60 GHz 8/16 Intel Compiler 9.1.45 220 9.15 10 64 3 128 3 256 3 3 FFT GFLOPS Table 10 The performance (GFLOPS) of 3-D FFT of size 64 3, 128 3 and 256 3. CUFFT3D Our implementation Model 64 3 128 3 256 3 64 3 128 3 256 3 8800 GT 5.33 11.5 18.6 37.0 49.1 58.5 8800 GTS 3.80 12.3 20.6 42.2 55.6 64.6 8800 GTX 5.11 15.3 23.4 46.5 67.5 79.5 64 3 128 3 10 GFLOPS 256 3 CUFFT 11 FFT GPU PCI-Express 1 GPU 8800 GTX GPU PCI-Express 2.0 FFT GPU GPU 3 FFT GPU GPU FFT 2 FFT X 12 256 3 3 FFT CPU CPU FFTW 12) 3.2alpha2 OpenMP SSE CPU OpenMP CPU GPU 11 CUDA GPU

238 CUDA 3 FFT 5. GPU CPU CUDA GPU CUDA 3 FFT X Y Z multirow FFT GeForce 8 GPU 256 3 3 FFT NVIDIA CUFFT 3.1 3.3 79.5 GFLOPS ULP-HPC Microsoft Technical Computing Initiative HPC-GPGPU: Large-Scale Commodity Accelerated Clusters and its Application to Advanced Structural Proteomics 1) General-Purpose Computation Using Graphics Hardware. http://www.gpgpu.org/ 2) Mark, W.R., Glanville, R.S., Akeley, K. and Kilgard, M.J.: Cg: A System for Programming Graphics Hardware in a C-like Language, ACM Trans. Graphics (Proc. SIGGRAPH 2003 ), Vol.22, No.3, pp.896 907 (2003). 3) Buck, I., Foley, T., Horn, D., Sugerman, J., Fatahalian, K., Houston, M. and Hanrahan, P.: Brook for GPUs: Stream Computing on Graphics Hardware, SIG- GRAPH 04: ACM Transactions on Graphics, Vol.23, No.3, pp.777 786 (2004). 4) NVIDIA CUDA Compute Unified Device Architecture. http://developer.nvidia.com/object/cuda.html 5) Stock, M.J. and Gharakhani, A.: Toward efficient GPU-accelerated N-body simulations, 46th AIAA Aerospace Sciences Meeting and Exhibit, AIAA 2008-608 (2008). 6) Larsen, E.S. and McAllister, D.: Fast Matrix Multiplies using Graphics Hardware, The 2001 ACM/IEEE conference on supercomputing (CDROM ), ACM Press (2001). 7) Cooley, J.W. and Tukey, J.W.: An Algorithm for the Machine Calculation of Complex Fourier Series, Math. Comput., Vol.19, pp.297 301 (1965). 8) Moreland, K. and Angel, E.: The FFT on a GPU, Proc. SIGGRAPH/Eurographics Workshop on Graphics Hardware 2003, pp.112 119 (2003). 9) Govindaraju, N.K., Larsen, S., Gray, J. and Manocha, D.: A Memory Model for Scientific Algorithms on Graphics Processors, The 2006 ACM/IEEE conference on supercomputing (CDROM ), IEEE (2006). 10) Swarztrauber, P.N.: FFT algorithms for vector computers, Parallel Computing, Vol.1, pp.45 63 (1984). 11) Van Loan, C.: Computational Frameworks for the Fast Fourier Transform, SIAM Press, Philadelphia, PA (1992). 12) Frigo, M. and Johnson, S.G.: The Design and Implementation of FFTW3, Proc. IEEE, Vol.93, No.2, pp.216 231 (2005). special issue on Program Generation, Optimization, and Platform Adaptation. ( 20 1 29 ) ( 20 5 1 ) 1976 2001 2004 2007 FFT IEEE-CS 1984 2007 GPU HPC

239 CUDA 3 FFT 1974 2001 2007 GCOE ACM IEEE-CS 1986 1989 1996 2001 4 2002 NAREGI 2006 TSUBAME 1996 1999 2006 JSPS Award ISOTAS 96 ECOOP 97 ISCOPE 99 ACM OOPSLA 02 IEEE CCGrid 03 HPCAsia 2005 Grid 2006 IEEE/ACM Supercomputing 04 Network Track Chair Reflection 01 IEEE CCGrid 06 Global Grid Forum Steering Group