Latest commit

History

176 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

GPU4S Bench - OBPMark-Kernel

Authors

  • Ivan Rodriguez Ferrandez (UPC-BSC)
  • Alvaro Jover-Alvarez (UPC-BSC)
  • Leonidas Kosmidis (BSC-UPC)
  • David Steenari (ESA)

Version: 1.0


Description

Embedded GPUs have been identified from both private and government space agencies as promising hardware technologies to satisfy the increased needs of payload processing.The GPU4S (GPU for Space) project funded from the EuropeanSpace Agency (ESA) has explored in detail the feasibility and the benefit of using them for space workloads. Currently at the closing phases of the project, in this paper we describe the main project outcomes and explain the lessons we learnt. In addition,we provide some guidelines for the next steps towards their adoption in space.

Implemented Languages

  • Standard C
  • CUDA
  • OpenCL
  • OpenMP
  • HIP

Benchmark List and Basic Description

For most of the benchmark suite there is a naïve, optimize and library versions. The benchmarks with their implementations are listed below.

  • Cifar 10
    • Naïve,optimize and library (only for CUDA)
  • Cifar 10 Multiple
    • Naïve,optimize and library (only for CUDA)
  • Convolution 2D
    • Naïve,optimize and library (only for CUDA)
  • Correlation 2D
    • Naïve,optimize
  • Fast fourier transform 2D bench
    • Library
  • Fast fourier transform
    • Naïve,optimize and library
  • Fast fourier transform Window
    • Naïve,optimize and library
  • Finite impulse response filter
    • Naïve
  • Local response normalization (LRN)
    • Naïve,optimize and library (only for CUDA)
  • Matrix multiplication
    • Naïve,optimize and library
  • Max pooling bench
    • Naïve,optimize and library (only for CUDA)
  • Memory Bandwidth
    • Naïve
  • Relu
    • Naïve,optimize and library (only for CUDA)
  • Softmax
    • Naïve,optimize and library (only for CUDA)
  • Wavelet transform
    • Naïve,optimize

Benchmark Compilation

For compile each of the benchmarks first you need to go to the folder for the specific benchmark that you want to compile. Inside of the folder you can call the Makefile for compilation. All of the Makefiles behaves the same for compilation.

There is three parts for the make file. First is the type of benchmark that you want to compile, that could be cuda (this will compile cuda naïve) will be the same for the rest of the languages, for different version will be will the suffixes -opt, -lib for the optimize and library versions, example cuda-opt, opencl-lib.

The second part is the definition of the data type, for all of the benchmarks float and double is supported and some of the benchmarks supports also integer. For specify the data type you need to add -DATATYPE=(language) for the languages the naming is in capital letters and are FLOAT,DOUBLE and INT.

The last parameter is the block size, this is only needed for the GPU code versions (OpenMP does not need this parameter). For the Makefile you need to provide -BLOCKSIZE=(SIZE) the block size is use square of the size that you provide, the recommended values are 4,8,16,32.

A full example will be as follows

make opencl-opt DATATYPE=FLOAT BLOCKSIZE=16

The compiled binary will be in the bin folder.

About

GPU4S Benchmarks

Resources

Stars

9 stars

Watchers

4 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Latest commit

History

176 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

GPU4S Bench - OBPMark-Kernel

Authors

  • Ivan Rodriguez Ferrandez (UPC-BSC)
  • Alvaro Jover-Alvarez (UPC-BSC)
  • Leonidas Kosmidis (BSC-UPC)
  • David Steenari (ESA)

Version: 1.0


Description

Embedded GPUs have been identified from both private and government space agencies as promising hardware technologies to satisfy the increased needs of payload processing.The GPU4S (GPU for Space) project funded from the EuropeanSpace Agency (ESA) has explored in detail the feasibility and the benefit of using them for space workloads. Currently at the closing phases of the project, in this paper we describe the main project outcomes and explain the lessons we learnt. In addition,we provide some guidelines for the next steps towards their adoption in space.

Implemented Languages

  • Standard C
  • CUDA
  • OpenCL
  • OpenMP
  • HIP

Benchmark List and Basic Description

