{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,6,2]],"date-time":"2026-06-02T07:12:18Z","timestamp":1780384338100,"version":"3.54.1"},"reference-count":45,"publisher":"Association for Computing Machinery (ACM)","issue":"3","license":[{"start":{"date-parts":[[2004,8,1]],"date-time":"2004-08-01T00:00:00Z","timestamp":1091318400000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/www.acm.org\/publications\/policies\/copyright_policy#Background"}],"content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":["ACM Trans. Graph."],"published-print":{"date-parts":[[2004,8]]},"abstract":"<jats:p>In this paper, we present Brook for GPUs, a system for general-purpose computation on programmable graphics hardware. Brook extends C to include simple data-parallel constructs, enabling the use of the GPU as a streaming co-processor. We present a compiler and runtime system that abstracts and virtualizes many aspects of graphics hardware. In addition, we present an analysis of the effectiveness of the GPU as a compute engine compared to the CPU, to determine when the GPU can outperform the CPU for a particular algorithm. We evaluate our system with five applications, the SAXPY and SGEMV BLAS operators, image segmentation, FFT, and ray tracing. For these applications, we demonstrate that our Brook implementations perform comparably to hand-written GPU code and up to seven times faster than their CPU counterparts.<\/jats:p>","DOI":"10.1145\/1015706.1015800","type":"journal-article","created":{"date-parts":[[2004,10,7]],"date-time":"2004-10-07T17:38:56Z","timestamp":1097170736000},"page":"777-786","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":495,"title":["Brook for GPUs"],"prefix":"10.1145","volume":"23","author":[{"given":"Ian","family":"Buck","sequence":"first","affiliation":[{"name":"Stanford University"}],"role":[{"vocabulary":"crossref","role":"author"}]},{"given":"Theresa","family":"Foley","sequence":"additional","affiliation":[{"name":"Stanford University"}],"role":[{"vocabulary":"crossref","role":"author"}]},{"given":"Daniel","family":"Horn","sequence":"additional","affiliation":[{"name":"Stanford University"}],"role":[{"vocabulary":"crossref","role":"author"}]},{"given":"Jeremy","family":"Sugerman","sequence":"additional","affiliation":[{"name":"Stanford University"}],"role":[{"vocabulary":"crossref","role":"author"}]},{"given":"Kayvon","family":"Fatahalian","sequence":"additional","affiliation":[{"name":"Stanford University"}],"role":[{"vocabulary":"crossref","role":"author"}]},{"given":"Mike","family":"Houston","sequence":"additional","affiliation":[{"name":"Stanford University"}],"role":[{"vocabulary":"crossref","role":"author"}]},{"given":"Pat","family":"Hanrahan","sequence":"additional","affiliation":[{"name":"Stanford University"}],"role":[{"vocabulary":"crossref","role":"author"}]}],"member":"320","published-online":{"date-parts":[[2004,8]]},"reference":[{"key":"e_1_2_2_1_1","unstructured":"ATI 2004. Hardware image processing using ARB_fragment_program. http:\/\/www.ati.com\/developer\/sdk\/RadeonSDK\/Html\/Samples\/OpenGL\/HW_Image_Processing.html."},{"key":"e_1_2_2_2_1","unstructured":"ATI 2004. Radeon X800 product site. http:\/\/www.ati.com\/products\/radeonx800."},{"key":"e_1_2_2_3_1","doi-asserted-by":"publisher","DOI":"10.1145\/882262.882364"},{"key":"e_1_2_2_4_1","doi-asserted-by":"publisher","DOI":"10.1109\/76.388062"},{"key":"e_1_2_2_5_1","unstructured":"BROOK 2004. Brook project web page. http:\/\/brook.sourceforge.net."},{"key":"e_1_2_2_6_1","volume-title":"Tech. Rep. CSTR 2003-04 10\/31\/03 12\/5\/03","author":"BUCK I.","year":"2004","unstructured":"BUCK, I. 2004. Brook specification v.0.2. Tech. Rep. CSTR 2003-04 10\/31\/03 12\/5\/03, Stanford University."},{"key":"e_1_2_2_7_1","doi-asserted-by":"publisher","DOI":"10.5555\/569046.569052"},{"key":"e_1_2_2_8_1","doi-asserted-by":"publisher","DOI":"10.5555\/569046.569056"},{"key":"e_1_2_2_9_1","doi-asserted-by":"publisher","DOI":"10.1090\/S0025-5718-1965-0178586-1"},{"key":"e_1_2_2_10_1","doi-asserted-by":"publisher","DOI":"10.1145\/1048935.1050187"},{"key":"e_1_2_2_12_1","doi-asserted-by":"publisher","DOI":"10.1109\/MCG.1986.276612"},{"key":"e_1_2_2_13_1","unstructured":"FLISAKOWSKI S. 2004. cTool library. http:\/\/ctool.sourceforge.net."},{"key":"e_1_2_2_14_1","unstructured":"FRIGO M. AND JOHNSON S. G. 2003. benchFFT home page. http:\/\/www.fftw.org\/benchfft."},{"key":"e_1_2_2_15_1","doi-asserted-by":"publisher","DOI":"10.1145\/74333.74341"},{"key":"e_1_2_2_16_1","doi-asserted-by":"publisher","DOI":"10.5555\/549928.795733"},{"key":"e_1_2_2_17_1","doi-asserted-by":"publisher","DOI":"10.5555\/844174.844189"},{"key":"e_1_2_2_18_1","unstructured":"INTEL 2003. Intel software development products. http:\/\/www.intel.com\/software\/products\/compilers."},{"key":"e_1_2_2_19_1","unstructured":"INTEL 2004. Intel math kernel library. http:\/\/www.intel.com\/software\/products\/mkl."},{"key":"e_1_2_2_20_1","doi-asserted-by":"publisher","DOI":"10.5555\/846216.846937"},{"key":"e_1_2_2_21_1","unstructured":"KESSENICH J. BALDWIN D. AND ROST R. 2003. The OpenGL Shading Language. http:\/\/www.opengl.org\/documentation\/oglsl.html."},{"key":"e_1_2_2_22_1","doi-asserted-by":"publisher","DOI":"10.1109\/40.918001"},{"key":"e_1_2_2_24_1","doi-asserted-by":"publisher","DOI":"10.1145\/882262.882363"},{"key":"e_1_2_2_25_1","unstructured":"LABONTE F. HOROWITZ M. AND BUCK I. 2004. An evaluation of graphics processors as stream co-processors. Unpublished."},{"key":"e_1_2_2_26_1","doi-asserted-by":"publisher","DOI":"10.1145\/355841.355847"},{"key":"e_1_2_2_27_1","doi-asserted-by":"publisher","DOI":"10.1145\/383259.383274"},{"key":"e_1_2_2_28_1","doi-asserted-by":"publisher","DOI":"10.1145\/882262.882362"},{"key":"e_1_2_2_30_1","doi-asserted-by":"publisher","DOI":"10.5555\/569046.569055"},{"key":"e_1_2_2_31_1","doi-asserted-by":"publisher","unstructured":"McCOOL M. DU TOIT S. POPA T. CHAN B. AND MOULE K. 2004. Shader algebra. ACM Trans. Graph. 10.1145\/1015706.1015801","DOI":"10.1145\/1015706.1015801"},{"key":"e_1_2_2_32_1","unstructured":"MICROSOFT 2003. High-level shader language. http:\/\/msdn.microsoft.com\/library\/default.asp?url=\/library\/enus\/directx9_c\/directx\/graphics\/reference\/Shaders\/HighLevelShaderLanguage.asp."},{"key":"e_1_2_2_33_1","doi-asserted-by":"publisher","DOI":"10.1145\/133994.134067"},{"key":"e_1_2_2_34_1","doi-asserted-by":"publisher","DOI":"10.5555\/844174.844191"},{"key":"e_1_2_2_35_1","unstructured":"NVIDIA 2004. GeForce 6800: Product overview. http:\/\/nvidia.com\/page\/geforce_6800.html."},{"key":"e_1_2_2_36_1","doi-asserted-by":"publisher","DOI":"10.1145\/346876.346883"},{"key":"e_1_2_2_37_1","doi-asserted-by":"publisher","DOI":"10.1145\/344779.344976"},{"key":"e_1_2_2_38_1","unstructured":"PERCY J. 2003. OpenGL Extensions. http:\/\/mirror.ati.com\/developer\/SIGGRAPH03\/Percy_OpenGL_Extensions_SIG03.pdf."},{"key":"e_1_2_2_39_1","doi-asserted-by":"publisher","DOI":"10.1109\/34.56205"},{"key":"e_1_2_2_40_1","doi-asserted-by":"publisher","DOI":"10.1145\/566654.566640"},{"key":"e_1_2_2_41_1","doi-asserted-by":"publisher","unstructured":"RUSSELL R. 1978. The Cray-1 computer system. In Comm. ACM 63--72. 10.1145\/359327.359336","DOI":"10.1145\/359327.359336"},{"key":"e_1_2_2_42_1","doi-asserted-by":"publisher","DOI":"10.1145\/859618.859667"},{"key":"e_1_2_2_43_1","doi-asserted-by":"publisher","DOI":"10.1109\/VISUAL.2003.1250369"},{"key":"e_1_2_2_44_1","volume-title":"Proceedings of the Fifth International Conference on Bioastronomy, Editrice Compositori, C. Cosmovici, S. Bowyer, and D. Wertheimer, Eds.","author":"SULLIVAN W.","year":"1997","unstructured":"SULLIVAN, W., WERTHIMER, D., BOWYER, S., COBB, J., GEDYE, D., AND ANDERSON, D. 1997. A new major SETI project based on Project Serendip data and 100,000 personal computers. In Astronomical and Biochemical Origins and the Search for Life in the Universe, Proceedings of the Fifth International Conference on Bioastronomy, Editrice Compositori, C. Cosmovici, S. Bowyer, and D. Wertheimer, Eds."},{"key":"e_1_2_2_45_1","doi-asserted-by":"publisher","DOI":"10.1109\/MM.2002.997877"},{"key":"e_1_2_2_46_1","doi-asserted-by":"publisher","DOI":"10.5555\/774861.774894"},{"key":"e_1_2_2_48_1","doi-asserted-by":"publisher","DOI":"10.1016\/S0167-8191(00)00086-7"},{"key":"e_1_2_2_49_1","volume-title":"AND OPENGL ARCHITECTURE REVIEW BOARD","author":"WOO M.","year":"1999","unstructured":"WOO, M., NEIDER, J., DAVIS, T., SHREINER, D., AND OPENGL ARCHITECTURE REVIEW BOARD, 1999. OpenGL programming guide."}],"container-title":["ACM Transactions on Graphics"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/1015706.1015800","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/1015706.1015800","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,6,18]],"date-time":"2025-06-18T21:26:24Z","timestamp":1750281984000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/1015706.1015800"}},"subtitle":["stream computing on graphics hardware"],"short-title":[],"issued":{"date-parts":[[2004,8]]},"references-count":45,"journal-issue":{"issue":"3","published-print":{"date-parts":[[2004,8]]}},"alternative-id":["10.1145\/1015706.1015800"],"URL":"https:\/\/doi.org\/10.1145\/1015706.1015800","relation":{},"ISSN":["0730-0301","1557-7368"],"issn-type":[{"value":"0730-0301","type":"print"},{"value":"1557-7368","type":"electronic"}],"subject":[],"published":{"date-parts":[[2004,8]]},"assertion":[{"value":"2004-08-01","order":3,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}