Compare commits

...

6 Commits

Author SHA1 Message Date
2daed2f9eb feat(rippling): add lab Image Rippling 2D
- Full compute - Demi compute (optimisation)
2025-11-14 12:34:05 +01:00
3cc8fef087 feat(lab02): add result Slice GM 2025-11-07 12:17:32 +01:00
043d28b5dd feat(lab01): add result of GM Host 2025-11-07 12:17:12 +01:00
b556656a2d chore: update symlink cuda 3d cubre 2025-11-07 12:16:43 +01:00
efed56c0b1 chore: update symlink cuda 2025-11-07 12:16:19 +01:00
1732758656 feat(lab02): add Slice GM 2025-11-07 12:15:18 +01:00
85 changed files with 1409 additions and 333 deletions

View File

@@ -1 +1 @@
/home/bilat/CBI/Dropbox/02_CBI_LINUX/CoursCuda/toStudent/code/WCudaStudent/Student_Cuda/src/core/01_student/05_addvector_stream/02_baseline/host/AddVector.h
/home/mse15/CUDA/toStudent/code/WCudaStudent/Student_Cuda/src/core/01_student/05_addvector_stream/02_baseline/host/AddVector.h

View File

@@ -1 +1 @@
/home/bilat/CBI/Dropbox/02_CBI_LINUX/CoursCuda/toStudent/code/WCudaStudent/Student_Cuda/src/core/01_student/05_addvector_stream/03_bistream/host/AddVectorBistream.h
/home/mse15/CUDA/toStudent/code/WCudaStudent/Student_Cuda/src/core/01_student/05_addvector_stream/03_bistream/host/AddVectorBistream.h

View File

@@ -1 +1 @@
/home/bilat/CBI/Dropbox/02_CBI_LINUX/CoursCuda/toStudent/code/WCudaStudent/Student_Cuda/src/core/01_student/05_addvector_stream/03_bistream/host/AddVectorBistream_BestGrid.h
/home/mse15/CUDA/toStudent/code/WCudaStudent/Student_Cuda/src/core/01_student/05_addvector_stream/03_bistream/host/AddVectorBistream_BestGrid.h

View File

@@ -1 +1 @@
/home/bilat/CBI/Dropbox/02_CBI_LINUX/CoursCuda/toStudent/code/WCudaStudent/Student_Cuda/src/core/01_student/05_addvector_stream/03_tristream/host/AddVectorTristream.h
/home/mse15/CUDA/toStudent/code/WCudaStudent/Student_Cuda/src/core/01_student/05_addvector_stream/03_tristream/host/AddVectorTristream.h

View File

@@ -1 +1 @@
/home/bilat/CBI/Dropbox/02_CBI_LINUX/CoursCuda/toStudent/code/WCudaStudent/Student_Cuda/src/core/01_student/05_addvector_stream/03_tristream/host/AddVectorTristream_BestGrid.h
/home/mse15/CUDA/toStudent/code/WCudaStudent/Student_Cuda/src/core/01_student/05_addvector_stream/03_tristream/host/AddVectorTristream_BestGrid.h

View File

@@ -1 +1 @@
/home/bilat/CBI/Dropbox/02_CBI_LINUX/CoursCuda/toStudent/code/WCudaStudent/Student_Cuda/src/core/01_student/05_addvector_stream/02_baseline/host/AddVector_BestGrid.h
/home/mse15/CUDA/toStudent/code/WCudaStudent/Student_Cuda/src/core/01_student/05_addvector_stream/02_baseline/host/AddVector_BestGrid.h

View File

@@ -1 +1 @@
/home/bilat/CBI/Dropbox/02_CBI_LINUX/CoursCuda/toStudent/code/WCudaStudent/Student_Cuda/src/core/01_student/04_Montecarlo/01_Montecarlo_mono/host/Montecarlo.h
/home/mse15/CUDA/toStudent/code/WCudaStudent/Student_Cuda/src/core/01_student/04_Montecarlo/01_Montecarlo_mono/host/Montecarlo.h

View File

@@ -1 +1 @@
/home/bilat/CBI/Dropbox/02_CBI_LINUX/CoursCuda/toStudent/code/WCudaStudent/Student_Cuda/src/core/01_student/04_Montecarlo/02_Montecarlo_multi/host/MontecarloMulti_BestGrid.h
/home/mse15/CUDA/toStudent/code/WCudaStudent/Student_Cuda/src/core/01_student/04_Montecarlo/02_Montecarlo_multi/host/MontecarloMulti_BestGrid.h

View File

@@ -1 +1 @@
/home/bilat/CBI/Dropbox/02_CBI_LINUX/CoursCuda/toStudent/code/WCudaStudent/Student_Cuda/src/core/01_student/04_Montecarlo/02_Montecarlo_multi/host/02_stream_version/MontecarloMulti_stream.h
/home/mse15/CUDA/toStudent/code/WCudaStudent/Student_Cuda/src/core/01_student/04_Montecarlo/02_Montecarlo_multi/host/02_stream_version/MontecarloMulti_stream.h

View File

@@ -1 +1 @@
/home/bilat/CBI/Dropbox/02_CBI_LINUX/CoursCuda/toStudent/code/WCudaStudent/Student_Cuda/src/core/01_student/04_Montecarlo/02_Montecarlo_multi/host/01_thread_version/MontecarloMulti_thread.h
/home/mse15/CUDA/toStudent/code/WCudaStudent/Student_Cuda/src/core/01_student/04_Montecarlo/02_Montecarlo_multi/host/01_thread_version/MontecarloMulti_thread.h

View File

@@ -1 +1 @@
/home/bilat/CBI/Dropbox/02_CBI_LINUX/CoursCuda/toStudent/code/WCudaStudent/Student_Cuda/src/core/01_student/04_Montecarlo/01_Montecarlo_mono/host/Montecarlo_BestGrid.h
/home/mse15/CUDA/toStudent/code/WCudaStudent/Student_Cuda/src/core/01_student/04_Montecarlo/01_Montecarlo_mono/host/Montecarlo_BestGrid.h

View File

@@ -1 +1 @@
/home/bilat/CBI/Dropbox/02_CBI_LINUX/CoursCuda/toStudent/code/WCudaStudent/Student_Cuda/../Student_Cuda_Tools_Reduction/src/core/01_algorithme/generic/Reduction.cu.h
/home/mse15/CUDA/toStudent/code/WCudaStudent/Student_Cuda/../Student_Cuda_Tools_Reduction/src/core/01_algorithme/generic/Reduction.cu.h

View File

@@ -1 +1 @@
/home/bilat/CBI/Dropbox/02_CBI_LINUX/CoursCuda/toStudent/code/WCudaStudent/Student_Cuda/../Student_Cuda_Tools_Reduction/src/core/01_algorithme/add/ReductionAdd.cu.h
/home/mse15/CUDA/toStudent/code/WCudaStudent/Student_Cuda/../Student_Cuda_Tools_Reduction/src/core/01_algorithme/add/ReductionAdd.cu.h

View File

@@ -1 +1 @@
/home/bilat/CBI/Dropbox/02_CBI_LINUX/CoursCuda/toStudent/code/WCudaStudent/Student_Cuda/../Student_Cuda_Tools_Reduction/src/core/02_use_protocole/add/int/PI/host/ReductionAddIntI.h
/home/mse15/CUDA/toStudent/code/WCudaStudent/Student_Cuda/../Student_Cuda_Tools_Reduction/src/core/02_use_protocole/add/int/PI/host/ReductionAddIntI.h

View File

@@ -1 +1 @@
/home/bilat/CBI/Dropbox/02_CBI_LINUX/CoursCuda/toStudent/code/WCudaStudent/Student_Cuda/../Student_Cuda_Tools_Reduction/src/core/02_use_protocole/add/int/PII/host/ReductionAddIntII.h
/home/mse15/CUDA/toStudent/code/WCudaStudent/Student_Cuda/../Student_Cuda_Tools_Reduction/src/core/02_use_protocole/add/int/PII/host/ReductionAddIntII.h

View File

@@ -1 +1 @@
/home/bilat/CBI/Dropbox/02_CBI_LINUX/CoursCuda/toStudent/code/WCudaStudent/Student_Cuda/../Student_Cuda_Tools_Reduction/src/core/02_use_protocole/generic/int/PI/host/ReductionIntI.h
/home/mse15/CUDA/toStudent/code/WCudaStudent/Student_Cuda/../Student_Cuda_Tools_Reduction/src/core/02_use_protocole/generic/int/PI/host/ReductionIntI.h

View File

@@ -1 +1 @@
/home/bilat/CBI/Dropbox/02_CBI_LINUX/CoursCuda/toStudent/code/WCudaStudent/Student_Cuda/../Student_Cuda_Tools_Reduction/src/core/02_use_protocole/generic/int/PII/host/ReductionIntII.h
/home/mse15/CUDA/toStudent/code/WCudaStudent/Student_Cuda/../Student_Cuda_Tools_Reduction/src/core/02_use_protocole/generic/int/PII/host/ReductionIntII.h

View File

@@ -1 +1 @@
/home/bilat/CBI/Dropbox/02_CBI_LINUX/CoursCuda/toStudent/code/WCudaStudent/Student_Cuda/../Student_Cuda_Tools_Reduction/src/core/02_use_protocole/generic/long/PII/host/ReductionLongII.h
/home/mse15/CUDA/toStudent/code/WCudaStudent/Student_Cuda/../Student_Cuda_Tools_Reduction/src/core/02_use_protocole/generic/long/PII/host/ReductionLongII.h

View File

@@ -1 +1 @@
/home/bilat/CBI/Dropbox/02_CBI_LINUX/CoursCuda/toStudent/code/WCudaStudent/Student_Cuda/src/core/01_student/03_Slice/02_Slice_GM/host/SliceGM.h
/home/mse15/CUDA/toStudent/code/WCudaStudent/Student_Cuda/src/core/01_student/03_Slice/02_Slice_GM/host/SliceGM.h

View File

@@ -1 +1 @@
/home/bilat/CBI/Dropbox/02_CBI_LINUX/CoursCuda/toStudent/code/WCudaStudent/Student_Cuda/src/core/01_student/03_Slice/01_Slice_GM_Host/host/SliceGMHOST.h
/home/mse15/CUDA/toStudent/code/WCudaStudent/Student_Cuda/src/core/01_student/03_Slice/01_Slice_GM_Host/host/SliceGMHOST.h

View File

@@ -1 +1 @@
/home/bilat/CBI/Dropbox/02_CBI_LINUX/CoursCuda/toStudent/code/WCudaStudent/Student_Cuda/src/core/01_student/03_Slice/01_Slice_GM_Host/host/SliceGMHost_BestGrid.h
/home/mse15/CUDA/toStudent/code/WCudaStudent/Student_Cuda/src/core/01_student/03_Slice/01_Slice_GM_Host/host/SliceGMHost_BestGrid.h

View File

@@ -1 +1 @@
/home/bilat/CBI/Dropbox/02_CBI_LINUX/CoursCuda/toStudent/code/WCudaStudent/Student_Cuda/src/core/01_student/03_Slice/02_Slice_GM/host/SliceGM_BestGrid.h
/home/mse15/CUDA/toStudent/code/WCudaStudent/Student_Cuda/src/core/01_student/03_Slice/02_Slice_GM/host/SliceGM_BestGrid.h

View File