For most of the benchmark suite there is a naïve, optimize and library versions. The benchmarks with their implementations are listed below.

  • Cifar 10
    • Naïve,optimize and library (only for CUDA)
  • Cifar 10 Multiple
    • Naïve,optimize and library (only for CUDA)
  • Convolution 2D
    • Naïve,optimize and library (only for CUDA)
  • Correlation 2D
    • Naïve,optimize
  • Fast fourier transform 2D bench
    • Library
  • Fast fourier transform
    • Naïve,optimize and library
  • Fast fourier transform Window
    • Naïve,optimize and library
  • Finite impulse response filter
    • Naïve
  • Local response normalization (LRN)
    • Naïve,optimize and library (only for CUDA)
  • Matrix multiplication
    • Naïve,optimize and library
  • Max pooling bench
    • Naïve,optimize and library (only for CUDA)
  • Memory Bandwidth
    • Naïve
  • Relu
    • Naïve,optimize and library (only for CUDA)
  • Softmax
    • Naïve,optimize and library (only for CUDA)
  • Wavelet transform
    • Naïve,optimize

Benchmark Compilation

For compile each of the benchmarks first you need to go to the folder for the specific benchmark that you want to compile. Inside of the folder you can call the Makefile for compilation. All of the Makefiles behaves the same for compilation.

There is three parts for the make file. First is the type of benchmark that you want to compile, that could be cuda (this will compile cuda naïve) will be the same for the rest of the languages, for different version will be will the suffixes -opt, -lib for the optimize and library versions, example cuda-opt, opencl-lib.

The second part is the definition of the data type, for all of the benchmarks float and double is supported and some of the benchmarks supports also integer. For specify the data type you need to add -DATATYPE=(language) for the languages the naming is in capital letters and are FLOAT,DOUBLE and INT.

The last parameter is the block size, this is only needed for the GPU code versions (OpenMP does not need this parameter). For the Makefile you need to provide -BLOCKSIZE=(SIZE) the block size is use square of the size that you provide, the recommended values are 4,8,16,32.

A full example will be as follows

make opencl-opt DATATYPE=FLOAT BLOCKSIZE=16

The compiled binary will be in the bin folder.

About

GPU4S Benchmarks

Resources

Stars

9 stars

Watchers

4 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

176 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

GPU4S Bench - OBPMark-Kernel

Authors

  • Ivan Rodriguez Ferrandez (UPC-BSC)
  • Alvaro Jover-Alvarez (UPC-BSC)
  • Leonidas Kosmidis (BSC-UPC)
  • David Steenari (ESA)

Version: 1.0


Description

Embedded GPUs have been identified from both private and government space agencies as promising hardware technologies to satisfy the increased needs of payload processing.The GPU4S (GPU for Space) project funded from the EuropeanSpace Agency (ESA) has explored in detail the feasibility and the benefit of using them for space workloads. Currently at the closing phases of the project, in this paper we describe the main project outcomes and explain the lessons we learnt. In addition,we provide some guidelines for the next steps towards their adoption in space.

Implemented Languages

  • Standard C
  • CUDA
  • OpenCL
  • OpenMP
  • HIP

Benchmark List and Basic Description

For most of the benchmark suite there is a naïve, optimize and library versions. The benchmarks with their implementations are listed below.

  • Cifar 10
    • Naïve,optimize and library (only for CUDA)
  • Cifar 10 Multiple
    • Naïve,optimize and library (only for CUDA)
  • Convolution 2D
    • Naïve,optimize and library (only for CUDA)
  • Correlation 2D
    • Naïve,optimize
  • Fast fourier transform 2D bench
    • Library
  • Fast fourier transform
    • Naïve,optimize and library
  • Fast fourier transform Window
    • Naïve,optimize and library
  • Finite impulse response filter
    • Naïve
  • Local response normalization (LRN)
    • Naïve,optimize and library (only for CUDA)
  • Matrix multiplication
    • Naïve,optimize and library
  • Max pooling bench
    • Naïve,optimize and library (only for CUDA)
  • Memory Bandwidth
    • Naïve
  • Relu
    • Naïve,optimize and library (only for CUDA)
  • Softmax
    • Naïve,optimize and library (only for CUDA)
  • Wavelet transform
    • Naïve,optimize

Benchmark Compilation

For compile each of the benchmarks first you need to go to the folder for the specific benchmark that you want to compile. Inside of the folder you can call the Makefile for compilation. All of the Makefiles behaves the same for compilation.

