Mentions légales du service
Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
S
ScalFMM
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package registry
Container registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Service Desk
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
solverstack
ScalFMM
Commits
453a95b1
Commit
453a95b1
authored
10 years ago
by
BRAMAS Berenger
Browse files
Options
Downloads
Patches
Plain Diff
Pass the code and the dim of thread blocks per template class
parent
7f684395
Branches
Branches containing commit
Tags
Tags containing commit
No related merge requests found
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
Src/GroupTree/OpenCl/FOpenCLDeviceWrapper.hpp
+40
-22
40 additions, 22 deletions
Src/GroupTree/OpenCl/FOpenCLDeviceWrapper.hpp
Tests/noDist/testBlockedWithOpenCLAlgorithm.cpp
+38
-22
38 additions, 22 deletions
Tests/noDist/testBlockedWithOpenCLAlgorithm.cpp
with
78 additions
and
44 deletions
Src/GroupTree/OpenCl/FOpenCLDeviceWrapper.hpp
+
40
−
22
View file @
453a95b1
...
@@ -82,13 +82,15 @@ protected:
...
@@ -82,13 +82,15 @@ protected:
cl_mem
user_data
;
cl_mem
user_data
;
int
treeHeight
;
int
treeHeight
;
KernelFilenameClass
kernelFilename
;
public
:
public
:
FOpenCLDeviceWrapper
(
const
int
inTreeHeight
)
:
workerId
(
0
)
,
workerDevid
(
0
),
user_data
(
0
),
treeHeight
(
inTreeHeight
){
FOpenCLDeviceWrapper
(
const
int
inTreeHeight
)
:
workerId
(
0
)
,
workerDevid
(
0
),
user_data
(
0
),
treeHeight
(
inTreeHeight
){
workerId
=
starpu_worker_get_id
();
workerId
=
starpu_worker_get_id
();
workerDevid
=
starpu_worker_get_devid
(
workerId
);
workerDevid
=
starpu_worker_get_devid
(
workerId
);
KernelFilenameClass
kernelFilename
;
const
char
*
filename
=
kernelFilename
.
getKernelCode
(
workerDevid
);
const
char
*
filename
=
kernelFilename
;
if
(
filename
){
if
(
filename
){
starpu_opencl_get_context
(
workerDevid
,
&
context
);
starpu_opencl_get_context
(
workerDevid
,
&
context
);
...
@@ -106,6 +108,7 @@ public:
...
@@ -106,6 +108,7 @@ public:
FAssertLF
(
starpu_opencl_load_kernel
(
&
kernel_directInPassPerform
,
&
queue_directInPassPerform
,
&
opencl_code
,
"FOpenCL__directInPassPerform"
,
workerDevid
)
==
CL_SUCCESS
);
FAssertLF
(
starpu_opencl_load_kernel
(
&
kernel_directInPassPerform
,
&
queue_directInPassPerform
,
&
opencl_code
,
"FOpenCL__directInPassPerform"
,
workerDevid
)
==
CL_SUCCESS
);
FAssertLF
(
starpu_opencl_load_kernel
(
&
kernel_mergePassPerform
,
&
queue_mergePassPerform
,
&
opencl_code
,
"FOpenCL__mergePassPerform"
,
workerDevid
)
==
CL_SUCCESS
);
FAssertLF
(
starpu_opencl_load_kernel
(
&
kernel_mergePassPerform
,
&
queue_mergePassPerform
,
&
opencl_code
,
"FOpenCL__mergePassPerform"
,
workerDevid
)
==
CL_SUCCESS
);
}
}
kernelFilename
.
releaseKernelCode
();
}
}
virtual
void
initDeviceFromKernel
(
const
OriginalKernelClass
&
/*originalKernel*/
){
virtual
void
initDeviceFromKernel
(
const
OriginalKernelClass
&
/*originalKernel*/
){
...
@@ -165,8 +168,8 @@ public:
...
@@ -165,8 +168,8 @@ public:
FAssertLF(outputcl && errcode_ret == CL_SUCCESS, "OpenCL error code " , errcode_ret);*/
FAssertLF(outputcl && errcode_ret == CL_SUCCESS, "OpenCL error code " , errcode_ret);*/
SetKernelArgs
(
kernel_bottomPassPerform
,
0
,
&
leafCellsPtr
,
&
leafCellsSize
,
&
containersPtr
,
&
containersSize
,
&
user_data
/*, &outputcl*/
);
SetKernelArgs
(
kernel_bottomPassPerform
,
0
,
&
leafCellsPtr
,
&
leafCellsSize
,
&
containersPtr
,
&
containersSize
,
&
user_data
/*, &outputcl*/
);
size_t
dim
=
1
;
const
size_t
*
dim
=
kernelFilename
.
getDimSizes
()
;
const
int
err
=
clEnqueueNDRangeKernel
(
queue_bottomPassPerform
,
kernel_bottomPassPerform
,
1
,
NULL
,
&
dim
,
NULL
,
0
,
NULL
,
NULL
);
const
int
err
=
clEnqueueNDRangeKernel
(
queue_bottomPassPerform
,
kernel_bottomPassPerform
,
kernelFilename
.
getNbDims
()
,
NULL
,
dim
,
NULL
,
0
,
NULL
,
NULL
);
if
(
err
!=
CL_SUCCESS
)
STARPU_OPENCL_REPORT_ERROR
(
err
);
if
(
err
!=
CL_SUCCESS
)
STARPU_OPENCL_REPORT_ERROR
(
err
);
/*errcode_ret = clEnqueueReadBuffer(queue_bottomPassPerform, outputcl,
/*errcode_ret = clEnqueueReadBuffer(queue_bottomPassPerform, outputcl,
CL_TRUE, // blocking read
CL_TRUE, // blocking read
...
@@ -183,6 +186,21 @@ public:
...
@@ -183,6 +186,21 @@ public:
clReleaseMemObject(outputcl);
clReleaseMemObject(outputcl);
delete output;*/
delete output;*/
/*unsigned char* cpu_leafCellsPtr = new unsigned char[leafCellsSize];
int errcode_ret = clEnqueueReadBuffer(queue_bottomPassPerform, leafCellsPtr,
CL_TRUE, // blocking read
0, // write from the start
leafCellsSize,
cpu_leafCellsPtr, 0, NULL, NULL);
FAssertLF(errcode_ret == CL_SUCCESS, "OpenCL error code " , errcode_ret);
FGroupOfCells<FTestCell> allcells(cpu_leafCellsPtr, leafCellsSize);
std::cout <<" CPU] goes from " << allcells.getStartingIndex() << " to " << allcells.getEndingIndex() << "\n";
FTestCell* firstcell = allcells.getCell(allcells.getStartingIndex());
FAssertLF(firstcell);
std::cout <<" CPU] first cell of index " << firstcell->getMortonIndex() << " has up " << firstcell->getDataUp() << "\n";
delete[] cpu_leafCellsPtr;*/
}
}
...
@@ -193,8 +211,8 @@ public:
...
@@ -193,8 +211,8 @@ public:
memcpy
(
sizes
.
v
,
subCellGroupsSize
,
sizeof
(
size_t
)
*
9
);
memcpy
(
sizes
.
v
,
subCellGroupsSize
,
sizeof
(
size_t
)
*
9
);
SetKernelArgs
(
kernel_upwardPassPerform
,
0
,
&
currentCellsPtr
,
&
currentCellsSize
,
&
ptrs
,
&
sizes
,
&
nbSubCellGroups
,
&
idxLevel
,
&
user_data
);
SetKernelArgs
(
kernel_upwardPassPerform
,
0
,
&
currentCellsPtr
,
&
currentCellsSize
,
&
ptrs
,
&
sizes
,
&
nbSubCellGroups
,
&
idxLevel
,
&
user_data
);
size_t
dim
=
1
;
const
size_t
*
dim
=
kernelFilename
.
getDimSizes
()
;
const
int
err
=
clEnqueueNDRangeKernel
(
queue_upwardPassPerform
,
kernel_upwardPassPerform
,
1
,
NULL
,
&
dim
,
NULL
,
0
,
NULL
,
NULL
);
const
int
err
=
clEnqueueNDRangeKernel
(
queue_upwardPassPerform
,
kernel_upwardPassPerform
,
kernelFilename
.
getNbDims
()
,
NULL
,
dim
,
NULL
,
0
,
NULL
,
NULL
);
if
(
err
!=
CL_SUCCESS
)
STARPU_OPENCL_REPORT_ERROR
(
err
);
if
(
err
!=
CL_SUCCESS
)
STARPU_OPENCL_REPORT_ERROR
(
err
);
}
}
...
@@ -203,15 +221,15 @@ public:
...
@@ -203,15 +221,15 @@ public:
size_t
outsideInteractionsSize
){
size_t
outsideInteractionsSize
){
SetKernelArgs
(
kernel_transferInoutPassPerformMpi
,
0
,
&
currentCellsPtr
,
&
currentCellsSize
,
&
externalCellsPtr
,
&
externalCellsSize
,
&
idxLevel
,
&
outsideInteractionsCl
,
SetKernelArgs
(
kernel_transferInoutPassPerformMpi
,
0
,
&
currentCellsPtr
,
&
currentCellsSize
,
&
externalCellsPtr
,
&
externalCellsSize
,
&
idxLevel
,
&
outsideInteractionsCl
,
&
outsideInteractionsSize
,
&
user_data
);
&
outsideInteractionsSize
,
&
user_data
);
size_t
dim
=
1
;
const
size_t
*
dim
=
kernelFilename
.
getDimSizes
()
;
const
int
err
=
clEnqueueNDRangeKernel
(
queue_transferInoutPassPerformMpi
,
kernel_transferInoutPassPerformMpi
,
1
,
NULL
,
&
dim
,
NULL
,
0
,
NULL
,
NULL
);
const
int
err
=
clEnqueueNDRangeKernel
(
queue_transferInoutPassPerformMpi
,
kernel_transferInoutPassPerformMpi
,
kernelFilename
.
getNbDims
()
,
NULL
,
dim
,
NULL
,
0
,
NULL
,
NULL
);
if
(
err
!=
CL_SUCCESS
)
STARPU_OPENCL_REPORT_ERROR
(
err
);
if
(
err
!=
CL_SUCCESS
)
STARPU_OPENCL_REPORT_ERROR
(
err
);
}
}
void
transferInPassPerform
(
cl_mem
currentCellsPtr
,
size_t
currentCellsSize
,
int
idxLevel
){
void
transferInPassPerform
(
cl_mem
currentCellsPtr
,
size_t
currentCellsSize
,
int
idxLevel
){
SetKernelArgs
(
kernel_transferInPassPerform
,
0
,
&
currentCellsPtr
,
&
currentCellsSize
,
&
idxLevel
,
&
user_data
);
SetKernelArgs
(
kernel_transferInPassPerform
,
0
,
&
currentCellsPtr
,
&
currentCellsSize
,
&
idxLevel
,
&
user_data
);
size_t
dim
=
1
;
const
size_t
*
dim
=
kernelFilename
.
getDimSizes
()
;
const
int
err
=
clEnqueueNDRangeKernel
(
queue_transferInPassPerform
,
kernel_transferInPassPerform
,
1
,
NULL
,
&
dim
,
NULL
,
0
,
NULL
,
NULL
);
const
int
err
=
clEnqueueNDRangeKernel
(
queue_transferInPassPerform
,
kernel_transferInPassPerform
,
kernelFilename
.
getNbDims
()
,
NULL
,
dim
,
NULL
,
0
,
NULL
,
NULL
);
if
(
err
!=
CL_SUCCESS
)
STARPU_OPENCL_REPORT_ERROR
(
err
);
if
(
err
!=
CL_SUCCESS
)
STARPU_OPENCL_REPORT_ERROR
(
err
);
}
}
...
@@ -220,8 +238,8 @@ public:
...
@@ -220,8 +238,8 @@ public:
size_t
outsideInteractionsSize
){
size_t
outsideInteractionsSize
){
SetKernelArgs
(
kernel_transferInoutPassPerform
,
0
,
&
currentCellsPtr
,
&
currentCellsSize
,
&
externalCellsPtr
,
&
externalCellsSize
,
&
idxLevel
,
SetKernelArgs
(
kernel_transferInoutPassPerform
,
0
,
&
currentCellsPtr
,
&
currentCellsSize
,
&
externalCellsPtr
,
&
externalCellsSize
,
&
idxLevel
,
&
outsideInteractionsCl
,
&
outsideInteractionsSize
,
&
user_data
);
&
outsideInteractionsCl
,
&
outsideInteractionsSize
,
&
user_data
);
size_t
dim
=
1
;
const
size_t
*
dim
=
kernelFilename
.
getDimSizes
()
;
const
int
err
=
clEnqueueNDRangeKernel
(
queue_transferInoutPassPerform
,
kernel_transferInoutPassPerform
,
1
,
NULL
,
&
dim
,
NULL
,
0
,
NULL
,
NULL
);
const
int
err
=
clEnqueueNDRangeKernel
(
queue_transferInoutPassPerform
,
kernel_transferInoutPassPerform
,
kernelFilename
.
getNbDims
()
,
NULL
,
dim
,
NULL
,
0
,
NULL
,
NULL
);
if
(
err
!=
CL_SUCCESS
)
STARPU_OPENCL_REPORT_ERROR
(
err
);
if
(
err
!=
CL_SUCCESS
)
STARPU_OPENCL_REPORT_ERROR
(
err
);
}
}
...
@@ -234,8 +252,8 @@ public:
...
@@ -234,8 +252,8 @@ public:
SetKernelArgs
(
kernel_downardPassPerform
,
0
,
&
currentCellsPtr
,
SetKernelArgs
(
kernel_downardPassPerform
,
0
,
&
currentCellsPtr
,
&
currentCellsSize
,
&
ptrs
,
&
sizes
,
&
nbSubCellGroups
,
&
idxLevel
,
&
user_data
);
&
currentCellsSize
,
&
ptrs
,
&
sizes
,
&
nbSubCellGroups
,
&
idxLevel
,
&
user_data
);
size_t
dim
=
1
;
const
size_t
*
dim
=
kernelFilename
.
getDimSizes
()
;
const
int
err
=
clEnqueueNDRangeKernel
(
queue_downardPassPerform
,
kernel_downardPassPerform
,
1
,
NULL
,
&
dim
,
NULL
,
0
,
NULL
,
NULL
);
const
int
err
=
clEnqueueNDRangeKernel
(
queue_downardPassPerform
,
kernel_downardPassPerform
,
kernelFilename
.
getNbDims
()
,
NULL
,
dim
,
NULL
,
0
,
NULL
,
NULL
);
if
(
err
!=
CL_SUCCESS
)
STARPU_OPENCL_REPORT_ERROR
(
err
);
if
(
err
!=
CL_SUCCESS
)
STARPU_OPENCL_REPORT_ERROR
(
err
);
}
}
...
@@ -244,15 +262,15 @@ public:
...
@@ -244,15 +262,15 @@ public:
size_t
outsideInteractionsSize
){
size_t
outsideInteractionsSize
){
SetKernelArgs
(
kernel_directInoutPassPerformMpi
,
0
,
&
containersPtr
,
SetKernelArgs
(
kernel_directInoutPassPerformMpi
,
0
,
&
containersPtr
,
&
containersSize
,
&
externalContainersPtr
,
&
externalContainersSize
,
&
outsideInteractionsCl
,
&
outsideInteractionsSize
,
&
treeHeight
,
&
user_data
);
&
containersSize
,
&
externalContainersPtr
,
&
externalContainersSize
,
&
outsideInteractionsCl
,
&
outsideInteractionsSize
,
&
treeHeight
,
&
user_data
);
size_t
dim
=
1
;
const
size_t
*
dim
=
kernelFilename
.
getDimSizes
()
;
const
int
err
=
clEnqueueNDRangeKernel
(
queue_directInoutPassPerformMpi
,
kernel_directInoutPassPerformMpi
,
1
,
NULL
,
&
dim
,
NULL
,
0
,
NULL
,
NULL
);
const
int
err
=
clEnqueueNDRangeKernel
(
queue_directInoutPassPerformMpi
,
kernel_directInoutPassPerformMpi
,
kernelFilename
.
getNbDims
()
,
NULL
,
dim
,
NULL
,
0
,
NULL
,
NULL
);
if
(
err
!=
CL_SUCCESS
)
STARPU_OPENCL_REPORT_ERROR
(
err
);
if
(
err
!=
CL_SUCCESS
)
STARPU_OPENCL_REPORT_ERROR
(
err
);
}
}
void
directInPassPerform
(
cl_mem
containersPtr
,
size_t
containerSize
){
void
directInPassPerform
(
cl_mem
containersPtr
,
size_t
containerSize
){
SetKernelArgs
(
kernel_directInPassPerform
,
0
,
&
containersPtr
,
&
containerSize
,
&
treeHeight
,
&
user_data
);
SetKernelArgs
(
kernel_directInPassPerform
,
0
,
&
containersPtr
,
&
containerSize
,
&
treeHeight
,
&
user_data
);
size_t
dim
=
1
;
const
size_t
*
dim
=
kernelFilename
.
getDimSizes
()
;
const
int
err
=
clEnqueueNDRangeKernel
(
queue_directInPassPerform
,
kernel_directInPassPerform
,
1
,
NULL
,
&
dim
,
NULL
,
0
,
NULL
,
NULL
);
const
int
err
=
clEnqueueNDRangeKernel
(
queue_directInPassPerform
,
kernel_directInPassPerform
,
kernelFilename
.
getNbDims
()
,
NULL
,
dim
,
NULL
,
0
,
NULL
,
NULL
);
if
(
err
!=
CL_SUCCESS
)
STARPU_OPENCL_REPORT_ERROR
(
err
);
if
(
err
!=
CL_SUCCESS
)
STARPU_OPENCL_REPORT_ERROR
(
err
);
}
}
...
@@ -261,16 +279,16 @@ public:
...
@@ -261,16 +279,16 @@ public:
size_t
outsideInteractionsSize
){
size_t
outsideInteractionsSize
){
SetKernelArgs
(
kernel_directInoutPassPerform
,
0
,
&
containersPtr
,
SetKernelArgs
(
kernel_directInoutPassPerform
,
0
,
&
containersPtr
,
&
containerSize
,
&
externalContainersPtr
,
&
externalContainersSize
,
&
outsideInteractionsCl
,
&
outsideInteractionsSize
,
&
treeHeight
,
&
user_data
);
&
containerSize
,
&
externalContainersPtr
,
&
externalContainersSize
,
&
outsideInteractionsCl
,
&
outsideInteractionsSize
,
&
treeHeight
,
&
user_data
);
size_t
dim
=
1
;
const
size_t
*
dim
=
kernelFilename
.
getDimSizes
()
;
const
int
err
=
clEnqueueNDRangeKernel
(
queue_directInoutPassPerform
,
kernel_directInoutPassPerform
,
1
,
NULL
,
&
dim
,
NULL
,
0
,
NULL
,
NULL
);
const
int
err
=
clEnqueueNDRangeKernel
(
queue_directInoutPassPerform
,
kernel_directInoutPassPerform
,
kernelFilename
.
getNbDims
()
,
NULL
,
dim
,
NULL
,
0
,
NULL
,
NULL
);
if
(
err
!=
CL_SUCCESS
)
STARPU_OPENCL_REPORT_ERROR
(
err
);
if
(
err
!=
CL_SUCCESS
)
STARPU_OPENCL_REPORT_ERROR
(
err
);
}
}
void
mergePassPerform
(
cl_mem
leafCellsPtr
,
void
mergePassPerform
(
cl_mem
leafCellsPtr
,
size_t
leafCellsSize
,
cl_mem
containersPtr
,
size_t
containersSize
){
size_t
leafCellsSize
,
cl_mem
containersPtr
,
size_t
containersSize
){
SetKernelArgs
(
kernel_mergePassPerform
,
0
,
&
leafCellsPtr
,
&
leafCellsSize
,
&
containersPtr
,
&
containersSize
,
&
user_data
);
SetKernelArgs
(
kernel_mergePassPerform
,
0
,
&
leafCellsPtr
,
&
leafCellsSize
,
&
containersPtr
,
&
containersSize
,
&
user_data
);
size_t
dim
=
1
;
const
size_t
*
dim
=
kernelFilename
.
getDimSizes
()
;
const
int
err
=
clEnqueueNDRangeKernel
(
queue_mergePassPerform
,
kernel_mergePassPerform
,
1
,
NULL
,
&
dim
,
NULL
,
0
,
NULL
,
NULL
);
const
int
err
=
clEnqueueNDRangeKernel
(
queue_mergePassPerform
,
kernel_mergePassPerform
,
kernelFilename
.
getNbDims
()
,
NULL
,
dim
,
NULL
,
0
,
NULL
,
NULL
);
if
(
err
!=
CL_SUCCESS
)
STARPU_OPENCL_REPORT_ERROR
(
err
);
if
(
err
!=
CL_SUCCESS
)
STARPU_OPENCL_REPORT_ERROR
(
err
);
}
}
};
};
...
...
This diff is collapsed.
Click to expand it.
Tests/noDist/testBlockedWithOpenCLAlgorithm.cpp
+
38
−
22
View file @
453a95b1
...
@@ -52,6 +52,44 @@ const int FTestCell_Alignement::mindex = reinterpret_cast<std::size_t>(&((reinte
...
@@ -52,6 +52,44 @@ const int FTestCell_Alignement::mindex = reinterpret_cast<std::size_t>(&((reinte
const
int
FTestCell_Alignement
::
coord
=
reinterpret_cast
<
std
::
size_t
>
(
&
((
reinterpret_cast
<
FTestCell
*>
(
0xF00
))
->
coordinate
))
-
std
::
size_t
(
0xF00
);
const
int
FTestCell_Alignement
::
coord
=
reinterpret_cast
<
std
::
size_t
>
(
&
((
reinterpret_cast
<
FTestCell
*>
(
0xF00
))
->
coordinate
))
-
std
::
size_t
(
0xF00
);
// Initialize the types
class
OpenCLSource
{
FTextReplacer
kernelfile
;
size_t
dim
;
public:
//OpenCLSource() : kernelfile("/home/berenger/Projets/ScalfmmGit/scalfmm/Src/GroupTree/OpenCl/FEmptyKernel.cl"){
OpenCLSource
()
:
kernelfile
(
"/home/berenger/Projets/ScalfmmGit/scalfmm/Src/GroupTree/OpenCl/FTestKernel.cl"
){
kernelfile
.
replaceAll
(
"___FReal___"
,
"double"
);
kernelfile
.
replaceAll
(
"___FParticleValueClass___"
,
"long long"
);
kernelfile
.
replaceAll
(
"___FCellClassSize___"
,
sizeof
(
FTestCell
));
kernelfile
.
replaceAll
(
"___NbAttributesPerParticle___"
,
2
);
kernelfile
.
replaceAll
(
"___FCellUpOffset___"
,
FTestCell_Alignement
::
dataUp
);
kernelfile
.
replaceAll
(
"___FCellDownOffset___"
,
FTestCell_Alignement
::
dataDown
);
kernelfile
.
replaceAll
(
"___FCellMortonOffset___"
,
FTestCell_Alignement
::
mindex
);
kernelfile
.
replaceAll
(
"___FCellCoordinateOffset___"
,
FTestCell_Alignement
::
coord
);
dim
=
1
;
}
const
char
*
getKernelCode
(
const
int
/*inDevId*/
){
return
kernelfile
.
getContent
();
}
void
releaseKernelCode
(){
kernelfile
.
clear
();
}
size_t
getNbDims
()
const
{
return
1
;
}
const
size_t
*
getDimSizes
()
const
{
return
&
dim
;
}
};
int
main
(
int
argc
,
char
*
argv
[]){
int
main
(
int
argc
,
char
*
argv
[]){
setenv
(
"STARPU_NCPU"
,
"0"
,
1
);
setenv
(
"STARPU_NCPU"
,
"0"
,
1
);
setenv
(
"STARPU_NOPENCL"
,
"1"
,
1
);
setenv
(
"STARPU_NOPENCL"
,
"1"
,
1
);
...
@@ -65,28 +103,6 @@ int main(int argc, char* argv[]){
...
@@ -65,28 +103,6 @@ int main(int argc, char* argv[]){
"Usually run with STARPU_NCPU=0 STARPU_NOPENCL=1 STARPU_OPENCL_ONLY_ON_CPUS=1 ./Tests/Release/testBlockedWithOpenCLAlgorithm"
,
"Usually run with STARPU_NCPU=0 STARPU_NOPENCL=1 STARPU_OPENCL_ONLY_ON_CPUS=1 ./Tests/Release/testBlockedWithOpenCLAlgorithm"
,
FParameterDefinitions
::
OctreeHeight
,
FParameterDefinitions
::
NbThreads
,
FParameterDefinitions
::
OctreeHeight
,
FParameterDefinitions
::
NbThreads
,
FParameterDefinitions
::
NbParticles
,
LocalOptionBlocSize
);
FParameterDefinitions
::
NbParticles
,
LocalOptionBlocSize
);
// Initialize the types
class
OpenCLSource
{
FTextReplacer
kernelfile
;
public:
//OpenCLSource() : kernelfile("/home/berenger/Projets/ScalfmmGit/scalfmm/Src/GroupTree/OpenCl/FEmptyKernel.cl"){
OpenCLSource
()
:
kernelfile
(
"/home/berenger/Projets/ScalfmmGit/scalfmm/Src/GroupTree/OpenCl/FTestKernel.cl"
){
kernelfile
.
replaceAll
(
"___FReal___"
,
"double"
);
kernelfile
.
replaceAll
(
"___FParticleValueClass___"
,
"long long"
);
kernelfile
.
replaceAll
(
"___FCellClassSize___"
,
sizeof
(
FTestCell
));
kernelfile
.
replaceAll
(
"___NbAttributesPerParticle___"
,
2
);
kernelfile
.
replaceAll
(
"___FCellUpOffset___"
,
FTestCell_Alignement
::
dataUp
);
kernelfile
.
replaceAll
(
"___FCellDownOffset___"
,
FTestCell_Alignement
::
dataDown
);
kernelfile
.
replaceAll
(
"___FCellMortonOffset___"
,
FTestCell_Alignement
::
mindex
);
kernelfile
.
replaceAll
(
"___FCellCoordinateOffset___"
,
FTestCell_Alignement
::
coord
);
}
operator
const
char
*
(){
return
kernelfile
.
getContent
();
}
};
typedef
FTestCell
GroupCellClass
;
typedef
FTestCell
GroupCellClass
;
typedef
FGroupTestParticleContainer
GroupContainerClass
;
typedef
FGroupTestParticleContainer
GroupContainerClass
;
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment