Remote file access and profiler launching#882
Draft
tomk-amd wants to merge 57 commits into
Draft
Conversation
Fix profiler binary names.
- Renamed profiler type from kRPVProfilerTypeRocprofSysSample to kRPVProfilerTypeRocprofSysRun for clarity. - Introduced a new method to retrieve the exit code of the profiler process. - Enhanced Future class to manage user data with appropriate deleter functions. - Updated ProfilerProcessController to store and return the exit code after process completion. - Modified DataProvider to expose the exit code retrieval functionality. - Adjusted ProfilerLauncherDialog to include auto-load trace option and improved output handling.
- Introduced a new header file for the profiler API, defining functions for configuration management. - Implemented the profiler configuration functions in a new source file. - Updated the controller to include the new profiler source file and removed obsolete profiler process handling. - Adjusted the data provider to integrate with the new profiler API.
- Updated the IProfilerBackend interface to remove backend_payload parameter from ExportCfg and added LoadSettings and SaveSettings methods for better configuration management. - Adjusted ProfilerLauncherDialog to utilize the new settings methods, ensuring proper loading and saving of backend configurations. - Introduced RocprofSysSettings struct for managing backend-specific settings with JSON serialization support.
- Introduced new header and source files for command-line argument and environment variable handling. - Implemented functions to build argument vectors and serialize commands for both POSIX and Windows environments. - Refactored LocalProfilerExecutor to utilize the new command-line helpers, improving code clarity and maintainability.
- Updated RenderTargetSection to always sync target buffers when the target changes. - Introduced WarningMessage struct for managing warning messages with different severity levels. - Enhanced IProfilerBackend interface with GetWarnings method to provide warnings based on the current configuration. - Updated ProfilerLauncherDialog to display warnings from the backend, improving user feedback during profiler launches. - Refactored RocprofSysSettings to utilize maps for managing ROCm domains and AMD SMI metrics, allowing for more flexible configuration.
Add clear output button (clears backend buffer too).
- Renamed RenderGeneralTab to RenderGeneralTraceOptions for clarity. - Updated tab rendering logic to include preset control messages and disable options based on preset selection. - Enhanced user interface feedback by adding section titles and help markers for better guidance on trace options and settings.
…he rest of the project style
…el" options into a top toolbar layout. Get rid of left / right panels.
- Introduced `rocprofvis_profiler_t` as a handle for managing profiler sessions. - Updated functions to use the new session handle for launching, querying state, and managing output. - Removed user data handling from the `Future` class to streamline the profiler's asynchronous operations. - Enhanced `DataProvider` to utilize the new session management for profiler operations, improving clarity and maintainability.
…dle capital letters in user name. Multiple fixes.
…ed SshSession class on UI level to fit UI logic better
…(on UI side). Create AppMonitor object for monitoring "long" operations like profiling sessions and ssh connections.
…riables out of AppWindow
Initial implementation of ssh profiler executor.
Co-authored-by: Copilot <copilot@github.com>
…ntations - Updated `ProfilerSession` and `RemoteProfilerSession` to inherit from `ProfilerSessionBase`, reducing code duplication.
- Simplified the handling of SSH status by consolidating the `now` and `next` status into a single atomic variable. - Updated methods to reflect the new status management approach, ensuring that status transitions are clear and consistent. - Enhanced comments to clarify the ownership and observation contract between worker threads and the UI.
- Replaced fixed-size char buffer inputs with std::string-backed inputs for SSH settings dialogs and profiler launcher. - Introduced helper functions `InputTextString` and `InputTextStringWithHint` to streamline input handling with dynamic resizing. - Updated relevant dialogs to utilize the new input methods, improving code readability and maintainability.
- Introduced SshConnectionConfig and SshConnectionStore for managing SSH connection profiles, allowing for persistent storage in the profiles.json document. - Added JSON utility functions for reading and writing various data types, enhancing the handling of JSON data across the application. - Updated existing components to utilize the new SSH connection management system, including the profiler launcher and settings manager. - Refactored relevant code to improve maintainability and readability, ensuring a consistent approach to handling SSH connections and their configurations.
- Added a virtual method `ParseTraceOutputPath` to the `IProfilerBackend` interface to allow backends to deduce the trace file path from the profiler's stdout. - Implemented the parsing logic in the `RocprofSysBackend`, which extracts the database path from the profiler's output, - Removed the deprecated remote output database path input from the UI
…dges - Introduced `ConsoleStatusLevel` enum to represent the severity of console status badges. - Updated `RenderOutputConsole` to accept a label and status level, improving consistency in badge display. - Implemented `ComputeConsoleStatus` to manage the mapping of remote workflow phases and local profiler states to the console status. - Enhanced the output console to display optional phase details alongside the status badge, improving user feedback during remote operations.
- Introduced `ProfilerLaunchOrchestrator` to manage both local and remote profiling sessions, normalizing their control flows. - Updated `CMakeLists.txt` to include new orchestrator source and header files. - Refactored `ProfilerLauncherDialog` to utilize the orchestrator for session management, improving code organization and separation of concerns. - Removed direct session handling from the dialog, delegating responsibilities to the orchestrator for better maintainability.
Removed GLFW hotkey, should be done via hotkey manager. Add ongoing operations to events that keep the application polling. Show ongoing operations in status bar. Co-authored-by: Copilot <copilot@github.com>
Contributor
There was a problem hiding this comment.
CodeQL found more than 20 potential problems in the proposed changes. Check the Files changed tab for more details.
* Add support for OpenSSL as an optional crypto backend. Remove OpenSSL files from 3rd party folder. - Updated the build configuration to allow selection of OpenSSL as the crypto backend for SSH and remote features. - Enhanced CMakeLists.txt to stage OpenSSL libraries in the app bundle for macOS, ensuring a self-contained application. - Modified CI workflows for Ubuntu, RedHat, and Windows to install OpenSSL when selected as the crypto backend. - Updated documentation in BUILDING.md to reflect the new crypto backend options and installation instructions. * Fix OpenSSL requirements * Enhance OpenSSL integration in CMake configuration - Promote OpenSSL::SSL and OpenSSL::Crypto targets to global scope to ensure visibility across all CMake subdirectories, particularly for libssh2. - This change prevents potential linking issues by making OpenSSL components accessible to the root target. * Fix mac workflow * Enhance OpenSSL integration and CI workflows - Improved CMake configuration to better locate OpenSSL DLLs, adding fallback mechanisms for Windows installations. - Updated CI workflows to handle OpenSSL library paths more robustly, ensuring correct linking during builds. - Enhanced artifact preparation steps to include necessary DLLs and PDB files for distribution. * Rework openssl path detection and favour the choco installed one. * Enhance OpenSSL DLL staging in CMake configuration - Improved detection and globbing of OpenSSL DLLs for Windows, ensuring only the relevant versions are included. - Added messaging to provide feedback on the OpenSSL runtime DLLs being staged. - Cleared cached OpenSSL version major variable when using mbedTLS as the crypto backend. * Refine OpenSSL path detection in CI workflows - Enhanced the logic for locating OpenSSL installations by prioritizing Chocolatey's Win64 layout and adding checks for necessary headers and DLLs. - Improved error messaging to indicate which paths were checked if OpenSSL is not found. - Ensured consistent handling of OpenSSL paths across both CI and release build workflows. * Enhance OpenSSL staging process for macOS - Updated the CMake configuration to improve the handling of OpenSSL library paths, ensuring that versioned dylibs are correctly resolved and staged in the app bundle. - Implemented a new script to rewrite OpenSSL load commands, preventing crashes on clean machines due to absolute Homebrew references. - Enhanced documentation in BUILDING.md to clarify the new staging process and its benefits.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Motivation
Allow the user to browse remote file systems and launch a profiler locally and remotely.
Initial version implements:
-The ability to launch ROCm profilers (rocprof-sys) directly from the application
Technical Details
Todo: remove openssl from thirdparty