@@ -1 +1 @@
/home/bilat/CBI/Dropbox/02_CBI_LINUX/CoursCuda/toStudent/code/WCudaStudent/Student_Cuda/src/core/01_student/03_Slice/03_Slice_SM/host/SliceSM.h
/home/mse15/CUDA/toStudent/code/WCudaStudent/Student_Cuda/src/core/01_student/03_Slice/03_Slice_SM/host/SliceSM.h

View File

@@ -1 +1 @@
/home/bilat/CBI/Dropbox/02_CBI_LINUX/CoursCuda/toStudent/code/WCudaStudent/Student_Cuda/src/core/01_student/03_Slice/03_Slice_SM/host/SliceSM_BestGrid.h
/home/mse15/CUDA/toStudent/code/WCudaStudent/Student_Cuda/src/core/01_student/03_Slice/03_Slice_SM/host/SliceSM_BestGrid.h

View File

@@ -1 +1 @@
/home/bilat/CBI/Dropbox/02_CBI_LINUX/CoursCuda/toStudent/code/WCudaStudent/Student_Cuda/src/core/01_student/05_addvector_stream/00_tools/VectorTools.h
/home/mse15/CUDA/toStudent/code/WCudaStudent/Student_Cuda/src/core/01_student/05_addvector_stream/00_tools/VectorTools.h

View File

@@ -1 +1 @@
/home/bilat/CBI/Dropbox/02_CBI_LINUX/CoursCuda/toStudent/code/WCudaStudent/Student_Cuda/src/core/01_student/04_Montecarlo/entier_montecarlo.h
/home/mse15/CUDA/toStudent/code/WCudaStudent/Student_Cuda/src/core/01_student/04_Montecarlo/entier_montecarlo.h

View File

@@ -1 +1 @@
/home/bilat/CBI/Dropbox/02_CBI_LINUX/CoursCuda/toStudent/code/WCudaStudent/Student_Cuda/src/core/01_student/05_addvector_stream/01_device/losetime.cu.h
/home/mse15/CUDA/toStudent/code/WCudaStudent/Student_Cuda/src/core/01_student/05_addvector_stream/01_device/losetime.cu.h

View File

@@ -1 +1 @@
/home/bilat/CBI/Dropbox/02_CBI_LINUX/CoursCuda/toStudent/code/WCudaStudent/Student_Cuda/src/core/01_student/05_addvector_stream/03_tristream/host/helper/warmup/run3Slice.h
/home/mse15/CUDA/toStudent/code/WCudaStudent/Student_Cuda/src/core/01_student/05_addvector_stream/03_tristream/host/helper/warmup/run3Slice.h

View File

@@ -1 +1 @@
/home/bilat/CBI/Dropbox/02_CBI_LINUX/CoursCuda/toStudent/code/WCudaStudent/Student_Cuda/src/core/01_student/05_addvector_stream/03_tristream/host/helper/warmup/run4Slice.h
/home/mse15/CUDA/toStudent/code/WCudaStudent/Student_Cuda/src/core/01_student/05_addvector_stream/03_tristream/host/helper/warmup/run4Slice.h

View File

@@ -1 +1 @@
/home/bilat/CBI/Dropbox/02_CBI_LINUX/CoursCuda/toStudent/code/WCudaStudent/Student_Cuda/src/core/01_student/05_addvector_stream/03_tristream/host/helper/warmup/run5Slice.h
/home/mse15/CUDA/toStudent/code/WCudaStudent/Student_Cuda/src/core/01_student/05_addvector_stream/03_tristream/host/helper/warmup/run5Slice.h

View File

@@ -1 +1 @@
/home/bilat/CBI/Dropbox/02_CBI_LINUX/CoursCuda/toStudent/code/WCudaStudent/Student_Cuda/src/core/01_student/05_addvector_stream/03_tristream/host/helper/runGeneric.h
/home/mse15/CUDA/toStudent/code/WCudaStudent/Student_Cuda/src/core/01_student/05_addvector_stream/03_tristream/host/helper/runGeneric.h

View File

@@ -0,0 +1,218 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<meta name="generator" content="CppTest - https://github.com/cpptest/cpptest" />
<title>SliceGMHOST_justesse </title>
<style type="text/css" media="screen">
<!--
hr {
width: 100%;
border-width: 0px;
height: 1px;
color: #cccccc;
background-color: #cccccc;
padding: 0px;
}
table {
width:100%;
border-collapse:separate;
border-spacing: 2px;
border:0px;
}
tr {
margin:0px;
padding:0px;
}
td {
margin:0px;
padding:1px;
}
.table_summary {
}
.table_suites {
}
.table_suite {
}
.table_result {
margin: 0px 0px 1em 0px;
}
.tablecell_title {
background-color: #a5cef7;
font-weight: bold;
}
.tablecell_success {
background-color: #efefe7;
}
.tablecell_error {
color: #ff0808;
background-color: #efefe7;
font-weight: bold;
}
p.spaced {
margin: 0px;
padding: 1em 0px 2em 0px;
}
p.unspaced {
margin: 0px;
padding: 0px 0px 2em 0px;
}
-->
</style>
</head>
<body>
<h1><a name="top"></a>SliceGMHOST_justesse </h1>
<div style="text-align:right">
Designed by <a href="https://github.com/cpptest/cpptest">CppTest</a>
</div>
<hr />
<h2>Summary</h2>
<table summary="Summary of test results" class="table_summary">
<tr>
<td style="width:30%" class="tablecell_title">Tests</td>
<td style="width:30%" class="tablecell_title">Errors</td>
<td style="width:30%" class="tablecell_title">Success</td>
<td style="width:10%" class="tablecell_title">Time (s)</td>
</tr>
<tr>
<td style="width:30%" class="tablecell_success">0</td>
<td style="width:30%" class="tablecell_success">0</td>
<td style="width:30%" class="tablecell_success">100%</td>
<td style="width:10%" class="tablecell_success">4.000000</td>
</tr>
</table>
<hr />
<h2>Test suites</h2>
<table summary="Test Suites" class="table_suites">
<tr>
<td class="tablecell_title">Name</td>
<td style="width:10%" class="tablecell_title">Tests</td>
<td style="width:10%" class="tablecell_title">Errors</td>
<td style="width:10%" class="tablecell_title">Success</td>
<td style="width:10%" class="tablecell_title">Time (s)</td>
</tr>
<tr>
<td class="tablecell_success"><a href="#TestSliceGMHOST">TestSliceGMHOST</a></td>
<td style="width:10%" class="tablecell_success">14</td>
<td style="width:10%" class="tablecell_success">0</td>
<td style="width:10%" class="tablecell_success">100%</td>
<td style="width:10%" class="tablecell_success">4.000000</td>
</tr>
</table>
<hr />
<h3><a name="TestSliceGMHOST"></a>Suite: TestSliceGMHOST</h3>
<table summary="Details for suite TestSliceGMHOST" class="table_suite">
<tr>
<td class="tablecell_title">Name</td>
<td style="width:10%" class="tablecell_title">Errors</td>
<td style="width:10%" class="tablecell_title">Success</td>
<td style="width:10%" class="tablecell_title">Time (s)</td>
</tr>
<tr>
<td class="tablecell_success">testDB2</td>
<td class="tablecell_success">0</td>
<td class="tablecell_success">true</td>
<td class="tablecell_success">0.000000</td>
</tr>
<tr>
<td class="tablecell_success">testDB4</td>
<td class="tablecell_success">0</td>
<td class="tablecell_success">true</td>
<td class="tablecell_success">0.000000</td>
</tr>
<tr>
<td class="tablecell_success">testDB8</td>
<td class="tablecell_success">0</td>
<td class="tablecell_success">true</td>
<td class="tablecell_success">0.000000</td>
</tr>
<tr>
<td class="tablecell_success">testDB16</td>
<td class="tablecell_success">0</td>
<td class="tablecell_success">true</td>
<td class="tablecell_success">0.000000</td>
</tr>
<tr>
<td class="tablecell_success">testDB32</td>
<td class="tablecell_success">0</td>
<td class="tablecell_success">true</td>
<td class="tablecell_success">0.000000</td>
</tr>
<tr>
<td class="tablecell_success">testDB64</td>
<td class="tablecell_success">0</td>
<td class="tablecell_success">true</td>
<td class="tablecell_success">0.000000</td>
</tr>
<tr>
<td class="tablecell_success">testDB128</td>
<td class="tablecell_success">0</td>
<td class="tablecell_success">true</td>
<td class="tablecell_success">0.000000</td>
</tr>
<tr>
<td class="tablecell_success">testDB256</td>
<td class="tablecell_success">0</td>
<td class="tablecell_success">true</td>
<td class="tablecell_success">0.000000</td>
</tr>
<tr>
<td class="tablecell_success">testDB512</td>
<td class="tablecell_success">0</td>
<td class="tablecell_success">true</td>
<td class="tablecell_success">0.000000</td>
</tr>
<tr>
<td class="tablecell_success">testDB1024</td>
<td class="tablecell_success">0</td>
<td class="tablecell_success">true</td>
<td class="tablecell_success">0.000000</td>
</tr>
<tr>
<td class="tablecell_success">testGrid</td>
<td class="tablecell_success">0</td>
<td class="tablecell_success">true</td>
<td class="tablecell_success">1.000000</td>
</tr>
<tr>
<td class="tablecell_success">testMonoBlock</td>
<td class="tablecell_success">0</td>
<td class="tablecell_success">true</td>
<td class="tablecell_success">3.000000</td>
</tr>
<tr>
<td class="tablecell_success">testMonoThread</td>
<td class="tablecell_success">0</td>
<td class="tablecell_success">true</td>
<td class="tablecell_success">0.000000</td>
</tr>
<tr>
<td class="tablecell_success">testBestGrid</td>
<td class="tablecell_success">0</td>
<td class="tablecell_success">true</td>
<td class="tablecell_success">0.000000</td>
</tr>
</table>
<p class="spaced"><a href="#top">Back to top</a>
</p>
<hr />
<p>
<a href="http://validator.w3.org/#validate-by-upload">
Valid XHTML 1.0 Strict
</a>
</p>
</body>
</html>

View File