There is three parts for the make file. First is the type of benchmark that you want to compile, that could be cuda (this will compile cuda naïve) will be the same for the rest of the languages, for different version will be will the suffixes -opt, -lib for the optimize and library versions, example cuda-opt, opencl-lib.

The second part is the definition of the data type, for all of the benchmarks float and double is supported and some of the benchmarks supports also integer. For specify the data type you need to add -DATATYPE=(language) for the languages the naming is in capital letters and are FLOAT,DOUBLE and INT.

The last parameter is the block size, this is only needed for the GPU code versions (OpenMP does not need this parameter). For the Makefile you need to provide -BLOCKSIZE=(SIZE) the block size is use square of the size that you provide, the recommended values are 4,8,16,32.

A full example will be as follows

make opencl-opt DATATYPE=FLOAT BLOCKSIZE=16

The compiled binary will be in the bin folder.

About

GPU4S Benchmarks

Resources

Stars

9 stars

Watchers

4 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

176 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

GPU4S Bench - OBPMark-Kernel

Authors

  • Ivan Rodriguez Ferrandez (UPC-BSC)
  • Alvaro Jover-Alvarez (UPC-BSC)
  • Leonidas Kosmidis (BSC-UPC)
  • David Steenari (ESA)

Version: 1.0


Description

Embedded GPUs have been identified from both private and government space agencies as promising hardware technologies to satisfy the increased needs of payload processing.The GPU4S (GPU for Space) project funded from the EuropeanSpace Agency (ESA) has explored in detail the feasibility and the benefit of using them for space workloads. Currently at the closing phases of the project, in this paper we describe the main project outcomes and explain the lessons we learnt. In addition,we provide some guidelines for the next steps towards their adoption in space.

Implemented Languages

  • Standard C
  • CUDA
  • OpenCL
  • OpenMP
  • HIP

Benchmark List and Basic Description

For most of the benchmark suite there is a naïve, optimize and library versions. The benchmarks with their implementations are listed below.

  • Cifar 10
    • Naïve,optimize and library (only for CUDA)
  • Cifar 10 Multiple
    • Naïve,optimize and library (only for CUDA)
  • Convolution 2D
    • Naïve,optimize and library (only for CUDA)
  • Correlation 2D
    • Naïve,optimize
  • Fast fourier transform 2D bench
    • Library
  • Fast fourier transform
    • Naïve,optimize and library
  • Fast fourier transform Window
    • Naïve,optimize and library
  • Finite impulse response filter
    • Naïve
  • Local response normalization (LRN)
    • Naïve,optimize and library (only for CUDA)
  • Matrix multiplication
    • Naïve,optimize and library
  • Max pooling bench
    • Naïve,optimize and library (only for CUDA)
  • Memory Bandwidth
    • Naïve
  • Relu
    • Naïve,optimize and library (only for CUDA)
  • Softmax
    • Naïve,optimize and library (only for CUDA)
  • Wavelet transform
    • Naïve,optimize

Benchmark Compilation

For compile each of the benchmarks first you need to go to the folder for the specific benchmark that you want to compile. Inside of the folder you can call the Makefile for compilation. All of the Makefiles behaves the same for compilation.

There is three parts for the make file. First is the type of benchmark that you want to compile, that could be cuda (this will compile cuda naïve) will be the same for the rest of the languages, for different version will be will the suffixes -opt, -lib for the optimize and library versions, example cuda-opt, opencl-lib.

The second part is the definition of the data type, for all of the benchmarks float and double is supported and some of the benchmarks supports also integer. For specify the data type you need to add -DATATYPE=(language) for the languages the naming is in capital letters and are FLOAT,DOUBLE and INT.

The last parameter is the block size, this is only needed for the GPU code versions (OpenMP does not need this parameter). For the Makefile you need to provide -BLOCKSIZE=(SIZE) the block size is use square of the size that you provide, the recommended values are 4,8,16,32.

A full example will be as follows

make opencl-opt DATATYPE=FLOAT BLOCKSIZE=16

The compiled binary will be in the bin folder.

About

GPU4S Benchmarks

Resources

Stars

9 stars

Watchers

4 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Latest commit

History

176 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

