- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Regards,
Eric M
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
There are no special command line switches. I have succesfully run VTune Amplifier XE 2011 u1on applications instrumented with the User mode API's.
The only tissues I can think of...
1) You must compile and link against the headers and Libraries in VTune Amplifier XE 2011 u1 (you can't use the headers and libraries supplied with the old version of VTune 9.1)
2) Hardware Event-based Sampling works with the JIT API (Lightweight Hotspots & Advanced Processor Analysis) - but, User-mode Sampling and Tracing Analysis (Hotspots, Concurrency, and Locks and WaitsAnalysis) does not support the JIT API yet.
The Sample Code that ships with VTune 9.1 works with VTune Amplifier XE 2011 u1. Note: This sample points to the wrong Headers and Libs for the JIT API - the project settingsneed to be modified to point to the updated locations in VTune Amplifier XE 2011 u1.
Regards,
Eric M
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I've been struggling with this tonight too. Iupdated to VTune Amplifier XE 2011 u1, set the ENABLE_JITPROFILING=1 environment variable (is that still necessary?), and ran a lightweight hotspot analysis, but the JIT symbols aren't coming up in the report. I tried both the GUI and the command-line"amplxe-cl -collect lightweight-hotspots test.exe" with various variations of the belowminimal sample code.
[bash]
#include#include #include iJIT_Method_Load jmethod = {0}; iJIT_Method_NIDS method1, method2; int x = 0; void test1(void) { int i; iJIT_NotifyEvent(iJVM_EVENT_TYPE_ENTER_NIDS, (void*)&method1); for (i=0; i<100000000; i++) x++; iJIT_NotifyEvent(iJVM_EVENT_TYPE_LEAVE_NIDS, (void*)&method1); } void test2(void) { int i; iJIT_NotifyEvent(iJVM_EVENT_TYPE_ENTER_NIDS, (void*)&method2); for (i=0; i<100000000; i++) x++; test1(); iJIT_NotifyEvent(iJVM_EVENT_TYPE_LEAVE_NIDS, (void*)&method2); } int main() { int i; if (iJIT_IsProfilingActive() != iJIT_SAMPLING_ON) { printf("warning: not being profiledn"); } method1.method_id = 0x100000; method2.method_id = 0x100001; method1.method_name = "TeSt1"; method2.method_name = "TeSt2"; jmethod.method_id = method1.method_id; jmethod.method_name = "TeSt1"; jmethod.class_file_name = "JITter"; jmethod.source_file_name = "jitter.cpp"; jmethod.method_load_address = test1; jmethod.method_size = 1000; iJIT_NotifyEvent(iJVM_EVENT_TYPE_METHOD_LOAD_FINISHED, (void*)&jmethod); jmethod.method_id = method2.method_id; jmethod.method_name = "TeSt2"; jmethod.method_load_address = test2; iJIT_NotifyEvent(iJVM_EVENT_TYPE_METHOD_LOAD_FINISHED, (void*)&jmethod); for (i=0; i<100; i++) { printf("%dn", i); test1(); test2(); } printf("x=%dn", x); iJIT_NotifyEvent(iJVM_EVENT_TYPE_SHUTDOWN, NULL);
return 0; }
[/bash]
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page