@@ -0,0 +1,140 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<meta name="generator" content="CppTest - https://github.com/cpptest/cpptest" />
<title>SliceGMHOST_performance </title>
<style type="text/css" media="screen">
<!--
hr {
width: 100%;
border-width: 0px;
height: 1px;
color: #cccccc;
background-color: #cccccc;
padding: 0px;
}
table {
width:100%;
border-collapse:separate;
border-spacing: 2px;
border:0px;
}
tr {
margin:0px;
padding:0px;
}
td {
margin:0px;
padding:1px;
}
.table_summary {
}
.table_suites {
}
.table_suite {
}
.table_result {
margin: 0px 0px 1em 0px;
}
.tablecell_title {
background-color: #a5cef7;
font-weight: bold;
}
.tablecell_success {
background-color: #efefe7;
}
.tablecell_error {
color: #ff0808;
background-color: #efefe7;
font-weight: bold;
}
p.spaced {
margin: 0px;
padding: 1em 0px 2em 0px;
}
p.unspaced {
margin: 0px;
padding: 0px 0px 2em 0px;
}
-->
</style>
</head>
<body>
<h1><a name="top"></a>SliceGMHOST_performance </h1>
<div style="text-align:right">
Designed by <a href="https://github.com/cpptest/cpptest">CppTest</a>
</div>
<hr />
<h2>Summary</h2>
<table summary="Summary of test results" class="table_summary">
<tr>
<td style="width:30%" class="tablecell_title">Tests</td>
<td style="width:30%" class="tablecell_title">Errors</td>
<td style="width:30%" class="tablecell_title">Success</td>
<td style="width:10%" class="tablecell_title">Time (s)</td>
</tr>
<tr>
<td style="width:30%" class="tablecell_success">1</td>
<td style="width:30%" class="tablecell_success">0</td>
<td style="width:30%" class="tablecell_success">100%</td>
<td style="width:10%" class="tablecell_success">11.000000</td>
</tr>
</table>
<hr />
<h2>Test suites</h2>
<table summary="Test Suites" class="table_suites">
<tr>
<td class="tablecell_title">Name</td>
<td style="width:10%" class="tablecell_title">Tests</td>
<td style="width:10%" class="tablecell_title">Errors</td>
<td style="width:10%" class="tablecell_title">Success</td>
<td style="width:10%" class="tablecell_title">Time (s)</td>
</tr>
<tr>
<td class="tablecell_success"><a href="#TestPerformance_RunnableGPU_A">TestPerformance_RunnableGPU_A</a></td>
<td style="width:10%" class="tablecell_success">1</td>
<td style="width:10%" class="tablecell_success">0</td>
<td style="width:10%" class="tablecell_success">100%</td>
<td style="width:10%" class="tablecell_success">11.000000</td>
</tr>
</table>
<hr />
<h3><a name="TestPerformance_RunnableGPU_A"></a>Suite: TestPerformance_RunnableGPU_A</h3>
<table summary="Details for suite TestPerformance_RunnableGPU_A" class="table_suite">
<tr>
<td class="tablecell_title">Name</td>
<td style="width:10%" class="tablecell_title">Errors</td>
<td style="width:10%" class="tablecell_title">Success</td>
<td style="width:10%" class="tablecell_title">Time (s)</td>
</tr>
<tr>
<td class="tablecell_success">performanceOnly</td>
<td class="tablecell_success">0</td>
<td class="tablecell_success">true</td>
<td class="tablecell_success">11.000000</td>
</tr>
</table>
<p class="spaced"><a href="#top">Back to top</a>
</p>
<hr />
<p>
<a href="http://validator.w3.org/#validate-by-upload">
Valid XHTML 1.0 Strict
</a>
</p>
</body>
</html>

View File

@@ -0,0 +1,212 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<meta name="generator" content="CppTest - https://github.com/cpptest/cpptest" />
<title>SliceGM_justesse </title>
<style type="text/css" media="screen">
<!--
hr {
width: 100%;
border-width: 0px;
height: 1px;
color: #cccccc;
background-color: #cccccc;
padding: 0px;
}
table {
width:100%;
border-collapse:separate;
border-spacing: 2px;
border:0px;
}
tr {
margin:0px;
padding:0px;
}
td {
margin:0px;
padding:1px;
}
.table_summary {
}
.table_suites {
}
.table_suite {
}
.table_result {
margin: 0px 0px 1em 0px;
}
.tablecell_title {
background-color: #a5cef7;
font-weight: bold;
}
.tablecell_success {
background-color: #efefe7;
}
.tablecell_error {
color: #ff0808;
background-color: #efefe7;
font-weight: bold;
}
p.spaced {
margin: 0px;
padding: 1em 0px 2em 0px;
}
p.unspaced {
margin: 0px;
padding: 0px 0px 2em 0px;
}
-->
</style>
</head>
<body>
<h1><a name="top"></a>SliceGM_justesse </h1>
<div style="text-align:right">
Designed by <a href="https://github.com/cpptest/cpptest">CppTest</a>
</div>
<hr />
<h2>Summary</h2>
<table summary="Summary of test results" class="table_summary">
<tr>
<td style="width:30%" class="tablecell_title">Tests</td>
<td style="width:30%" class="tablecell_title">Errors</td>
<td style="width:30%" class="tablecell_title">Success</td>
<td style="width:10%" class="tablecell_title">Time (s)</td>
</tr>
<tr>
<td style="width:30%" class="tablecell_success">0</td>
<td style="width:30%" class="tablecell_success">0</td>
<td style="width:30%" class="tablecell_success">100%</td>
<td style="width:10%" class="tablecell_success">1.000000</td>
</tr>
</table>
<hr />
<h2>Test suites</h2>
<table summary="Test Suites" class="table_suites">
<tr>
<td class="tablecell_title">Name</td>
<td style="width:10%" class="tablecell_title">Tests</td>
<td style="width:10%" class="tablecell_title">Errors</td>
<td style="width:10%" class="tablecell_title">Success</td>
<td style="width:10%" class="tablecell_title">Time (s)</td>
</tr>
<tr>
<td class="tablecell_success"><a href="#TestSliceGM">TestSliceGM</a></td>
<td style="width:10%" class="tablecell_success">13</td>
<td style="width:10%" class="tablecell_success">0</td>
<td style="width:10%" class="tablecell_success">100%</td>
<td style="width:10%" class="tablecell_success">1.000000</td>
</tr>
</table>
<hr />
<h3><a name="TestSliceGM"></a>Suite: TestSliceGM</h3>
<table summary="Details for suite TestSliceGM" class="table_suite">
<tr>
<td class="tablecell_title">Name</td>
<td style="width:10%" class="tablecell_title">Errors</td>
<td style="width:10%" class="tablecell_title">Success</td>
<td style="width:10%" class="tablecell_title">Time (s)</td>
</tr>
<tr>
<td class="tablecell_success">testDB2</td>
<td class="tablecell_success">0</td>
<td class="tablecell_success">true</td>
<td class="tablecell_success">0.000000</td>
</tr>
<tr>
<td class="tablecell_success">testDB4</td>
<td class="tablecell_success">0</td>
<td class="tablecell_success">true</td>
<td class="tablecell_success">0.000000</td>
</tr>
<tr>
<td class="tablecell_success">testDB8</td>
<td class="tablecell_success">0</td>
<td class="tablecell_success">true</td>
<td class="tablecell_success">0.000000</td>
</tr>
<tr>
<td class="tablecell_success">testDB16</td>
<td class="tablecell_success">0</td>
<td class="tablecell_success">true</td>
<td class="tablecell_success">0.000000</td>
</tr>
<tr>
<td class="tablecell_success">testDB32</td>
<td class="tablecell_success">0</td>
<td class="tablecell_success">true</td>
<td class="tablecell_success">0.000000</td>
</tr>
<tr>
<td class="tablecell_success">testDB64</td>
<td class="tablecell_success">0</td>
<td class="tablecell_success">true</td>
<td class="tablecell_success">0.000000</td>
</tr>
<tr>
<td class="tablecell_success">testDB128</td>
<td class="tablecell_success">0</td>
<td class="tablecell_success">true</td>
<td class="tablecell_success">0.000000</td>
</tr>
<tr>
<td class="tablecell_success">testDB256</td>
<td class="tablecell_success">0</td>
<td class="tablecell_success">true</td>
<td class="tablecell_success">0.000000</td>
</tr>
<tr>
<td class="tablecell_success">testDB512</td>
<td class="tablecell_success">0</td>
<td class="tablecell_success">true</td>
<td class="tablecell_success">0.000000</td>
</tr>
<tr>
<td class="tablecell_success">testDB1024</td>
<td class="tablecell_success">0</td>
<td class="tablecell_success">true</td>
<td class="tablecell_success">0.000000</td>
</tr>
<tr>
<td class="tablecell_success">testGrid</td>
<td class="tablecell_success">0</td>
<td class="tablecell_success">true</td>
<td class="tablecell_success">1.000000</td>
</tr>
<tr>
<td class="tablecell_success">testMonoBlock</td>
<td class="tablecell_success">0</td>
<td class="tablecell_success">true</td>
<td class="tablecell_success">0.000000</td>
</tr>
<tr>
<td class="tablecell_success">testBestGrid</td>
<td class="tablecell_success">0</td>
<td class="tablecell_success">true</td>
<td class="tablecell_success">0.000000</td>
</tr>
</table>
<p class="spaced"><a href="#top">Back to top</a>
</p>
<hr />
<p>
<a href="http://validator.w3.org/#validate-by-upload">
Valid XHTML 1.0 Strict
</a>
</p>
</body>
</html>

View File

@@ -0,0 +1,140 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<meta name="generator" content="CppTest - https://github.com/cpptest/cpptest" />
<title>SliceGM_performance </title>
<style type="text/css" media="screen">
<!--
hr {
width: 100%;
border-width: 0px;
height: 1px;
color: #cccccc;
background-color: #cccccc;
padding: 0px;
}
table {
width:100%;
border-collapse:separate;
border-spacing: 2px;
border:0px;
}
tr {
margin:0px;
padding:0px;
}
td {
margin:0px;
padding:1px;
}
.table_summary {
}
.table_suites {
}
.table_suite {
}
.table_result {
margin: 0px 0px 1em 0px;
}
.tablecell_title {
background-color: #a5cef7;
font-weight: bold;
}
.tablecell_success {
background-color: #efefe7;
}
.tablecell_error {
color: #ff0808;
background-color: #efefe7;
font-weight: bold;
}
p.spaced {
margin: 0px;
padding: 1em 0px 2em 0px;
}
p.unspaced {
margin: 0px;
padding: 0px 0px 2em 0px;
}
-->
</style>
</head>
<body>
<h1><a name="top"></a>SliceGM_performance </h1>
<div style="text-align:right">
Designed by <a href="https://github.com/cpptest/cpptest">CppTest</a>
</div>
<hr />
<h2>Summary</h2>
<table summary="Summary of test results" class="table_summary">
<tr>
<td style="width:30%" class="tablecell_title">Tests</td>
<td style="width:30%" class="tablecell_title">Errors</td>
<td style="width:30%" class="tablecell_title">Success</td>
<td style="width:10%" class="tablecell_title">Time (s)</td>
</tr>
<tr>
<td style="width:30%" class="tablecell_success">1</td>
<td style="width:30%" class="tablecell_success">0</td>
<td style="width:30%" class="tablecell_success">100%</td>
<td style="width:10%" class="tablecell_success">10.000000</td>
</tr>
</table>
<hr />
<h2>Test suites</h2>
<table summary="Test Suites" class="table_suites">
<tr>
<td class="tablecell_title">Name</td>
<td style="width:10%" class="tablecell_title">Tests</td>
<td style="width:10%" class="tablecell_title">Errors</td>
<td style="width:10%" class="tablecell_title">Success</td>
<td style="width:10%" class="tablecell_title">Time (s)</td>
</tr>
<tr>
<td class="tablecell_success"><a href="#TestPerformance_RunnableGPU_A">TestPerformance_RunnableGPU_A</a></td>
<td style="width:10%" class="tablecell_success">1</td>
<td style="width:10%" class="tablecell_success">0</td>
<td style="width:10%" class="tablecell_success">100%</td>
<td style="width:10%" class="tablecell_success">10.000000</td>
</tr>
</table>
<hr />
<h3><a name="TestPerformance_RunnableGPU_A"></a>Suite: TestPerformance_RunnableGPU_A</h3>
<table summary="Details for suite TestPerformance_RunnableGPU_A" class="table_suite">
<tr>
<td class="tablecell_title">Name</td>
<td style="width:10%" class="tablecell_title">Errors</td>
<td style="width:10%" class="tablecell_title">Success</td>
<td style="width:10%" class="tablecell_title">Time (s)</td>
</tr>
<tr>
<td class="tablecell_success">performanceOnly</td>
<td class="tablecell_success">0</td>
<td class="tablecell_success">true</td>
<td class="tablecell_success">10.000000</td>
</tr>
</table>
<p class="spaced"><a href="#top">Back to top</a>
</p>
<hr />
<p>
<a href="http://validator.w3.org/#validate-by-upload">
Valid XHTML 1.0 Strict
</a>
</p>
</body>
</html>

