@@ -113,7 +113,7 @@ class MeshMaterialAcceleratorUnitTest
113
113
UniqueArray<Int32> m_env1_partial_value_index;
114
114
CellGroup m_sub_env_group1;
115
115
116
- void _initializeVariables ();
116
+ void _initializeVariables (ComponentItemVectorView component );
117
117
118
118
public:
119
119
@@ -124,7 +124,9 @@ class MeshMaterialAcceleratorUnitTest
124
124
void _executeTest2 (Integer nb_z);
125
125
void _executeTest3 (Integer nb_z);
126
126
void _executeTest4 (Integer nb_z);
127
- void _checkValues ();
127
+ void _executeTest5 (Integer nb_z,MatCellVectorView mat);
128
+ void _checkEnvValues1 ();
129
+ void _checkMatValues1 ();
128
130
void _checkEnvironmentValues ();
129
131
};
130
132
@@ -322,7 +324,7 @@ executeTest()
322
324
<< " nb_unknown=" << nb_unknown
323
325
<< " nb_z=" << nb_z << " nb_z2=" << nb_z2;
324
326
325
- _initializeVariables ();
327
+ _initializeVariables (m_env1-> envView () );
326
328
EnvCellVector sub_ev1 (m_sub_env_group1,m_env1);
327
329
{
328
330
_executeTest1 (nb_z,m_env1->envView ());
@@ -337,13 +339,18 @@ executeTest()
337
339
{
338
340
_executeTest4 (nb_z);
339
341
}
342
+ {
343
+ IMeshEnvironment* env2 = m_mm_mng->environments ()[1 ];
344
+ IMeshMaterial* mat2 = env2->materials ()[1 ];
345
+ _executeTest5 (nb_z,mat2->matView ());
346
+ }
340
347
}
341
348
342
349
/* ---------------------------------------------------------------------------*/
343
350
/* ---------------------------------------------------------------------------*/
344
351
345
352
void MeshMaterialAcceleratorUnitTest::
346
- _initializeVariables ()
353
+ _initializeVariables (ComponentItemVectorView component )
347
354
{
348
355
MaterialVariableCellReal& a_ref (m_mat_a_ref);
349
356
MaterialVariableCellReal& b_ref (m_mat_b_ref);
@@ -356,8 +363,9 @@ _initializeVariables()
356
363
MaterialVariableCellReal& c (m_mat_c);
357
364
MaterialVariableCellReal& d (m_mat_d);
358
365
MaterialVariableCellReal& e (m_mat_e);
366
+ bool is_env = component.component ()->isEnvironment ();
359
367
360
- ENUMERATE_ENVCELL (i,m_env1 ){
368
+ ENUMERATE_COMPONENTCELL (i,component ){
361
369
Real z = (Real)i.index ();
362
370
b_ref[i] = z*2.3 ;
363
371
c_ref[i] = z*3.1 ;
@@ -369,23 +377,25 @@ _initializeVariables()
369
377
c[i] = c_ref[i];
370
378
d[i] = d_ref[i];
371
379
e[i] = e_ref[i];
372
- m_env_a[i] = a_ref[i];
373
- m_env_b[i] = b_ref[i];
374
- m_env_c[i] = c_ref[i];
380
+ if (is_env){
381
+ m_env_a[i] = a_ref[i];
382
+ m_env_b[i] = b_ref[i];
383
+ m_env_c[i] = c_ref[i];
384
+ }
375
385
}
376
386
}
377
387
378
388
/* ---------------------------------------------------------------------------*/
379
389
/* ---------------------------------------------------------------------------*/
380
390
/* !
381
- * \brief Test du RUNCOMMAND_ENUMERATE (EnvCell, ...
391
+ * \brief Test du RUNCOMMAND_MAT_ENUMERATE (EnvCell, ...
382
392
* avec en paramètres l'environnement et cherchant à accèder
383
393
* aux variables multimat par l'envcell (i.e. le MatVarIndex en fait)
384
394
*/
385
395
void MeshMaterialAcceleratorUnitTest::
386
396
_executeTest1 (Integer nb_z,EnvCellVectorView env1)
387
397
{
388
- _initializeVariables ();
398
+ _initializeVariables (m_env1-> envView () );
389
399
390
400
// Ref CPU
391
401
for (Integer z=0 , iz=nb_z; z<iz; ++z) {
@@ -412,7 +422,48 @@ _executeTest1(Integer nb_z,EnvCellVectorView env1)
412
422
}
413
423
}
414
424
415
- _checkValues ();
425
+ _checkEnvValues1 ();
426
+ }
427
+
428
+ /* ---------------------------------------------------------------------------*/
429
+ /* ---------------------------------------------------------------------------*/
430
+ /* !
431
+ * \brief Test du RUNCOMMAND_MAT_ENUMERATE(MatCell, ...
432
+ * avec en paramètres l'environnement et cherchant à accèder
433
+ * aux variables multimat par l'envcell (i.e. le MatVarIndex en fait)
434
+ */
435
+ void MeshMaterialAcceleratorUnitTest::
436
+ _executeTest5 (Integer nb_z,MatCellVectorView mat1)
437
+ {
438
+ info () << " Execute Test 5" ;
439
+ _initializeVariables (mat1);
440
+
441
+ // Ref CPU
442
+ for (Integer z=0 , iz=nb_z; z<iz; ++z) {
443
+ ENUMERATE_MATCELL (i,mat1){
444
+ m_mat_a_ref[i] = m_mat_b_ref[i] + m_mat_c_ref[i] * m_mat_d_ref[i] + m_mat_e_ref[i];
445
+ }
446
+ }
447
+
448
+ // GPU
449
+ {
450
+ auto queue = makeQueue (m_runner);
451
+ auto cmd = makeCommand (queue);
452
+
453
+ auto out_a = ax::viewOut (cmd, m_mat_a);
454
+ auto in_b = ax::viewIn (cmd, m_mat_b);
455
+ auto in_c = ax::viewIn (cmd, m_mat_c);
456
+ auto in_d = ax::viewIn (cmd, m_mat_d);
457
+ auto in_e = ax::viewIn (cmd, m_mat_e);
458
+
459
+ for (Integer z=0 , iz=nb_z; z<iz; ++z) {
460
+ cmd << RUNCOMMAND_MAT_ENUMERATE (MatCell, evi, mat1) {
461
+ out_a[evi] = in_b[evi] + in_c[evi] * in_d[evi] + in_e[evi];
462
+ };
463
+ }
464
+ }
465
+
466
+ _checkMatValues1 ();
416
467
}
417
468
418
469
/* ---------------------------------------------------------------------------*/
@@ -501,7 +552,7 @@ _executeTest2(Integer nb_z)
501
552
}
502
553
}
503
554
504
- _checkValues ();
555
+ _checkEnvValues1 ();
505
556
_checkEnvironmentValues ();
506
557
}
507
558
@@ -573,7 +624,7 @@ _executeTest3(Integer nb_z)
573
624
}
574
625
}
575
626
576
- _checkValues ();
627
+ _checkEnvValues1 ();
577
628
}
578
629
579
630
/* ---------------------------------------------------------------------------*/
@@ -648,7 +699,7 @@ _executeTest4(Integer nb_z)
648
699
}
649
700
}
650
701
651
- _checkValues ();
702
+ _checkEnvValues1 ();
652
703
653
704
// Some further functions testing, not really usefull here, but it improves cover
654
705
AllCellToAllEnvCell *useless (nullptr );
@@ -746,7 +797,7 @@ _executeTest4(Integer nb_z)
746
797
}
747
798
}
748
799
749
- _checkValues ();
800
+ _checkEnvValues1 ();
750
801
}
751
802
752
803
/* ---------------------------------------------------------------------------*/
@@ -772,7 +823,7 @@ void _checkOneValue(Real value,Real ref_value,const char* var_name)
772
823
/* ---------------------------------------------------------------------------*/
773
824
774
825
void MeshMaterialAcceleratorUnitTest::
775
- _checkValues ()
826
+ _checkEnvValues1 ()
776
827
{
777
828
ValueChecker vc (A_FUNCINFO);
778
829
ENUMERATE_ENV (ienv, m_mm_mng) {
@@ -790,6 +841,25 @@ _checkValues()
790
841
/* ---------------------------------------------------------------------------*/
791
842
/* ---------------------------------------------------------------------------*/
792
843
844
+ void MeshMaterialAcceleratorUnitTest::
845
+ _checkMatValues1 ()
846
+ {
847
+ ValueChecker vc (A_FUNCINFO);
848
+ ENUMERATE_MAT (imat, m_mm_mng) {
849
+ IMeshMaterial* mat = *imat;
850
+ ENUMERATE_MATCELL (imat,mat) {
851
+ _checkOneValue (m_mat_a[imat], m_mat_a_ref[imat]," Test1_mat_a" );
852
+ _checkOneValue (m_mat_b[imat], m_mat_b_ref[imat]," Test1_mat_b" );
853
+ _checkOneValue (m_mat_c[imat], m_mat_c_ref[imat]," Test1_mat_c" );
854
+ _checkOneValue (m_mat_d[imat], m_mat_d_ref[imat]," Test1_mat_d" );
855
+ _checkOneValue (m_mat_e[imat], m_mat_e_ref[imat]," Test1_mat_e" );
856
+ }
857
+ }
858
+ }
859
+
860
+ /* ---------------------------------------------------------------------------*/
861
+ /* ---------------------------------------------------------------------------*/
862
+
793
863
void MeshMaterialAcceleratorUnitTest::
794
864
_checkEnvironmentValues ()
795
865
{
0 commit comments