Skip to content

Commit d6e3f7e

Browse files
Merge pull request #1734 from arcaneframework/dev/gg-add-color-to-profile-region
Add support to choose color when profiling region
2 parents e557143 + 232f951 commit d6e3f7e

File tree

7 files changed

+36
-9
lines changed

7 files changed

+36
-9
lines changed

arcane/src/arcane/accelerator/core/ProfileRegion.cc

+13-1
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,19 @@ ProfileRegion(const RunQueue& queue, const String& name)
3131
if (queue.isNull())
3232
return;
3333
m_runtime = queue._internalRuntime();
34-
m_runtime->pushProfilerRange(name);
34+
m_runtime->pushProfilerRange(name, -1);
35+
}
36+
37+
/*---------------------------------------------------------------------------*/
38+
/*---------------------------------------------------------------------------*/
39+
40+
ProfileRegion::
41+
ProfileRegion(const RunQueue& queue, const String& name, Int32 color_rgb)
42+
{
43+
if (queue.isNull())
44+
return;
45+
m_runtime = queue._internalRuntime();
46+
m_runtime->pushProfilerRange(name, color_rgb);
3547
}
3648

3749
/*---------------------------------------------------------------------------*/

arcane/src/arcane/accelerator/core/internal/IRunnerRuntime.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ class ARCANE_ACCELERATOR_CORE_EXPORT IRunnerRuntime
5252
virtual void startProfiling() {}
5353
virtual void stopProfiling() {}
5454
virtual bool isProfilingActive() { return false; }
55-
virtual void pushProfilerRange(const String&) {}
55+
virtual void pushProfilerRange([[maybe_unused]] const String& name, [[maybe_unused]] Int32 color_gdb) {}
5656
virtual void popProfilerRange() {}
5757
virtual void finalize(ITraceMng*) {}
5858

arcane/src/arcane/accelerator/core/internal/ProfileRegion.h

+1
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ class ARCANE_ACCELERATOR_CORE_EXPORT ProfileRegion
3737
public:
3838

3939
ProfileRegion(const RunQueue& queue, const String& name);
40+
ProfileRegion(const RunQueue& queue, const String& name, Int32 color_rgb);
4041
~ProfileRegion();
4142

4243
private:

arcane/src/arcane/accelerator/cuda/runtime/CudaAcceleratorRuntime.cc

+16-2
Original file line numberDiff line numberDiff line change
@@ -382,10 +382,24 @@ class CudaRunnerRuntime
382382
ptr, ca.devicePointer, ca.hostPointer);
383383
}
384384

385-
void pushProfilerRange(const String& name) override
385+
void pushProfilerRange(const String& name, Int32 color_rgb) override
386386
{
387387
#ifdef ARCANE_HAS_CUDA_NVTOOLSEXT
388-
nvtxRangePush(name.localstr());
388+
if (color_rgb >= 0) {
389+
// NOTE: Il faudrait faire: nvtxEventAttributes_t eventAttrib = { 0 };
390+
// mais cela provoque pleins d'avertissement de type 'missing initializer for member'
391+
nvtxEventAttributes_t eventAttrib;
392+
std::memset(&eventAttrib, 0, sizeof(nvtxEventAttributes_t));
393+
eventAttrib.version = NVTX_VERSION;
394+
eventAttrib.size = NVTX_EVENT_ATTRIB_STRUCT_SIZE;
395+
eventAttrib.colorType = NVTX_COLOR_ARGB;
396+
eventAttrib.color = color_rgb;
397+
eventAttrib.messageType = NVTX_MESSAGE_TYPE_ASCII;
398+
eventAttrib.message.ascii = name.localstr();
399+
nvtxRangePushEx(&eventAttrib);
400+
}
401+
else
402+
nvtxRangePush(name.localstr());
389403
#endif
390404
}
391405
void popProfilerRange() override

arcane/src/arcane/materials/IncrementalComponentModifier.cc

+1-1
Original file line numberDiff line numberDiff line change
@@ -328,7 +328,7 @@ _resizeVariablesIndexer(Int32 var_index)
328328
{
329329
RunQueue& queue = m_material_mng->_internalApi()->runQueue();
330330
RunQueue::ScopedAsync sc(&m_queue);
331-
Accelerator::ProfileRegion ps(queue, "ResizeVariableIndexer");
331+
Accelerator::ProfileRegion ps(queue, "ResizeVariableIndexer", 0xFF00FF);
332332
ResizeVariableIndexerArgs resize_args(var_index, queue);
333333
// Regarde si on n'utilise qu'une seule commande pour les copies des vues.
334334
// Pour l'instant (novembre 2024) on ne l'utilise par défaut que si

arcane/src/arcane/materials/IncrementalComponentModifier_Accelerator.cc

+3-3
Original file line numberDiff line numberDiff line change
@@ -44,8 +44,8 @@ apply(MaterialModifierOperation* operation)
4444
const char* str_add = "ApplyConstituentOperationAdd";
4545
const char* str_remove = "ApplyConstituentOperationRemove";
4646
bool is_add = operation->isAdd();
47-
48-
Accelerator::ProfileRegion ps(m_queue, is_add ? str_add : str_remove);
47+
Int32 color = (is_add) ? 0x00FFFF : 0x007FFF;
48+
Accelerator::ProfileRegion ps(m_queue, is_add ? str_add : str_remove, color);
4949

5050
IMeshMaterial* mat = operation->material();
5151
SmallSpan<const Int32> orig_ids = operation->ids();
@@ -326,7 +326,7 @@ _addItemsToIndexer(MeshMaterialVariableIndexer* var_indexer,
326326
// TODO: Comme tout est indépendant par variable, on pourrait
327327
// éventuellement utiliser plusieurs files.
328328
if (m_do_init_new_items) {
329-
Accelerator::ProfileRegion ps(m_queue, "InitializeNewItems");
329+
Accelerator::ProfileRegion ps(m_queue, "InitializeNewItems", 0xFFFF00);
330330
RunQueue::ScopedAsync sc(&m_queue);
331331
IMeshMaterialMng* mm = m_material_mng;
332332
auto func = [&](IMeshMaterialVariable* mv) {

arcane/src/arcane/materials/MeshMaterialModifierImpl.cc

+1-1
Original file line numberDiff line numberDiff line change
@@ -223,7 +223,7 @@ endUpdate()
223223
void MeshMaterialModifierImpl::
224224
_endUpdate()
225225
{
226-
Accelerator::ProfileRegion ps(m_queue,"ConstituentsEndUpdate");
226+
Accelerator::ProfileRegion ps(m_queue,"ConstituentsEndUpdate", 0x97599A);
227227

228228
bool is_keep_value = m_material_mng->isKeepValuesAfterChange();
229229
Integer nb_operation = m_operations.values().size();

0 commit comments

Comments
 (0)