View File

@@ -0,0 +1,6 @@
32,64,128,256,512,1024
32,64,128,256,512,1024
32,64,128,256,512,1024
32,64,128,256,512,1024
32,64,128,256,512,1024
32,64,128,256,512,1024
1 32 64 128 256 512 1024
2 32 64 128 256 512 1024
3 32 64 128 256 512 1024
4 32 64 128 256 512 1024
5 32 64 128 256 512 1024
6 32 64 128 256 512 1024

View File

@@ -0,0 +1,6 @@
32,32,32,32,32,32
64,64,64,64,64,64
128,128,128,128,128,128
256,256,256,256,256,256
512,512,512,512,512,512
1024,1024,1024,1024,1024,1024
1 32 32 32 32 32 32
2 64 64 64 64 64 64
3 128 128 128 128 128 128
4 256 256 256 256 256 256
5 512 512 512 512 512 512
6 1024 1024 1024 1024 1024 1024

View File

@@ -0,0 +1,6 @@
3750,6817,11066,12202,11631,10322
6844,11006,15104,15871,13479,10287
10991,11878,15129,13202,10284,7342
14949,15120,13135,10312,7368,4615
15185,13094,10243,7384,4626,2678
13038,10240,7363,4636,2691,1459
1 3750 6817 11066 12202 11631 10322
2 6844 11006 15104 15871 13479 10287
3 10991 11878 15129 13202 10284 7342
4 14949 15120 13135 10312 7368 4615
5 15185 13094 10243 7384 4626 2678
6 13038 10240 7363 4636 2691 1459

View File

@@ -1,5 +1,5 @@
#include "Thread2D.cu.h"
#include "Thread1D.cu.h"
#include "Thread2D.cu.h"
#include "cudas.h"
#include <stdio.h>
@@ -16,42 +16,57 @@ static __device__ float f(float x);
/**
* <pre>
* Chaque thread effecteur une reduction intrathread avec le patern d'entrelacement,
* puis stocke son résultat dans SA case dans tabGM
* Chaque thread effecteur une reduction intrathread avec le patern
* d'entrelacement, puis stocke son résultat dans SA case dans tabGM
*
* tabGM est un tableau promu, qui a autant de case que de thread
* </pre>
*/
__global__ void reductionIntraThreadGM(float* tabGM , int nbSlice)
{
// TODO SliceGM (idem SliceGMHOST) pour cette partie
}
__global__ void reductionIntraThreadGM(float *tabGM, int nbSlice) {
// TODO SliceGM (idem SliceGMHOST) pour cette partie
const int NB_THREAD = Thread2D::nbThread();
const int TID = Thread2D::tid();
const float delta_x = 1.f / (float)nbSlice;
int s = TID;
tabGM[TID] = 0.f;
while (s < nbSlice) {
float xi = s * delta_x;
tabGM[TID] += f(xi);
s += NB_THREAD;
}
}
/**
* <pre>
* Effectue la reduction de tabGM cote device, par ecrasement 2 à 2 successif.
* Ce kernel d ecrasement est appeler depuis le host dans une boucle, avec le bon nombre de thread
* Ce kernel d ecrasement est appeler depuis le host dans une boucle, avec le
* bon nombre de thread
*
* Hypothese : |tabGM| est une puissance de 2
*
* Output: le resultat de la reduction est tans tabGM[0]
* </pre>
*/
__global__ void ecrasementGM(float* tabGM , int moitier)
{
// TODO SliceGM
}
__global__ void ecrasementGM(float *tabGM, int moitier) {
// TODO SliceGM
const int TID = Thread2D::tid();
if (TID < moitier) {
tabGM[TID] += tabGM[TID + moitier];
}
}
/*--------------------------------------*\
|* Private *|
\*-------------------------------------*/
__device__ float f(float x)
{
__device__ float f(float x) {
return 4.f / (1.f + x * x);
}
}
/*----------------------------------------------------------------------*\
|* End *|
\*---------------------------------------------------------------------*/

View File

@@ -1,12 +1,12 @@
#include "SliceGM.h"
#include <iostream>
#include <assert.h>
#include <iostream>
#include "GM.h"
#include "Maths.h"
#include "Hardware.h"
#include "Kernel.h"
#include "Maths.h"
using std::cout;
using std::endl;
@@ -16,8 +16,8 @@ using std::to_string;
|* Imported *|
\*---------------------------------------------------------------------*/
extern __global__ void reductionIntraThreadGM(float* tabGM,int nbSlice);
extern __global__ void ecrasementGM(float* tabGM, int moitier);
extern __global__ void reductionIntraThreadGM(float *tabGM, int nbSlice);
extern __global__ void ecrasementGM(float *tabGM, int moitier);
/*----------------------------------------------------------------------*\
|* Implementation *|
@@ -27,21 +27,23 @@ extern __global__ void ecrasementGM(float* tabGM, int moitier);
|* Constructeur *|
\*-------------------------------------*/
SliceGM::SliceGM(Grid grid , int nbSlice , double* ptrPiHat , bool isVerbose) :
RunnableGPU(grid, "SliceGM_" + to_string(nbSlice), isVerbose), // classe parente
//
nbSlice(nbSlice), //
ptrPiHat(ptrPiHat) //
{
this->nTabGM = -1; // TODO SliceGM
this->sizeTabGM = -1; // TODO SliceGM // [octet]
SliceGM::SliceGM(Grid grid, int nbSlice, double *ptrPiHat, bool isVerbose)
: RunnableGPU(grid, "SliceGM_" + to_string(nbSlice),
isVerbose), // classe parente
//
nbSlice(nbSlice), //
ptrPiHat(ptrPiHat) //
{
this->nTabGM = grid.threadCounts(); // TODO SliceGM
this->sizeTabGM = nTabGM * sizeof(float); // TODO SliceGM // [octet]
}
GM::malloc(&tabGM, sizeTabGM);
}
SliceGM::~SliceGM(void)
{
// TODO SliceGM
}
SliceGM::~SliceGM(void) {
// TODO SliceGM
GM::free(tabGM);
}
/*--------------------------------------*\
|* Methode *|
@@ -54,17 +56,16 @@ SliceGM::~SliceGM(void)
* Etape 0 : Promotion d'un tableau en GM (MemoryManagement MM)
* Etape 1 : Reduction intra-thread dans un tableau promu en GM
* Etape 2 : Reduction du tableau en GM par ecrasement hierarchique 2 à 2
* On lance les kernels d'ecrasement depuis le host (chef d'orchestre)
* Etape 4 : Copy du resultat coter host
* Etape 5 : Destruction GM
* On lance les kernels d'ecrasement depuis le host (chef
* d'orchestre) Etape 4 : Copy du resultat coter host Etape 5 : Destruction GM
* </pre>
*/
void SliceGM::run()
{
//TODO SliceGM // call the kernel (asynchrone)
void SliceGM::run() {
// TODO SliceGM // call the kernel (asynchrone)
reductionIntraThreadGM<<<dg, db>>>(tabGM, nbSlice);
reductionGM();
}
reductionGM();
}
/*--------------------------------------*\
|* Private *|
@@ -75,21 +76,33 @@ void SliceGM::run()
* Etape 2 : recuperer le resultat coter host
* Etape 3 : finaliser le calcule de PI
*/
void SliceGM::reductionGM()
{
int midle = nTabGM >> 1; // nTabGM/2;
void SliceGM::reductionGM() {
int midle = nTabGM >> 1; // nTabGM/2;
dim3 dgx(midle, 1, 1);
dim3 dbx(1, 1, 1);
// TODO SliceGM
// TODO SliceGM
while (midle >= 1) {
ecrasementGM<<<dgx, dbx>>>(tabGM, midle);
midle /= 2;
dgx.x = midle;
}
// Warning: Utiliser une autre grille que celle heriter de la classe parente dg, db
// Votre grid ici doit avoir une taille speciale!
// N'utiliser donc pas les variables dg et db de la classe parentes
float result;
GM::memcpyDToH_float(&result, tabGM);
const double delta_x = 1.f / (float)nbSlice;
*ptrPiHat = result * delta_x;
// Tip: Il y a une methode dedier pour ramener un float cote host
//
// float resultat;
// GM::memcpyDToH_float(&resultat,ptrResultGM);
}
// Warning: Utiliser une autre grille que celle heriter de la classe
// parente dg, db Votre grid ici doit avoir une taille
// speciale! N'utiliser donc pas les variables dg et db de la
// classe parentes
// Tip: Il y a une methode dedier pour ramener un float cote host
//
// float resultat;
// GM::memcpyDToH_float(&resultat,ptrResultGM);
}
/*----------------------------------------------------------------------*\
|* End *|

View File

@@ -1,62 +1,56 @@
#pragma once
#include "cudas.h"
#include "Grid.h"
#include "RunnableGPU.h"
#include "cudas.h"
/*----------------------------------------------------------------------*\
|* Declaration *|
\*---------------------------------------------------------------------*/
class SliceGM: public RunnableGPU
{
/*--------------------------------------*\
|* Constructor *|
\*-------------------------------------*/
class SliceGM : public RunnableGPU {
/*--------------------------------------*\
|* Constructor *|
\*-------------------------------------*/
public:
public:
/**
* update piHat
* Hyp : nbThread est une puissance de 2
*/
SliceGM(Grid grid, int nbSlice, double *ptrPiHat, bool isVerbose);
/**
* update piHat
* Hyp : nbThread est une puissance de 2
*/
SliceGM(Grid grid , int nbSlice , double* ptrPiHat , bool isVerbose);
virtual ~SliceGM();
virtual ~SliceGM();
/*--------------------------------------*\
|* Methodes *|
\*-------------------------------------*/
/*--------------------------------------*\
|* Methodes *|
\*-------------------------------------*/
public:
/**
* override
*/
virtual void run();
public:
private:
void reductionGM();
/**
* override
*/
virtual void run();
/*--------------------------------------*\
|* Attributs *|
\*-------------------------------------*/
private:
private:
// Inputs
int nbSlice;
void reductionGM();
// Inputs/Outputs
double *ptrPiHat;
/*--------------------------------------*\
|* Attributs *|
\*-------------------------------------*/
private:
// Inputs
int nbSlice;
// Inputs/Outputs
double* ptrPiHat;
// Tools
float* tabGM;
size_t sizeTabGM; // [octet]
int nTabGM;
};
// Tools
float *tabGM;
size_t sizeTabGM; // [octet]
int nTabGM;
};
/*----------------------------------------------------------------------*\
|* End *|

View File

@@ -1,45 +1,35 @@
#pragma once
#include <iostream>
#include <assert.h>
#include <iostream>
#include "Couts.h"
#include "Grid.h"
#include "Hardware.h"
#include "Couts.h"
/*----------------------------------------------------------------------*\
|* Impelmentation *|
\*---------------------------------------------------------------------*/
namespace sliceGM
{
namespace sliceGM {
class BestGrid
{
class BestGrid {
public:
public:
static Grid get() {
const bool IS_CHECK_HEURISTIC = true;
static Grid get()
{
const bool IS_CHECK_HEURISTIC = false;
const int MP = 64; // Hardware::getMPCount();
const int CORE_MP = Hardware::getCoreCountMP();
const int MP = Hardware::getMPCount();
dim3 dg(MP, 1, 1); // power 2 // TODO SliceGM grid
dim3 db(CORE_MP, 4, 1); // power 2 // TODO SliceGM grid
Grid grid(dg, db, IS_CHECK_HEURISTIC); // all power 2
dim3 dg(1, 1, 1); // power 2 // TODO SliceGM grid
dim3 db(1, 1, 1); // power 2 // TODO SliceGM grid
Grid grid(dg, db, IS_CHECK_HEURISTIC); // all power 2
// to remove once coded
{
Couts::redln("aie aie aie, your best grid won t build itself");
assert(false);
}
return grid;
}
};
}
return grid;
}
};
} // namespace sliceGM
/*----------------------------------------------------------------------*\
|* End *|

View File

@@ -28,8 +28,8 @@ int main(int argc , char** argv)
// public
{
cudaContext.deviceId = 0; // in [0,2] width Server Cuda3
cudaContext.launchMode = LaunchModeMOO::TEST; // USE TEST BENCHMARK FORCEBRUT
cudaContext.deviceId = 1; // in [0,2] width Server Cuda3
cudaContext.launchMode = LaunchModeMOO::USE; // USE TEST BENCHMARK FORCEBRUT
cudaContext.deviceDriver = DeviceDriver::LOAD_ALL; // LOAD_CURRENT LOAD_ALL
cudaContext.deviceInfo = DeviceInfo::ALL_SIMPLE; // NONE ALL ALL_SIMPLE CURRENT

View File

@@ -58,8 +58,8 @@ int mainBenchmark()
// Slice
{
sliceGMHOST();
//sliceGM();
// sliceGMHOST();
sliceGM();
//sliceSM();
//sliceMulti();
}

View File

@@ -74,8 +74,8 @@ int mainBrutforce()
// Slice
{
sliceGMHOST(&matlab);
// sliceGM(&matlab);
// sliceGMHOST(&matlab);
sliceGM(&matlab);
// sliceSM(&matlab);
}
@@ -374,4 +374,3 @@ void bruteforce(ProviderUse_I* ptrProviderUse , Matlab* ptrMatlab , const PlotTy
/*----------------------------------------------------------------------*\
|* End *|
\*---------------------------------------------------------------------*/