GPU4S Bench - OBPMark-Kernel

Authors

  • Ivan Rodriguez Ferrandez (UPC-BSC)
  • Alvaro Jover-Alvarez (UPC-BSC)
  • Leonidas Kosmidis (BSC-UPC)
  • David Steenari (ESA)

Version: 1.0


Description

Embedded GPUs have been identified from both private and government space agencies as promising hardware technologies to satisfy the increased needs of payload processing.The GPU4S (GPU for Space) project funded from the EuropeanSpace Agency (ESA) has explored in detail the feasibility and the benefit of using them for space workloads. Currently at the closing phases of the project, in this paper we describe the main project outcomes and explain the lessons we learnt. In addition,we provide some guidelines for the next steps towards their adoption in space.

Implemented Languages

  • Standard C
  • CUDA
  • OpenCL
  • OpenMP
  • HIP

Benchmark List and Basic Description

For most of the benchmark suite there is a naïve, optimize and library versions. The benchmarks with their implementations are listed below.

  • Cifar 10
    • Naïve,optimize and library (only for CUDA)
  • Cifar 10 Multiple
    • Naïve,optimize and library (only for CUDA)
  • Convolution 2D
    • Naïve,optimize and library (only for CUDA)
  • Correlation 2D
    • Naïve,optimize
  • Fast fourier transform 2D bench
    • Library
  • Fast fourier transform
    • Naïve,optimize and library
  • Fast fourier transform Window
    • Naïve,optimize and library
  • Finite impulse response filter
    • Naïve
  • Local response normalization (LRN)
    • Naïve,optimize and library (only for CUDA)
  • Matrix multiplication
    • Naïve,optimize and library
  • Max pooling bench
    • Naïve,optimize and library (only for CUDA)
  • Memory Bandwidth
    • Naïve
  • Relu
    • Naïve,optimize and library (only for CUDA)
  • Softmax
    • Naïve,optimize and library (only for CUDA)
  • Wavelet transform
    • Naïve,optimize

Benchmark Compilation

For compile each of the benchmarks first you need to go to the folder for the specific benchmark that you want to compile. Inside of the folder you can call the Makefile for compilation. All of the Makefiles behaves the same for compilation.

There is three parts for the make file. First is the type of benchmark that you want to compile, that could be cuda (this will compile cuda naïve) will be the same for the rest of the languages, for different version will be will the suffixes -opt, -lib for the optimize and library versions, example cuda-opt, opencl-lib.

The second part is the definition of the data type, for all of the benchmarks float and double is supported and some of the benchmarks supports also integer. For specify the data type you need to add -DATATYPE=(language) for the languages the naming is in capital letters and are FLOAT,DOUBLE and INT.

The last parameter is the block size, this is only needed for the GPU code versions (OpenMP does not need this parameter). For the Makefile you need to provide -BLOCKSIZE=(SIZE) the block size is use square of the size that you provide, the recommended values are 4,8,16,32.

A full example will be as follows

make opencl-opt DATATYPE=FLOAT BLOCKSIZE=16

The compiled binary will be in the bin folder.

About

GPU4S Benchmarks

Resources

Stars

9 stars

Watchers

4 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

176 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

GPU4S Bench - OBPMark-Kernel

Authors

  • Ivan Rodriguez Ferrandez (UPC-BSC)
  • Alvaro Jover-Alvarez (UPC-BSC)
  • Leonidas Kosmidis (BSC-UPC)
  • David Steenari (ESA)

Version: 1.0


Description

Embedded GPUs have been identified from both private and government space agencies as promising hardware technologies to satisfy the increased needs of payload processing.The GPU4S (GPU for Space) project funded from the EuropeanSpace Agency (ESA) has explored in detail the feasibility and the benefit of using them for space workloads. Currently at the closing phases of the project, in this paper we describe the main project outcomes and explain the lessons we learnt. In addition,we provide some guidelines for the next steps towards their adoption in space.

Implemented Languages

  • Standard C
  • CUDA
  • OpenCL
  • OpenMP
  • HIP

Benchmark List and Basic Description