View File

@@ -54,13 +54,13 @@ int mainTest()
*/
void slice()
{
VTSliceGMHOST test1;
// VTSliceGM test2;
// VTSliceGMHOST test1;
VTSliceGM test2;
// VTSliceSM test3;
test1.run();
// test2.run();
// test1.run();
test2.run();
// test3.run();
}

View File

@@ -66,12 +66,12 @@ int mainUse()
*/
void slice(bool& isOk)
{
SliceGmHostUse sliceGmHostUse(IS_VERBOSE);
// SliceGmUse sliceGmUse(IS_VERBOSE);
// SliceGmHostUse sliceGmHostUse(IS_VERBOSE);
SliceGmUse sliceGmUse(IS_VERBOSE);
// SliceSmUse sliceSmUse(IS_VERBOSE);
isOk &= sliceGmHostUse.isOk(IS_VERBOSE);
// isOk &= sliceGmUse.isOk(IS_VERBOSE);
// isOk &= sliceGmHostUse.isOk(IS_VERBOSE);
isOk &= sliceGmUse.isOk(IS_VERBOSE);
// isOk &= sliceSmUse.isOk(IS_VERBOSE);
}

View File

@@ -1 +1 @@
/home/bilat/CBI/Dropbox/02_CBI_LINUX/CoursCuda/toStudent/code/WCudaStudent/Student_Cuda_3D_Cube/../Student_Cuda_Image/src/core/01_student/02_Mandelbrot/host/Mandelbrot.h
/home/mse15/CUDA/toStudent/code/WCudaStudent/Student_Cuda_3D_Cube/../Student_Cuda_Image/src/core/01_student/02_Mandelbrot/host/Mandelbrot.h

View File

@@ -1 +1 @@
/home/bilat/CBI/Dropbox/02_CBI_LINUX/CoursCuda/toStudent/code/WCudaStudent/Student_Cuda_3D_Cube/../Student_Cuda_Image/src/core/01_student/02_Mandelbrot/device/math/MandelbrotMath.cu.h
/home/mse15/CUDA/toStudent/code/WCudaStudent/Student_Cuda_3D_Cube/../Student_Cuda_Image/src/core/01_student/02_Mandelbrot/device/math/MandelbrotMath.cu.h

View File

@@ -1 +1 @@
/home/bilat/CBI/Dropbox/02_CBI_LINUX/CoursCuda/toStudent/code/WCudaStudent/Student_Cuda_3D_Cube/../Student_Cuda_Image/src/core/01_student/02_Mandelbrot/host/Mandelbrot_BestGrid.h
/home/mse15/CUDA/toStudent/code/WCudaStudent/Student_Cuda_3D_Cube/../Student_Cuda_Image/src/core/01_student/02_Mandelbrot/host/Mandelbrot_BestGrid.h

View File

@@ -1 +1 @@
/home/bilat/CBI/Dropbox/02_CBI_LINUX/CoursCuda/toStudent/code/WCudaStudent/Student_Cuda_3D_Cube/../Student_Cuda_Image/src/core/01_student/03_RayTracing/host/Raytracing.h
/home/mse15/CUDA/toStudent/code/WCudaStudent/Student_Cuda_3D_Cube/../Student_Cuda_Image/src/core/01_student/03_RayTracing/host/Raytracing.h

View File

@@ -1 +1 @@
/home/bilat/CBI/Dropbox/02_CBI_LINUX/CoursCuda/toStudent/code/WCudaStudent/Student_Cuda_3D_Cube/../Student_Cuda_Image/src/core/01_student/03_RayTracing/device/math/RaytracingMath.cu.h
/home/mse15/CUDA/toStudent/code/WCudaStudent/Student_Cuda_3D_Cube/../Student_Cuda_Image/src/core/01_student/03_RayTracing/device/math/RaytracingMath.cu.h

View File

@@ -1 +1 @@
/home/bilat/CBI/Dropbox/02_CBI_LINUX/CoursCuda/toStudent/code/WCudaStudent/Student_Cuda_3D_Cube/../Student_Cuda_Image/src/core/01_student/03_RayTracing/host/Raytracing_BestGrid.h
/home/mse15/CUDA/toStudent/code/WCudaStudent/Student_Cuda_3D_Cube/../Student_Cuda_Image/src/core/01_student/03_RayTracing/host/Raytracing_BestGrid.h

View File

@@ -1 +1 @@
/home/bilat/CBI/Dropbox/02_CBI_LINUX/CoursCuda/toStudent/code/WCudaStudent/Student_Cuda_3D_Cube/../Student_Cuda_Image/src/core/01_student/01_Rippling/host/Rippling.h
/home/mse15/CUDA/toStudent/code/WCudaStudent/Student_Cuda_3D_Cube/../Student_Cuda_Image/src/core/01_student/01_Rippling/host/Rippling.h

View File

@@ -1 +1 @@
/home/bilat/CBI/Dropbox/02_CBI_LINUX/CoursCuda/toStudent/code/WCudaStudent/Student_Cuda_3D_Cube/../Student_Cuda_Image/src/core/01_student/01_Rippling/device/math/RipplingMath.cu.h
/home/mse15/CUDA/toStudent/code/WCudaStudent/Student_Cuda_3D_Cube/../Student_Cuda_Image/src/core/01_student/01_Rippling/device/math/RipplingMath.cu.h

View File

@@ -1 +1 @@
/home/bilat/CBI/Dropbox/02_CBI_LINUX/CoursCuda/toStudent/code/WCudaStudent/Student_Cuda_3D_Cube/../Student_Cuda_Image/src/core/01_student/01_Rippling/host/Rippling_BestGrid.h
/home/mse15/CUDA/toStudent/code/WCudaStudent/Student_Cuda_3D_Cube/../Student_Cuda_Image/src/core/01_student/01_Rippling/host/Rippling_BestGrid.h

View File

@@ -1 +1 @@
/home/bilat/CBI/Dropbox/02_CBI_LINUX/CoursCuda/toStudent/code/WCudaStudent/Student_Cuda_3D_Cube/src/core/scene/SceneCubeCreator.h
/home/mse15/CUDA/toStudent/code/WCudaStudent/Student_Cuda_3D_Cube/src/core/scene/SceneCubeCreator.h

View File

@@ -1 +1 @@
/home/bilat/CBI/Dropbox/02_CBI_LINUX/CoursCuda/toStudent/code/WCudaStudent/Student_Cuda_3D_Cube/../Student_Cuda_Image/src/core/01_student/02_Mandelbrot/real_mandelbrot.h
/home/mse15/CUDA/toStudent/code/WCudaStudent/Student_Cuda_3D_Cube/../Student_Cuda_Image/src/core/01_student/02_Mandelbrot/real_mandelbrot.h

View File

@@ -0,0 +1,7 @@
CompileFlags:
Add:
- "-I/home/mse15/CUDA/toStudent/code/WCudaStudent/Student_Cuda_Image/INC_SYMLINK/EXT"
- "-I/home/mse15/CUDA/toStudent/code/WCudaStudent/Student_Cuda_Image/INC_SYMLINK/PROJECT"
---
Diagnostics:
Suppress: "*"

View File

@@ -0,0 +1,17 @@
// Project tasks configuration. See https://zed.dev/docs/tasks for documentation.
//
// Example:
[
{
"label": "Run",
"command": "cbicc cuda clean jall runGL",
"use_new_terminal": false,
"allow_concurrent_runs": false,
"reveal": "always",
"reveal_target": "dock",
"hide": "never",
"shell": "system",
"show_summary": true,
"show_command": true
}
]

View File

@@ -1 +1 @@
/home/bilat/CBI/Dropbox/02_CBI_LINUX/CoursCuda/toStudent/code/WCudaStudent/Student_Cuda_Image/src/core/01_student/02_Mandelbrot/host/Mandelbrot.h
/home/mse15/CUDA/toStudent/code/WCudaStudent/Student_Cuda_Image/src/core/01_student/02_Mandelbrot/host/Mandelbrot.h

View File

@@ -1 +1 @@
/home/bilat/CBI/Dropbox/02_CBI_LINUX/CoursCuda/toStudent/code/WCudaStudent/Student_Cuda_Image/src/core/01_student/02_Mandelbrot/device/math/MandelbrotMath.cu.h
/home/mse15/CUDA/toStudent/code/WCudaStudent/Student_Cuda_Image/src/core/01_student/02_Mandelbrot/device/math/MandelbrotMath.cu.h

View File

@@ -1 +1 @@
/home/bilat/CBI/Dropbox/02_CBI_LINUX/CoursCuda/toStudent/code/WCudaStudent/Student_Cuda_Image/src/core/01_student/02_Mandelbrot/host/Mandelbrot_BestGrid.h
/home/mse15/CUDA/toStudent/code/WCudaStudent/Student_Cuda_Image/src/core/01_student/02_Mandelbrot/host/Mandelbrot_BestGrid.h

View File

@@ -1 +1 @@
/home/bilat/CBI/Dropbox/02_CBI_LINUX/CoursCuda/toStudent/code/WCudaStudent/Student_Cuda_Image/src/core/01_student/03_RayTracing/host/Raytracing.h
/home/mse15/CUDA/toStudent/code/WCudaStudent/Student_Cuda_Image/src/core/01_student/03_RayTracing/host/Raytracing.h

View File

@@ -1 +1 @@
/home/bilat/CBI/Dropbox/02_CBI_LINUX/CoursCuda/toStudent/code/WCudaStudent/Student_Cuda_Image/src/core/01_student/03_RayTracing/device/math/RaytracingMath.cu.h
/home/mse15/CUDA/toStudent/code/WCudaStudent/Student_Cuda_Image/src/core/01_student/03_RayTracing/device/math/RaytracingMath.cu.h

View File

@@ -1 +1 @@
/home/bilat/CBI/Dropbox/02_CBI_LINUX/CoursCuda/toStudent/code/WCudaStudent/Student_Cuda_Image/src/core/01_student/03_RayTracing/host/Raytracing_BestGrid.h
/home/mse15/CUDA/toStudent/code/WCudaStudent/Student_Cuda_Image/src/core/01_student/03_RayTracing/host/Raytracing_BestGrid.h

View File

@@ -1 +1 @@
/home/bilat/CBI/Dropbox/02_CBI_LINUX/CoursCuda/toStudent/code/WCudaStudent/Student_Cuda_Image/src/core/01_student/01_Rippling/host/Rippling.h
/home/mse15/CUDA/toStudent/code/WCudaStudent/Student_Cuda_Image/src/core/01_student/01_Rippling/host/Rippling.h

View File

@@ -1 +1 @@
/home/bilat/CBI/Dropbox/02_CBI_LINUX/CoursCuda/toStudent/code/WCudaStudent/Student_Cuda_Image/src/core/01_student/01_Rippling/device/math/RipplingMath.cu.h
/home/mse15/CUDA/toStudent/code/WCudaStudent/Student_Cuda_Image/src/core/01_student/01_Rippling/device/math/RipplingMath.cu.h

View File

@@ -1 +1 @@
/home/bilat/CBI/Dropbox/02_CBI_LINUX/CoursCuda/toStudent/code/WCudaStudent/Student_Cuda_Image/src/core/01_student/01_Rippling/host/Rippling_BestGrid.h
/home/mse15/CUDA/toStudent/code/WCudaStudent/Student_Cuda_Image/src/core/01_student/01_Rippling/host/Rippling_BestGrid.h

View File

@@ -1 +1 @@
/home/bilat/CBI/Dropbox/02_CBI_LINUX/CoursCuda/toStudent/code/WCudaStudent/Student_Cuda_Image/src/core/01_student/02_Mandelbrot/real_mandelbrot.h
/home/mse15/CUDA/toStudent/code/WCudaStudent/Student_Cuda_Image/src/core/01_student/02_Mandelbrot/real_mandelbrot.h

View File

@@ -0,0 +1,140 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<meta name="generator" content="CppTest - https://github.com/cpptest/cpptest" />
<title>Rippling_justesse </title>
<style type="text/css" media="screen">
<!--
hr {
width: 100%;
border-width: 0px;
height: 1px;
color: #cccccc;
background-color: #cccccc;
padding: 0px;
}
table {
width:100%;
border-collapse:separate;
border-spacing: 2px;
border:0px;
}
tr {
margin:0px;
padding:0px;
}
td {
margin:0px;
padding:1px;
}
.table_summary {
}
.table_suites {
}
.table_suite {
}
.table_result {
margin: 0px 0px 1em 0px;
}
.tablecell_title {
background-color: #a5cef7;
font-weight: bold;
}
.tablecell_success {
background-color: #efefe7;
}
.tablecell_error {
color: #ff0808;
background-color: #efefe7;
font-weight: bold;
}
p.spaced {
margin: 0px;
padding: 1em 0px 2em 0px;
}
p.unspaced {
margin: 0px;
padding: 0px 0px 2em 0px;
}
-->
</style>
</head>
<body>
<h1><a name="top"></a>Rippling_justesse </h1>
<div style="text-align:right">
Designed by <a href="https://github.com/cpptest/cpptest">CppTest</a>
</div>
<hr />
<h2>Summary</h2>
<table summary="Summary of test results" class="table_summary">
<tr>
<td style="width:30%" class="tablecell_title">Tests</td>
<td style="width:30%" class="tablecell_title">Errors</td>
<td style="width:30%" class="tablecell_title">Success</td>
<td style="width:10%" class="tablecell_title">Time (s)</td>
</tr>
<tr>
<td style="width:30%" class="tablecell_success">1</td>
<td style="width:30%" class="tablecell_success">0</td>
<td style="width:30%" class="tablecell_success">100%</td>
<td style="width:10%" class="tablecell_success">1.000000</td>
</tr>
</table>
<hr />
<h2>Test suites</h2>
<table summary="Test Suites" class="table_suites">
<tr>
<td class="tablecell_title">Name</td>
<td style="width:10%" class="tablecell_title">Tests</td>
<td style="width:10%" class="tablecell_title">Errors</td>
<td style="width:10%" class="tablecell_title">Success</td>
<td style="width:10%" class="tablecell_title">Time (s)</td>
</tr>
<tr>
<td class="tablecell_success"><a href="#TestImageCuda">TestImageCuda</a></td>
<td style="width:10%" class="tablecell_success">1</td>
<td style="width:10%" class="tablecell_success">0</td>
<td style="width:10%" class="tablecell_success">100%</td>
<td style="width:10%" class="tablecell_success">1.000000</td>
</tr>
</table>
<hr />
<h3><a name="TestImageCuda"></a>Suite: TestImageCuda</h3>
<table summary="Details for suite TestImageCuda" class="table_suite">
<tr>
<td class="tablecell_title">Name</td>
<td style="width:10%" class="tablecell_title">Errors</td>
<td style="width:10%" class="tablecell_title">Success</td>
<td style="width:10%" class="tablecell_title">Time (s)</td>
</tr>
<tr>
<td class="tablecell_success">allTests</td>
<td class="tablecell_success">0</td>
<td class="tablecell_success">true</td>
<td class="tablecell_success">1.000000</td>
</tr>
</table>
<p class="spaced"><a href="#top">Back to top</a>
</p>
<hr />
<p>
<a href="http://validator.w3.org/#validate-by-upload">
Valid XHTML 1.0 Strict
</a>
</p>
</body>
</html>

View File

@@ -0,0 +1,140 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<meta name="generator" content="CppTest - https://github.com/cpptest/cpptest" />
<title>Rippling_performance </title>
<style type="text/css" media="screen">
<!--
hr {
width: 100%;
border-width: 0px;
height: 1px;
color: #cccccc;
background-color: #cccccc;
padding: 0px;
}
table {
width:100%;
border-collapse:separate;
border-spacing: 2px;
border:0px;
}
tr {
margin:0px;
padding:0px;
}
td {
margin:0px;
padding:1px;
}
.table_summary {
}
.table_suites {
}
.table_suite {
}
.table_result {
margin: 0px 0px 1em 0px;
}
.tablecell_title {
background-color: #a5cef7;
font-weight: bold;
}
.tablecell_success {
background-color: #efefe7;
}
.tablecell_error {
color: #ff0808;
background-color: #efefe7;
font-weight: bold;
}
p.spaced {
margin: 0px;
padding: 1em 0px 2em 0px;
}
p.unspaced {
margin: 0px;
padding: 0px 0px 2em 0px;
}
-->
</style>
</head>
<body>
<h1><a name="top"></a>Rippling_performance </h1>
<div style="text-align:right">
Designed by <a href="https://github.com/cpptest/cpptest">CppTest</a>
</div>
<hr />
<h2>Summary</h2>
<table summary="Summary of test results" class="table_summary">
<tr>
<td style="width:30%" class="tablecell_title">Tests</td>
<td style="width:30%" class="tablecell_title">Errors</td>
<td style="width:30%" class="tablecell_title">Success</td>
<td style="width:10%" class="tablecell_title">Time (s)</td>
</tr>
<tr>
<td style="width:30%" class="tablecell_success">1</td>
<td style="width:30%" class="tablecell_success">0</td>
<td style="width:30%" class="tablecell_success">100%</td>
<td style="width:10%" class="tablecell_success">8.000000</td>
</tr>
</table>
<hr />
<h2>Test suites</h2>
<table summary="Test Suites" class="table_suites">
<tr>
<td class="tablecell_title">Name</td>
<td style="width:10%" class="tablecell_title">Tests</td>
<td style="width:10%" class="tablecell_title">Errors</td>
<td style="width:10%" class="tablecell_title">Success</td>
<td style="width:10%" class="tablecell_title">Time (s)</td>
</tr>
<tr>
<td class="tablecell_success"><a href="#TestPerformance_RunnableGPU_A">TestPerformance_RunnableGPU_A</a></td>
<td style="width:10%" class="tablecell_success">1</td>
<td style="width:10%" class="tablecell_success">0</td>
<td style="width:10%" class="tablecell_success">100%</td>
<td style="width:10%" class="tablecell_success">8.000000</td>
</tr>
</table>
<hr />
<h3><a name="TestPerformance_RunnableGPU_A"></a>Suite: TestPerformance_RunnableGPU_A</h3>
<table summary="Details for suite TestPerformance_RunnableGPU_A" class="table_suite">
<tr>
<td class="tablecell_title">Name</td>
<td style="width:10%" class="tablecell_title">Errors</td>
<td style="width:10%" class="tablecell_title">Success</td>
<td style="width:10%" class="tablecell_title">Time (s)</td>
</tr>
<tr>
<td class="tablecell_success">performanceOnly</td>
<td class="tablecell_success">0</td>
<td class="tablecell_success">true</td>
<td class="tablecell_success">8.000000</td>
</tr>
</table>
<p class="spaced"><a href="#top">Back to top</a>
</p>
<hr />
<p>
<a href="http://validator.w3.org/#validate-by-upload">
Valid XHTML 1.0 Strict
</a>
</p>
</body>
</html>

View File

@@ -0,0 +1,10 @@
64,128,192,256,320,384,448,512,576,640,704,768,832,896,960,1024
64,128,192,256,320,384,448,512,576,640,704,768,832,896,960,1024
64,128,192,256,320,384,448,512,576,640,704,768,832,896,960,1024
64,128,192,256,320,384,448,512,576,640,704,768,832,896,960,1024
64,128,192,256,320,384,448,512,576,640,704,768,832,896,960,1024
64,128,192,256,320,384,448,512,576,640,704,768,832,896,960,1024
64,128,192,256,320,384,448,512,576,640,704,768,832,896,960,1024
64,128,192,256,320,384,448,512,576,640,704,768,832,896,960,1024
64,128,192,256,320,384,448,512,576,640,704,768,832,896,960,1024
64,128,192,256,320,384,448,512,576,640,704,768,832,896,960,1024
1 64 128 192 256 320 384 448 512 576 640 704 768 832 896 960 1024
2 64 128 192 256 320 384 448 512 576 640 704 768 832 896 960 1024
3 64 128 192 256 320 384 448 512 576 640 704 768 832 896 960 1024
4 64 128 192 256 320 384 448 512 576 640 704 768 832 896 960 1024
5 64 128 192 256 320 384 448 512 576 640 704 768 832 896 960 1024
6 64 128 192 256 320 384 448 512 576 640 704 768 832 896 960 1024
7 64 128 192 256 320 384 448 512 576 640 704 768 832 896 960 1024
8 64 128 192 256 320 384 448 512 576 640 704 768 832 896 960 1024
9 64 128 192 256 320 384 448 512 576 640 704 768 832 896 960 1024
10 64 128 192 256 320 384 448 512 576 640 704 768 832 896 960 1024