For most of the benchmark suite there is a naïve, optimize and library versions. The benchmarks with their implementations are listed below.

  • Cifar 10
    • Naïve,optimize and library (only for CUDA)
  • Cifar 10 Multiple
    • Naïve,optimize and library (only for CUDA)
  • Convolution 2D
    • Naïve,optimize and library (only for CUDA)
  • Correlation 2D
    • Naïve,optimize
  • Fast fourier transform 2D bench
    • Library
  • Fast fourier transform
    • Naïve,optimize and library
  • Fast fourier transform Window
    • Naïve,optimize and library
  • Finite impulse response filter
    • Naïve
  • Local response normalization (LRN)
    • Naïve,optimize and library (only for CUDA)
  • Matrix multiplication
    • Naïve,optimize and library
  • Max pooling bench
    • Naïve,optimize and library (only for CUDA)
  • Memory Bandwidth
    • Naïve
  • Relu
    • Naïve,optimize and library (only for CUDA)
  • Softmax
    • Naïve,optimize and library (only for CUDA)
  • Wavelet transform
    • Naïve,optimize

Benchmark Compilation

For compile each of the benchmarks first you need to go to the folder for the specific benchmark that you want to compile. Inside of the folder you can call the Makefile for compilation. All of the Makefiles behaves the same for compilation.

There is three parts for the make file. First is the type of benchmark that you want to compile, that could be cuda (this will compile cuda naïve) will be the same for the rest of the languages, for different version will be will the suffixes -opt, -lib for the optimize and library versions, example cuda-opt, opencl-lib.

The second part is the definition of the data type, for all of the benchmarks float and double is supported and some of the benchmarks supports also integer. For specify the data type you need to add -DATATYPE=(language) for the languages the naming is in capital letters and are FLOAT,DOUBLE and INT.

The last parameter is the block size, this is only needed for the GPU code versions (OpenMP does not need this parameter). For the Makefile you need to provide -BLOCKSIZE=(SIZE) the block size is use square of the size that you provide, the recommended values are 4,8,16,32.

A full example will be as follows

make opencl-opt DATATYPE=FLOAT BLOCKSIZE=16

The compiled binary will be in the bin folder.

About

GPU4S Benchmarks

Resources

Stars

9 stars

Watchers

4 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

176 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

GPU4S Bench - OBPMark-Kernel

Authors

  • Ivan Rodriguez Ferrandez (UPC-BSC)
  • Alvaro Jover-Alvarez (UPC-BSC)
  • Leonidas Kosmidis (BSC-UPC)
  • David Steenari (ESA)

Version: 1.0


Description

Embedded GPUs have been identified from both private and government space agencies as promising hardware technologies to satisfy the increased needs of payload processing.The GPU4S (GPU for Space) project funded from the EuropeanSpace Agency (ESA) has explored in detail the feasibility and the benefit of using them for space workloads. Currently at the closing phases of the project, in this paper we describe the main project outcomes and explain the lessons we learnt. In addition,we provide some guidelines for the next steps towards their adoption in space.

Implemented Languages

  • Standard C
  • CUDA
  • OpenCL
  • OpenMP
  • HIP

Benchmark List and Basic Description

For most of the benchmark suite there is a naïve, optimize and library versions. The benchmarks with their implementations are listed below.

  • Cifar 10
    • Naïve,optimize and library (only for CUDA)
  • Cifar 10 Multiple
    • Naïve,optimize and library (only for CUDA)
  • Convolution 2D
    • Naïve,optimize and library (only for CUDA)
  • Correlation 2D
    • Naïve,optimize
  • Fast fourier transform 2D bench
    • Library
  • Fast fourier transform
    • Naïve,optimize and library
  • Fast fourier transform Window
    • Naïve,optimize and library
  • Finite impulse response filter
    • Naïve
  • Local response normalization (LRN)
    • Naïve,optimize and library (only for CUDA)
  • Matrix multiplication
    • Naïve,optimize and library
  • Max pooling bench
    • Naïve,optimize and library (only for CUDA)
  • Memory Bandwidth
    • Naïve
  • Relu
    • Naïve,optimize and library (only for CUDA)
  • Softmax
    • Naïve,optimize and library (only for CUDA)
  • Wavelet transform
    • Naïve,optimize

Benchmark Compilation

For compile each of the benchmarks first you need to go to the folder for the specific benchmark that you want to compile. Inside of the folder you can call the Makefile for compilation. All of the Makefiles behaves the same for compilation.