View File

@@ -0,0 +1,10 @@
68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68
136,136,136,136,136,136,136,136,136,136,136,136,136,136,136,136
204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204
272,272,272,272,272,272,272,272,272,272,272,272,272,272,272,272
340,340,340,340,340,340,340,340,340,340,340,340,340,340,340,340
408,408,408,408,408,408,408,408,408,408,408,408,408,408,408,408
476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476
544,544,544,544,544,544,544,544,544,544,544,544,544,544,544,544
612,612,612,612,612,612,612,612,612,612,612,612,612,612,612,612
680,680,680,680,680,680,680,680,680,680,680,680,680,680,680,680
1 68 68 68 68 68 68 68 68 68 68 68 68 68 68 68 68
2 136 136 136 136 136 136 136 136 136 136 136 136 136 136 136 136
3 204 204 204 204 204 204 204 204 204 204 204 204 204 204 204 204
4 272 272 272 272 272 272 272 272 272 272 272 272 272 272 272 272
5 340 340 340 340 340 340 340 340 340 340 340 340 340 340 340 340
6 408 408 408 408 408 408 408 408 408 408 408 408 408 408 408 408
7 476 476 476 476 476 476 476 476 476 476 476 476 476 476 476 476
8 544 544 544 544 544 544 544 544 544 544 544 544 544 544 544 544
9 612 612 612 612 612 612 612 612 612 612 612 612 612 612 612 612
10 680 680 680 680 680 680 680 680 680 680 680 680 680 680 680 680

View File

@@ -0,0 +1,10 @@
144555,220822,213172,232589,222368,222022,221525,218740,215112,220198,212562,211353,203128,207854,210719,208961
178200,227914,225423,225667,225283,223689,214874,217351,189550,187027,176077,174967,175908,173784,170924,182629
212976,225907,222606,224129,213339,213864,204105,204116,170180,174156,180857,200021,186592,189103,180464,178768
220934,223204,216938,218089,214767,210852,205644,204681,182606,186172,175972,178235,171769,171199,162172,162394
212311,227349,214553,217104,211690,204241,202456,209851,166727,167536,161323,164796,154234,155004,147491,147138
198643,222201,217982,217089,212032,203211,198104,196038,154107,155668,149685,148698,142482,142935,134505,133011
216171,220305,209239,214638,200728,193354,184005,187582,144618,145480,136990,136957,131445,130896,123050,125646
209897,217355,213187,210719,199503,185380,179740,178260,132461,134694,129448,129059,121525,123736,116539,123906
206870,215563,213613,212218,194167,175278,170315,167466,125147,125812,119401,120362,114225,119599,114065,119403
205266,207631,213265,202704,185616,170020,163365,159203,116459,118558,112154,116339,113771,115710,113130,115851
1 144555 220822 213172 232589 222368 222022 221525 218740 215112 220198 212562 211353 203128 207854 210719 208961
2 178200 227914 225423 225667 225283 223689 214874 217351 189550 187027 176077 174967 175908 173784 170924 182629
3 212976 225907 222606 224129 213339 213864 204105 204116 170180 174156 180857 200021 186592 189103 180464 178768
4 220934 223204 216938 218089 214767 210852 205644 204681 182606 186172 175972 178235 171769 171199 162172 162394
5 212311 227349 214553 217104 211690 204241 202456 209851 166727 167536 161323 164796 154234 155004 147491 147138
6 198643 222201 217982 217089 212032 203211 198104 196038 154107 155668 149685 148698 142482 142935 134505 133011
7 216171 220305 209239 214638 200728 193354 184005 187582 144618 145480 136990 136957 131445 130896 123050 125646
8 209897 217355 213187 210719 199503 185380 179740 178260 132461 134694 129448 129059 121525 123736 116539 123906
9 206870 215563 213613 212218 194167 175278 170315 167466 125147 125812 119401 120362 114225 119599 114065 119403
10 205266 207631 213265 202704 185616 170020 163365 159203 116459 118558 112154 116339 113771 115710 113130 115851

View File

@@ -13,26 +13,24 @@
|* Public *|
\*-------------------------------------*/
class RipplingMath
{
class RipplingMath {
/*--------------------------------------*\
|* Constructeur *|
\*-------------------------------------*/
public:
__device__ RipplingMath(uint w , uint h , float t) :
__device__
RipplingMath(uint w , uint h , float t) :
dim2(w / 2), //
t(t)
{
// rien
t(t) {
// rien
}
__device__
virtual ~RipplingMath()
{
virtual ~RipplingMath() {
// rien
}
}
/*--------------------------------------*\
|* Methode *|
@@ -41,8 +39,7 @@ class RipplingMath
public:
__device__
void colorIJ(uchar4* ptrColorIJ , int i , int j)
{
void colorIJ(uchar4* ptrColorIJ , int i , int j) {
uchar levelGris = levelGray(i, j); // update levelGris
ptrColorIJ->x = levelGris;
@@ -58,13 +55,13 @@ class RipplingMath
// Etape 2: Puis une fois que l'image grise est valider, attaquer rippling
// debug temp
// {
// ptrColorIJ->x = 128;
// ptrColorIJ->y = 128;
// ptrColorIJ->z = 128;
// ptrColorIJ->w = 255; // opacity facultatif
// }
}
// {
// ptrColorIJ->x = 128;
// ptrColorIJ->y = 128;
// ptrColorIJ->z = 128;
// ptrColorIJ->w = 255; // opacity facultatif
// }
}
private:
@@ -74,24 +71,31 @@ class RipplingMath
__inline__
__device__
uchar levelGray(int i , int j )
{
uchar levelGray(int i , int j ) {
float result;
dij(i, j, &result); // warning : dij return void. Ne peut pas etre "imbriquer dans une fonction"
dij(i, j, &result); // warning : dij return void. Ne peut pas etre "imbriquer dans une fonction"
result = result / 10.f;
result = 128.f + 127.f * cosf(result - (t / 7.f)) / (result + 1.f);
return (uchar)result;
// TODO Rippling GPU : cf formules math rippling.pdf (attribut dim2 = dim/2
}
}
__inline__
__device__
void dij(int i , int j , float* ptrResult)
{
void dij(int i , int j , float* ptrResult) {
//TODO Rippling GPU cf fonction math pdf
float fi = i - dim2;
float fj = j - dim2;
float d = sqrtf(fi * fi + fj * fj);
*ptrResult = d;
// Ne pas utiliser la fonction pow pour elever au carrer !
// Utiliser l'opérateur *
}
}
/*--------------------------------------*\
|* Attribut *|
@@ -103,7 +107,7 @@ class RipplingMath
int dim2; // dim2=dim/2
float t;
};
};
/*----------------------------------------------------------------------*\
|* End *|

View File

@@ -18,12 +18,11 @@ static __device__ void ripplingQuart(uchar4* tabPixelsGM , uint w , uint h , flo
|* Implementation *|
\*---------------------------------------------------------------------*/
__global__ void rippling(uchar4* tabPixelsGM , uint w , uint h , float t)
{
ripplingBaseline(tabPixelsGM, w, h, t);
// ripplingDemi(tabPixelsGM, w, h, t);
__global__ void rippling(uchar4* tabPixelsGM , uint w , uint h , float t) {
// ripplingBaseline(tabPixelsGM, w, h, t);
ripplingDemi(tabPixelsGM, w, h, t);
// ripplingQuart(tabPixelsGM, w, h, t);
}
}
/*----------------------------------------------------------------------*\
|* private *|
@@ -33,23 +32,36 @@ __global__ void rippling(uchar4* tabPixelsGM , uint w , uint h , float t)
* v1
*/
__inline__
__device__ void ripplingBaseline(uchar4* tabPixelsGM , uint w , uint h , float t)
{
__device__
void ripplingBaseline(uchar4* tabPixelsGM , uint w , uint h , float t) {
// TODO instacier RipplingMath
RipplingMath rgM = RipplingMath(w, h, t);
const int TID = Thread2D::tid();
const int NB_THREAD = Thread2D::nbThread();
const int WH = w * h;
// TODO Rippling GPU pattern entrelacement
// TODO Rippling GPU pattern entrelacement
int s = TID;
while(s < WH) {
int i = s / w;
int j = s % w;
uchar4 color;
rgM.colorIJ(&color, i, j);
tabPixelsGM[s] = color;
s += NB_THREAD;
}
}
/**
* v2 : optimisation
*/
__inline__
__device__ void ripplingDemi(uchar4* tabPixelsGM , uint w , uint h , float t)
{
__device__
void ripplingDemi(uchar4* tabPixelsGM , uint w , uint h , float t) {
// Indication:
// (I1) Utiliser la symetrie horizontale de l'image
// (I2) Calculer que la demi partie superieur
@@ -57,14 +69,36 @@ __device__ void ripplingDemi(uchar4* tabPixelsGM , uint w , uint h , float t)
// Partez de la fin de l'image, peut-etre
// TODO Rippling GPU
RipplingMath rgM = RipplingMath(w, h, t);
const int TID = Thread2D::tid();
const int NB_THREAD = Thread2D::nbThread();
const int WH = w * h;
const int WH2 = (WH / 2) + 1;
int s = TID;
while(s < WH2) {
int i = s / w;
int j = s % w;
uchar4 color;
rgM.colorIJ(&color, i, j);
tabPixelsGM[s] = color;
// Miroir
int si = WH - s - 1;
tabPixelsGM[si] = color;
s += NB_THREAD;
}
}
/**
* v3 : optimsation : defi (difficile) (pas necessaire pour test performance)
*/
__inline__
__device__ void ripplingQuart(uchar4* tabPixelsGM , uint w , uint h , float t)
{
__device__
void ripplingQuart(uchar4* tabPixelsGM , uint w , uint h , float t) {
// Indication:
// (I1) Utiliser la symetrie horizontale et verticale de l'image
// (I2) Calculer que le quart en huat a gauche
@@ -76,9 +110,8 @@ __device__ void ripplingQuart(uchar4* tabPixelsGM , uint w , uint h , float t)
// (C1) Utiliser toujours le pattern d'entrelacement
// TODO Rippling GPU
}
}
/*----------------------------------------------------------------------*\
|* End *|
\*---------------------------------------------------------------------*/

View File

@@ -24,19 +24,17 @@ extern __global__ void rippling(uchar4* tabPixelsGM,uint w, uint h,float t);
\*-------------------------*/
Rippling::Rippling(const Grid& grid , uint w , uint h , float dt , bool isVerbose) :
Animable_I<uchar4>(grid, w, h, "Rippling-Cuda-uchar4", isVerbose) // super classe
{
Animable_I<uchar4>(grid, w, h, "Rippling-Cuda-uchar4", isVerbose) { // super classe
assert(w == h); // specific rippling
// Animation
this->dt = dt;
this->t = 0; // protected dans Animable
}
}
Rippling::~Rippling()
{
Rippling::~Rippling() {
// rien
}
}
/*-------------------------*\
|* Methode *|
@@ -48,25 +46,22 @@ Rippling::~Rippling()
*
* Note : domaineMath pas use car image pas zoomable
*/
void Rippling::process(uchar4* tabPixelsGM , uint w , uint h , const DomaineMath& domaineMath)
{
void Rippling::process(uchar4* tabPixelsGM , uint w , uint h , const DomaineMath& domaineMath) {
// TODO Rippling
// lancer le kernel avec <<<dg,db>>>
// le kernel est importer ci-dessus (ligne 19)
assert(false); // to delete once implement
}
rippling<<<dg,db>>>(tabPixelsGM,w,h,t);
}
/**
* Override
* Call periodicly by the API
*/
void Rippling::animationStep()
{
void Rippling::animationStep() {
t += dt;
}
}
/*----------------------------------------------------------------------*\
|* End *|
\*---------------------------------------------------------------------*/

View File

@@ -10,8 +10,7 @@
|* Declaration *|
\*---------------------------------------------------------------------*/
class Rippling: public Animable_I<uchar4>
{
class Rippling: public Animable_I<uchar4> {
/*--------------------------------------*\
|* Constructor *|
\*-------------------------------------*/
@@ -50,7 +49,7 @@ class Rippling: public Animable_I<uchar4>
// Inputs
float dt;
};
};
/*----------------------------------------------------------------------*\
|* End *|

View File

@@ -11,30 +11,27 @@
|* Impelmentation *|
\*---------------------------------------------------------------------*/
namespace rippling
{
namespace rippling {
class BestGrid
{
class BestGrid {
public:
static Grid get()
{
static Grid get() {
const int MP = Hardware::getMPCount();
const int CORE_MP = Hardware::getCoreCountMP();
// TODO Rippling
dim3 dg(MP, 1, 1);
dim3 db(CORE_MP, 4, 1);
Grid grid(dg, db);
return grid;
// to remove once coded
{
Couts::redln("aie aie aie, your best grid won t build itself");
assert(false);
}
}
};
}
}
/*----------------------------------------------------------------------*\
|* End *|

View File

@@ -24,34 +24,32 @@ extern int mainTest();
|* Implementation *|
\*---------------------------------------------------------------------*/
int main(int argc , char** argv)
{
int main(int argc , char** argv) {
CudaContextImage cudaContext;
// public
{
cudaContext.deviceId = 2; // in [0,2] width Server Cuda3
cudaContext.launchMode = LaunchModeImage::IMAGE; // IMAGE BENCHMARKING BRUTFORCE TESTING
cudaContext.deviceId = 2; // in [0,2] width Server Cuda3
cudaContext.launchMode = LaunchModeImage::TESTING; // IMAGE BENCHMARKING BRUTFORCE TESTING
cudaContext.deviceDriver = DeviceDriver::LOAD_CURRENT; // LOAD_CURRENT LOAD_ALL
cudaContext.deviceInfo = DeviceInfo::ALL_SIMPLE; // NONE ALL ALL_SIMPLE CURRENT
cudaContext.deviceDriver = DeviceDriver::LOAD_CURRENT; // LOAD_CURRENT LOAD_ALL
cudaContext.deviceInfo = DeviceInfo::ALL_SIMPLE; // NONE ALL ALL_SIMPLE CURRENT
}
// private
{
cudaContext.args.argc = argc;
cudaContext.args.argv = argv;
cudaContext.args.argc = argc;
cudaContext.args.argv = argv;
cudaContext.mainImage = mainImage;
cudaContext.mainBenchmark = mainBenchmark;
cudaContext.mainBrutforce = mainBrutforce;
cudaContext.mainTest = mainTest;
cudaContext.mainImage = mainImage;
cudaContext.mainBenchmark = mainBenchmark;
cudaContext.mainBrutforce = mainBrutforce;
cudaContext.mainTest = mainTest;
}
return cudaContext.process();
}
}
/*----------------------------------------------------------------------*\
|* End *|
\*---------------------------------------------------------------------*/

View File

@@ -32,8 +32,7 @@ static void raytracingCM2SM();
|* Implementation *|
\*---------------------------------------------------------------------*/
int mainBenchmark()
{
int mainBenchmark() {
// Please, un a la fois!
rippling();
// mandelbrot(); // Conseil : use nFixe (by example nMin=nMax=80)
@@ -44,67 +43,60 @@ int mainBenchmark()
// raytracingCM2SM();
return EXIT_SUCCESS;
}
}
/*--------------------------------------*\
|* Private *|
\*-------------------------------------*/
void rippling()
{
void rippling() {
const double DURATION_MAX_S = 8;
RipplingProvider provider;
BenchmarkImage<uchar4>::run(&provider, DURATION_MAX_S);
}
}
void mandelbrot()
{
void mandelbrot() {
const double DURATION_MAX_S = 8;
MandelbrotProvider provider;
BenchmarkImage<uchar4>::run(&provider, DURATION_MAX_S);
}
}
void raytracingGM()
{
void raytracingGM() {
const double DURATION_MAX_S = 8;
RaytracingProviderGM provider;
BenchmarkImage<uchar4>::run(&provider, DURATION_MAX_S);
}
}
void raytracingCM()
{
void raytracingCM() {
const double DURATION_MAX_S = 8;
RaytracingProviderCM provider;
BenchmarkImage<uchar4>::run(&provider, DURATION_MAX_S);
}
}
void raytracingSM()
{
void raytracingSM() {
const double DURATION_MAX_S = 8;
RaytracingProviderSM provider;
BenchmarkImage<uchar4>::run(&provider, DURATION_MAX_S);
}
}
void raytracingCM2SM()
{
void raytracingCM2SM() {
const double DURATION_MAX_S = 8;
RaytracingProviderCM2SM provider;
BenchmarkImage<uchar4>::run(&provider, DURATION_MAX_S);
}
}
/*----------------------------------------------------------------------*\
|* End *|
\*---------------------------------------------------------------------*/

View File

@@ -40,8 +40,7 @@ static void bruteForce(ProviderUse_I* ptrProviderUse , Matlab* ptrMatlab , const
|* Implementation *|
\*---------------------------------------------------------------------*/
int mainBrutforce()
{
int mainBrutforce() {
Matlab matlab;
// Please, un a la fois!
@@ -55,73 +54,66 @@ int mainBrutforce()
matlab.play();
return EXIT_SUCCESS;
}
}
/*--------------------------------------*\
|* Private *|
\*-------------------------------------*/
void rippling(Matlab* ptrMatlab)
{
void rippling(Matlab* ptrMatlab) {
const double DURATION_MAX_S = 0.01; // 0.9 1 grid
const PlotType PLOT_TYPE = PlotType::ALL_GRAPHE;
RipplingProvider provider;
bruteForce<uchar4>((ProviderUse_I*)&provider, ptrMatlab, PLOT_TYPE, DURATION_MAX_S);
}
}
void mandelbrot(Matlab* ptrMatlab)
{
void mandelbrot(Matlab* ptrMatlab) {
const double DURATION_MAX_S = 0.4; // 1 grid
const PlotType PLOT_TYPE = PlotType::ALL_GRAPHE;
MandelbrotProvider provider;
bruteForce<uchar4>((ProviderUse_I*)&provider, ptrMatlab, PLOT_TYPE, DURATION_MAX_S);
}
}
void raytracingGM(Matlab* ptrMatlab)
{
void raytracingGM(Matlab* ptrMatlab) {
const double DURATION_MAX_S = 0.9; // 1 grid
const PlotType PLOT_TYPE = PlotType::ALL_GRAPHE;
RaytracingProviderGM provider;
bruteForce<uchar4>((ProviderUse_I*)&provider, ptrMatlab, PLOT_TYPE, DURATION_MAX_S);
}
}
void raytracingSM(Matlab* ptrMatlab)
{
void raytracingSM(Matlab* ptrMatlab) {
const double DURATION_MAX_S = 0.9; // 1 grid
const PlotType PLOT_TYPE = PlotType::ALL_GRAPHE;
RaytracingProviderSM provider;
bruteForce<uchar4>((ProviderUse_I*)&provider, ptrMatlab, PLOT_TYPE, DURATION_MAX_S);
}
}
void raytracingCM(Matlab* ptrMatlab)
{
void raytracingCM(Matlab* ptrMatlab) {
const double DURATION_MAX_S = 0.9; // 1 grid
const PlotType PLOT_TYPE = PlotType::ALL_GRAPHE;
RaytracingProviderCM provider;
bruteForce<uchar4>((ProviderUse_I*)&provider, ptrMatlab, PLOT_TYPE, DURATION_MAX_S);
}
}
void raytracingCM2SM(Matlab* ptrMatlab)
{
void raytracingCM2SM(Matlab* ptrMatlab) {
const double DURATION_MAX_S = 0.9; // 1 grid
const PlotType PLOT_TYPE = PlotType::ALL_GRAPHE;
RaytracingProviderCM2SM provider;
bruteForce<uchar4>((ProviderUse_I*)&provider, ptrMatlab, PLOT_TYPE, DURATION_MAX_S);
}
}
/*--------------------------------------*\
|* Tools *|
\*-------------------------------------*/
template<typename T>
void bruteForce(ProviderUse_I* ptrProviderUse , Matlab* ptrMatlab , const PlotType& plotType , double durationMaxS)
{
void bruteForce(ProviderUse_I* ptrProviderUse , Matlab* ptrMatlab , const PlotType& plotType , double durationMaxS) {
// Hardware
const int MP = Hardware::getMPCount();
const int CORE_MP = Hardware::getCoreCountMP();
@@ -140,7 +132,7 @@ void bruteForce(ProviderUse_I* ptrProviderUse , Matlab* ptrMatlab , const PlotTy
GridMaillage gridMaillage(iteratorDGx, iteratorDBx);
BruteForce::run(ptrProviderUse, &gridMaillage, ptrMatlab, plotType, durationMaxS);
}
}
/*----------------------------------------------------------------------*\
|* End *|

View File

@@ -24,8 +24,7 @@ using std::string;
|* Implementation *|
\*---------------------------------------------------------------------*/
int mainImage(const Args& args)
{
int mainImage(const Args& args) {
gpu::GLUTImageViewers::init(args.argc, args.argv); //only once
// ImageOption : (boolean,boolean) : (isSelection ,isAnimation,isOverlay,isShowHelp)
@@ -43,9 +42,8 @@ int mainImage(const Args& args)
gpu::GLUTImageViewers::runALL(); // Bloquant, Tant qu'une fenetre est ouverte
return EXIT_SUCCESS;
}
}
/*----------------------------------------------------------------------*\
|* End *|
\*---------------------------------------------------------------------*/

View File

@@ -31,8 +31,7 @@ static void raytracing();
|* Public *|
\*-------------------------------------*/
int mainTest()
{
int mainTest() {
// activer ci-dessous seulement le TP voulu (pas tous)
rippling();
@@ -40,36 +39,33 @@ int mainTest()
//raytracing(); // voir code ci-dessous pour activer la version voulue
return EXIT_SUCCESS;
}
}
/*--------------------------------------*\
|* private *|
\*-------------------------------------*/
void rippling()
{
void rippling() {
VTRippling test1;
test1.run();
}
}
/**
* fp16 only
*/
void mandelbrot()
{
void mandelbrot() {
assert(mandelbrotReal::isFp16());
VTMandelbrot test1;
test1.run();
}
}
/**
* activer ci-dessous la version souhaiter
*/
void raytracing()
{
void raytracing() {
VTRaytracingGM test1;
VTRaytracingSM test2;
VTRaytracingCM test3;
@@ -79,9 +75,8 @@ void raytracing()
// test2.run();
// test3.run();
// test4.run();
}
}
/*----------------------------------------------------------------------*\
|* End *|
\*---------------------------------------------------------------------*/