There is three parts for the make file. First is the type of benchmark that you want to compile, that could be cuda (this will compile cuda naïve) will be the same for the rest of the languages, for different version will be will the suffixes -opt, -lib for the optimize and library versions, example cuda-opt, opencl-lib.

The second part is the definition of the data type, for all of the benchmarks float and double is supported and some of the benchmarks supports also integer. For specify the data type you need to add -DATATYPE=(language) for the languages the naming is in capital letters and are FLOAT,DOUBLE and INT.

The last parameter is the block size, this is only needed for the GPU code versions (OpenMP does not need this parameter). For the Makefile you need to provide -BLOCKSIZE=(SIZE) the block size is use square of the size that you provide, the recommended values are 4,8,16,32.

A full example will be as follows

make opencl-opt DATATYPE=FLOAT BLOCKSIZE=16

The compiled binary will be in the bin folder.

About

GPU4S Benchmarks

Resources

Stars

9 stars

Watchers

4 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Latest commit

History

176 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

GPU4S Bench - OBPMark-Kernel

Authors

  • Ivan Rodriguez Ferrandez (UPC-BSC)
  • Alvaro Jover-Alvarez (UPC-BSC)
  • Leonidas Kosmidis (BSC-UPC)
  • David Steenari (ESA)

Version: 1.0


Description

Embedded GPUs have been identified from both private and government space agencies as promising hardware technologies to satisfy the increased needs of payload processing.The GPU4S (GPU for Space) project funded from the EuropeanSpace Agency (ESA) has explored in detail the feasibility and the benefit of using them for space workloads. Currently at the closing phases of the project, in this paper we describe the main project outcomes and explain the lessons we learnt. In addition,we provide some guidelines for the next steps towards their adoption in space.

Implemented Languages

  • Standard C
  • CUDA
  • OpenCL
  • OpenMP
  • HIP

Benchmark List and Basic Description

For most of the benchmark suite there is a naïve, optimize and library versions. The benchmarks with their implementations are listed below.

  • Cifar 10
    • Naïve,optimize and library (only for CUDA)
  • Cifar 10 Multiple
    • Naïve,optimize and library (only for CUDA)
  • Convolution 2D
    • Naïve,optimize and library (only for CUDA)
  • Correlation 2D
    • Naïve,optimize
  • Fast fourier transform 2D bench
    • Library
  • Fast fourier transform
    • Naïve,optimize and library
  • Fast fourier transform Window
    • Naïve,optimize and library
  • Finite impulse response filter
    • Naïve
  • Local response normalization (LRN)
    • Naïve,optimize and library (only for CUDA)
  • Matrix multiplication
    • Naïve,optimize and library
  • Max pooling bench
    • Naïve,optimize and library (only for CUDA)
  • Memory Bandwidth
    • Naïve
  • Relu
    • Naïve,optimize and library (only for CUDA)
  • Softmax
    • Naïve,optimize and library (only for CUDA)
  • Wavelet transform
    • Naïve,optimize

Benchmark Compilation

For compile each of the benchmarks first you need to go to the folder for the specific benchmark that you want to compile. Inside of the folder you can call the Makefile for compilation. All of the Makefiles behaves the same for compilation.

There is three parts for the make file. First is the type of benchmark that you want to compile, that could be cuda (this will compile cuda naïve) will be the same for the rest of the languages, for different version will be will the suffixes -opt, -lib for the optimize and library versions, example cuda-opt, opencl-lib.

The second part is the definition of the data type, for all of the benchmarks float and double is supported and some of the benchmarks supports also integer. For specify the data type you need to add -DATATYPE=(language) for the languages the naming is in capital letters and are FLOAT,DOUBLE and INT.

The last parameter is the block size, this is only needed for the GPU code versions (OpenMP does not need this parameter). For the Makefile you need to provide -BLOCKSIZE=(SIZE) the block size is use square of the size that you provide, the recommended values are 4,8,16,32.

A full example will be as follows

make opencl-opt DATATYPE=FLOAT BLOCKSIZE=16

The compiled binary will be in the bin folder.

About

GPU4S Benchmarks

Resources

Stars

9 stars

Watchers

4 watching

Forks

Releases

Packages

Contributors

Languages